src/SDL_compat.c
changeset 3518 abefdc334970
parent 3500 4b594623401b
child 3581 15eea7a1fa97
equal deleted inserted replaced
3517:e7eec78e4b92 3518:abefdc334970
    62         return namebuf;
    62         return namebuf;
    63     }
    63     }
    64     return NULL;
    64     return NULL;
    65 }
    65 }
    66 
    66 
       
    67 static void
       
    68 SelectVideoDisplay()
       
    69 {
       
    70     const char *variable = SDL_getenv("SDL_VIDEO_FULLSCREEN_DISPLAY");
       
    71     if ( !variable ) {
       
    72         variable = SDL_getenv("SDL_VIDEO_FULLSCREEN_HEAD");
       
    73     }
       
    74     if ( variable ) {
       
    75         SDL_SelectVideoDisplay(SDL_atoi(variable));
       
    76     }
       
    77 }
       
    78 
    67 const SDL_VideoInfo *
    79 const SDL_VideoInfo *
    68 SDL_GetVideoInfo(void)
    80 SDL_GetVideoInfo(void)
    69 {
    81 {
    70     static SDL_VideoInfo info;
    82     static SDL_VideoInfo info;
    71     SDL_DisplayMode mode;
    83     SDL_DisplayMode mode;
       
    84 
       
    85     SelectVideoDisplay();
    72 
    86 
    73     /* Memory leak, compatibility code, who cares? */
    87     /* Memory leak, compatibility code, who cares? */
    74     if (!info.vfmt && SDL_GetDesktopDisplayMode(&mode) == 0) {
    88     if (!info.vfmt && SDL_GetDesktopDisplayMode(&mode) == 0) {
    75         int bpp;
    89         int bpp;
    76         Uint32 Rmask, Gmask, Bmask, Amask;
    90         Uint32 Rmask, Gmask, Bmask, Amask;
    90     int i, actual_bpp = 0;
   104     int i, actual_bpp = 0;
    91 
   105 
    92     if (!SDL_GetVideoDevice()) {
   106     if (!SDL_GetVideoDevice()) {
    93         return 0;
   107         return 0;
    94     }
   108     }
       
   109 
       
   110     SelectVideoDisplay();
    95 
   111 
    96     if (!(flags & SDL_FULLSCREEN)) {
   112     if (!(flags & SDL_FULLSCREEN)) {
    97         SDL_DisplayMode mode;
   113         SDL_DisplayMode mode;
    98         SDL_GetDesktopDisplayMode(&mode);
   114         SDL_GetDesktopDisplayMode(&mode);
    99         return SDL_BITSPERPIXEL(mode.format);
   115         return SDL_BITSPERPIXEL(mode.format);
   121     SDL_Rect **modes;
   137     SDL_Rect **modes;
   122 
   138 
   123     if (!SDL_GetVideoDevice()) {
   139     if (!SDL_GetVideoDevice()) {
   124         return NULL;
   140         return NULL;
   125     }
   141     }
       
   142 
       
   143     SelectVideoDisplay();
   126 
   144 
   127     if (!(flags & SDL_FULLSCREEN)) {
   145     if (!(flags & SDL_FULLSCREEN)) {
   128         return (SDL_Rect **) (-1);
   146         return (SDL_Rect **) (-1);
   129     }
   147     }
   130 
   148 
   493         if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0) {
   511         if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0) {
   494             return NULL;
   512             return NULL;
   495         }
   513         }
   496     }
   514     }
   497 
   515 
       
   516     SelectVideoDisplay();
       
   517 
   498     SDL_GetDesktopDisplayMode(&desktop_mode);
   518     SDL_GetDesktopDisplayMode(&desktop_mode);
   499 
   519 
   500     if (width == 0) {
   520     if (width == 0) {
   501         width = desktop_mode.w;
   521         width = desktop_mode.w;
   502     }
   522     }