# HG changeset patch # User Sam Lantinga # Date 1031541739 0 # Node ID 0a111805b53a04530cea79d12e620ee825564808 # Parent 414d77a36716daf64de2ca35c7000c50511f4ef5 Fixed missing cursor after shadow buffer flip (thanks Jan!) diff -r 414d77a36716 -r 0a111805b53a src/video/SDL_video.c --- a/src/video/SDL_video.c Mon Sep 02 21:42:15 2002 +0000 +++ b/src/video/SDL_video.c Mon Sep 09 03:22:19 2002 +0000 @@ -966,9 +966,9 @@ if ( screen == SDL_ShadowSurface ) { /* Blit the shadow surface using saved mapping */ - SDL_Palette *pal = screen->format->palette; + SDL_Palette *pal = screen->format->palette; SDL_Color *saved_colors = NULL; - if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) { + if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) { /* simulated 8bpp, use correct physical palette */ saved_colors = pal->colors; if ( video->gammacols ) { @@ -994,8 +994,9 @@ SDL_VideoSurface, &rects[i]); } } - if ( saved_colors ) + if ( saved_colors ) { pal->colors = saved_colors; + } /* Fall through to video surface update */ screen = SDL_VideoSurface; @@ -1027,9 +1028,9 @@ /* Copy the shadow surface to the video surface */ if ( screen == SDL_ShadowSurface ) { SDL_Rect rect; - SDL_Palette *pal = screen->format->palette; + SDL_Palette *pal = screen->format->palette; SDL_Color *saved_colors = NULL; - if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) { + if ( pal && !(SDL_VideoSurface->flags & SDL_HWPALETTE) ) { /* simulated 8bpp, use correct physical palette */ saved_colors = pal->colors; if ( video->gammacols ) { @@ -1045,10 +1046,22 @@ rect.y = 0; rect.w = screen->w; rect.h = screen->h; - SDL_LowerBlit(SDL_ShadowSurface,&rect, SDL_VideoSurface,&rect); + if ( SHOULD_DRAWCURSOR(SDL_cursorstate) ) { + SDL_LockCursor(); + SDL_DrawCursor(SDL_ShadowSurface); + SDL_LowerBlit(SDL_ShadowSurface, &rect, + SDL_VideoSurface, &rect); + SDL_EraseCursor(SDL_ShadowSurface); + SDL_UnlockCursor(); + } else { + SDL_LowerBlit(SDL_ShadowSurface, &rect, + SDL_VideoSurface, &rect); + } + if ( saved_colors ) { + pal->colors = saved_colors; + } - if ( saved_colors ) - pal->colors = saved_colors; + /* Fall through to video surface update */ screen = SDL_VideoSurface; } if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {