src/video/SDL_video.c
changeset 488 0a111805b53a
parent 460 a888b3ae31ff
child 509 dad72daf44b3
equal deleted inserted replaced
487:414d77a36716 488:0a111805b53a
   964 	SDL_VideoDevice *video = current_video;
   964 	SDL_VideoDevice *video = current_video;
   965 	SDL_VideoDevice *this = current_video;
   965 	SDL_VideoDevice *this = current_video;
   966 
   966 
   967 	if ( screen == SDL_ShadowSurface ) {
   967 	if ( screen == SDL_ShadowSurface ) {
   968 		/* Blit the shadow surface using saved mapping */
   968 		/* Blit the shadow surface using saved mapping */
   969 	        SDL_Palette *pal = screen->format->palette;
   969 		SDL_Palette *pal = screen->format->palette;
   970 		SDL_Color *saved_colors = NULL;
   970 		SDL_Color *saved_colors = NULL;
   971 	        if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) {
   971 		if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) {
   972 			/* simulated 8bpp, use correct physical palette */
   972 			/* simulated 8bpp, use correct physical palette */
   973 			saved_colors = pal->colors;
   973 			saved_colors = pal->colors;
   974 			if ( video->gammacols ) {
   974 			if ( video->gammacols ) {
   975 				/* gamma-corrected palette */
   975 				/* gamma-corrected palette */
   976 				pal->colors = video->gammacols;
   976 				pal->colors = video->gammacols;
   992 			for ( i=0; i<numrects; ++i ) {
   992 			for ( i=0; i<numrects; ++i ) {
   993 				SDL_LowerBlit(SDL_ShadowSurface, &rects[i], 
   993 				SDL_LowerBlit(SDL_ShadowSurface, &rects[i], 
   994 						SDL_VideoSurface, &rects[i]);
   994 						SDL_VideoSurface, &rects[i]);
   995 			}
   995 			}
   996 		}
   996 		}
   997 		if ( saved_colors )
   997 		if ( saved_colors ) {
   998 			pal->colors = saved_colors;
   998 			pal->colors = saved_colors;
       
   999 		}
   999 
  1000 
  1000 		/* Fall through to video surface update */
  1001 		/* Fall through to video surface update */
  1001 		screen = SDL_VideoSurface;
  1002 		screen = SDL_VideoSurface;
  1002 	}
  1003 	}
  1003 	if ( screen == SDL_VideoSurface ) {
  1004 	if ( screen == SDL_VideoSurface ) {
  1025 {
  1026 {
  1026 	SDL_VideoDevice *video = current_video;
  1027 	SDL_VideoDevice *video = current_video;
  1027 	/* Copy the shadow surface to the video surface */
  1028 	/* Copy the shadow surface to the video surface */
  1028 	if ( screen == SDL_ShadowSurface ) {
  1029 	if ( screen == SDL_ShadowSurface ) {
  1029 		SDL_Rect rect;
  1030 		SDL_Rect rect;
  1030 	        SDL_Palette *pal = screen->format->palette;
  1031 		SDL_Palette *pal = screen->format->palette;
  1031 		SDL_Color *saved_colors = NULL;
  1032 		SDL_Color *saved_colors = NULL;
  1032 	        if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) {
  1033 		if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) {
  1033 			/* simulated 8bpp, use correct physical palette */
  1034 			/* simulated 8bpp, use correct physical palette */
  1034 			saved_colors = pal->colors;
  1035 			saved_colors = pal->colors;
  1035 			if ( video->gammacols ) {
  1036 			if ( video->gammacols ) {
  1036 				/* gamma-corrected palette */
  1037 				/* gamma-corrected palette */
  1037 				pal->colors = video->gammacols;
  1038 				pal->colors = video->gammacols;
  1043 
  1044 
  1044 		rect.x = 0;
  1045 		rect.x = 0;
  1045 		rect.y = 0;
  1046 		rect.y = 0;
  1046 		rect.w = screen->w;
  1047 		rect.w = screen->w;
  1047 		rect.h = screen->h;
  1048 		rect.h = screen->h;
  1048 		SDL_LowerBlit(SDL_ShadowSurface,&rect, SDL_VideoSurface,&rect);
  1049 		if ( SHOULD_DRAWCURSOR(SDL_cursorstate) ) {
  1049 
  1050 			SDL_LockCursor();
  1050 		if ( saved_colors )
  1051 			SDL_DrawCursor(SDL_ShadowSurface);
       
  1052 			SDL_LowerBlit(SDL_ShadowSurface, &rect,
       
  1053 					SDL_VideoSurface, &rect);
       
  1054 			SDL_EraseCursor(SDL_ShadowSurface);
       
  1055 			SDL_UnlockCursor();
       
  1056 		} else {
       
  1057 			SDL_LowerBlit(SDL_ShadowSurface, &rect,
       
  1058 					SDL_VideoSurface, &rect);
       
  1059 		}
       
  1060 		if ( saved_colors ) {
  1051 			pal->colors = saved_colors;
  1061 			pal->colors = saved_colors;
       
  1062 		}
       
  1063 
       
  1064 		/* Fall through to video surface update */
  1052 		screen = SDL_VideoSurface;
  1065 		screen = SDL_VideoSurface;
  1053 	}
  1066 	}
  1054 	if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
  1067 	if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
  1055 		SDL_VideoDevice *this  = current_video;
  1068 		SDL_VideoDevice *this  = current_video;
  1056 		return(video->FlipHWSurface(this, SDL_VideoSurface));
  1069 		return(video->FlipHWSurface(this, SDL_VideoSurface));