瀏覽代碼

SDL_SetWindowPosition respects display num for SDL_WINDOWPOS_CENTERED_DISPLAY.

This allows for this kind of code in an application:

int monitorID = 1;  // the second monitor!
SDL_SetWindowPosition(sdlWin,
                      SDL_WINDOWPOS_CENTERED_DISPLAY(monitorID),
                      SDL_WINDOWPOS_CENTERED_DISPLAY(monitorID));

Fixes Bugzilla #2849.
Edward Rudd 10 年之前
父節點
當前提交
635a369c9d
共有 1 個文件被更改,包括 4 次插入3 次删除
  1. 4 3
      src/video/SDL_video.c

+ 4 - 3
src/video/SDL_video.c

@@ -1607,13 +1607,14 @@ SDL_SetWindowPosition(SDL_Window * window, int x, int y)
     CHECK_WINDOW_MAGIC(window,);
 
     if (SDL_WINDOWPOS_ISCENTERED(x) || SDL_WINDOWPOS_ISCENTERED(y)) {
-        SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
-        int displayIndex;
+        int displayIndex = (x & 0xFFFF);
         SDL_Rect bounds;
+        if (displayIndex > _this->num_displays) {
+            displayIndex = 0;
+        }
 
         SDL_zero(bounds);
 
-        displayIndex = SDL_GetIndexOfDisplay(display);
         SDL_GetDisplayBounds(displayIndex, &bounds);
         if (SDL_WINDOWPOS_ISCENTERED(x)) {
             x = bounds.x + (bounds.w - window->w) / 2;