# HG changeset patch # User David Gow # Date 1372167396 -28800 # Node ID dbc813eb3bf4fe5a8aeb20bac30b211142cff6df # Parent c7346a060a7db90ec479af17de3cd6f323bf9a7c Remove full-desktop Xinerama mode when using XRandR diff -r c7346a060a7d -r dbc813eb3bf4 src/video/x11/SDL_x11modes.c --- a/src/video/x11/SDL_x11modes.c Tue Jun 18 00:50:35 2013 -0700 +++ b/src/video/x11/SDL_x11modes.c Tue Jun 25 21:36:36 2013 +0800 @@ -689,9 +689,11 @@ #if SDL_VIDEO_DRIVER_X11_XINERAMA if (data->use_xinerama) { - /* Add the full (both screens combined) xinerama mode only on the display that starts at 0,0 */ - if (!data->xinerama_info.x_org && !data->xinerama_info.y_org && + if (data->use_vidmode && !data->xinerama_info.x_org && !data->xinerama_info.y_org && (screen_w > data->xinerama_info.width || screen_h > data->xinerama_info.height)) { + /* Add the full (both screens combined) xinerama mode only on the display that starts at 0,0 + * if we're using vidmode. + */ mode.w = screen_w; mode.h = screen_h; mode.refresh_rate = 0; @@ -702,6 +704,20 @@ mode.driverdata = modedata; SDL_AddDisplayMode(sdl_display, &mode); } + else + { + /* Add the current mode of each monitor otherwise */ + mode.w = data->xinerama_info.width; + mode.h = data->xinerama_info.height; + mode.refresh_rate = 0; + modedata = (SDL_DisplayModeData *) SDL_calloc(1, sizeof(SDL_DisplayModeData)); + if (modedata) { + *modedata = *(SDL_DisplayModeData *)sdl_display->desktop_mode.driverdata; + } + mode.driverdata = modedata; + SDL_AddDisplayMode(sdl_display, &mode); + } + } #endif /* SDL_VIDEO_DRIVER_X11_XINERAMA */