src/video/dga/SDL_dgavideo.c
changeset 1784 45669d4efd02
parent 1575 3ba88cb7eb1b
child 1785 dcec47a019e2
equal deleted inserted replaced
1783:c546353b1ad4 1784:45669d4efd02
    38 #include "SDL_dgamouse_c.h"
    38 #include "SDL_dgamouse_c.h"
    39 #include "SDL_dgaevents_c.h"
    39 #include "SDL_dgaevents_c.h"
    40 
    40 
    41 /* get function pointers... */
    41 /* get function pointers... */
    42 #include "../x11/SDL_x11dyn.h"
    42 #include "../x11/SDL_x11dyn.h"
       
    43 
       
    44 /* Heheh we're using X11 event code */
       
    45 extern void X11_SaveScreenSaver(Display *display, int *saved_timeout, BOOL *dpms);
       
    46 extern void X11_DisableScreenSaver(Display *display);
       
    47 extern void X11_RestoreScreenSaver(Display *display, int saved_timeout, BOOL dpms);
    43 
    48 
    44 /* Initialization/Query functions */
    49 /* Initialization/Query functions */
    45 static int DGA_VideoInit(_THIS, SDL_PixelFormat *vformat);
    50 static int DGA_VideoInit(_THIS, SDL_PixelFormat *vformat);
    46 static SDL_Rect **DGA_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);
    51 static SDL_Rect **DGA_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);
    47 static SDL_Surface *DGA_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags);
    52 static SDL_Surface *DGA_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags);
   385 		SDL_SetError("Unable to map the video memory");
   390 		SDL_SetError("Unable to map the video memory");
   386 		XCloseDisplay(DGA_Display);
   391 		XCloseDisplay(DGA_Display);
   387 		return(-1);
   392 		return(-1);
   388 	}
   393 	}
   389 
   394 
       
   395 	/* Save DPMS and screensaver settings */
       
   396 	X11_SaveScreenSaver(DGA_Display, &screensaver_timeout, &dpms_enabled);
       
   397 	X11_DisableScreenSaver(DGA_Display);
       
   398 
   390 	/* Query for the list of available video modes */
   399 	/* Query for the list of available video modes */
   391 	modes = SDL_NAME(XDGAQueryModes)(DGA_Display, DGA_Screen, &num_modes);
   400 	modes = SDL_NAME(XDGAQueryModes)(DGA_Display, DGA_Screen, &num_modes);
   392 	SDL_qsort(modes, num_modes, sizeof *modes, cmpmodes);
   401 	SDL_qsort(modes, num_modes, sizeof *modes, cmpmodes);
   393 	for ( i=0; i<num_modes; ++i ) {
   402 	for ( i=0; i<num_modes; ++i ) {
   394 #ifdef DGA_DEBUG
   403 #ifdef DGA_DEBUG
  1046 			SDL_DestroyMutex(event_lock);
  1055 			SDL_DestroyMutex(event_lock);
  1047 			event_lock = NULL;
  1056 			event_lock = NULL;
  1048 		}
  1057 		}
  1049 #endif /* LOCK_DGA_DISPLAY */
  1058 #endif /* LOCK_DGA_DISPLAY */
  1050 
  1059 
  1051 
       
  1052 		/* Clean up defined video modes */
  1060 		/* Clean up defined video modes */
  1053 		for ( i=0; i<NUM_MODELISTS; ++i ) {
  1061 		for ( i=0; i<NUM_MODELISTS; ++i ) {
  1054 			if ( SDL_modelist[i] != NULL ) {
  1062 			if ( SDL_modelist[i] != NULL ) {
  1055 				for ( j=0; SDL_modelist[i][j]; ++j ) {
  1063 				for ( j=0; SDL_modelist[i][j]; ++j ) {
  1056 					SDL_free(SDL_modelist[i][j]);
  1064 					SDL_free(SDL_modelist[i][j]);
  1061 		}
  1069 		}
  1062 
  1070 
  1063 		/* Clean up the memory bucket list */
  1071 		/* Clean up the memory bucket list */
  1064 		DGA_FreeHWSurfaces(this);
  1072 		DGA_FreeHWSurfaces(this);
  1065 
  1073 
       
  1074 		/* Restore DPMS and screensaver settings */
       
  1075 		X11_RestoreScreenSaver(DGA_Display, screensaver_timeout, dpms_enabled);
       
  1076 
  1066 		/* Close up the display */
  1077 		/* Close up the display */
  1067 		XCloseDisplay(DGA_Display);
  1078 		XCloseDisplay(DGA_Display);
  1068 	}
  1079 	}
  1069 }
  1080 }