Fixed missing cursor after shadow buffer flip (thanks Jan!)
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40489
This commit is contained in:
parent
aee272f0a5
commit
f580d052f7
1 changed files with 21 additions and 8 deletions
|
@ -966,9 +966,9 @@ void SDL_UpdateRects (SDL_Surface *screen, int numrects, SDL_Rect *rects)
|
||||||
|
|
||||||
if ( screen == SDL_ShadowSurface ) {
|
if ( screen == SDL_ShadowSurface ) {
|
||||||
/* Blit the shadow surface using saved mapping */
|
/* Blit the shadow surface using saved mapping */
|
||||||
SDL_Palette *pal = screen->format->palette;
|
SDL_Palette *pal = screen->format->palette;
|
||||||
SDL_Color *saved_colors = NULL;
|
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 */
|
/* simulated 8bpp, use correct physical palette */
|
||||||
saved_colors = pal->colors;
|
saved_colors = pal->colors;
|
||||||
if ( video->gammacols ) {
|
if ( video->gammacols ) {
|
||||||
|
@ -994,8 +994,9 @@ void SDL_UpdateRects (SDL_Surface *screen, int numrects, SDL_Rect *rects)
|
||||||
SDL_VideoSurface, &rects[i]);
|
SDL_VideoSurface, &rects[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( saved_colors )
|
if ( saved_colors ) {
|
||||||
pal->colors = saved_colors;
|
pal->colors = saved_colors;
|
||||||
|
}
|
||||||
|
|
||||||
/* Fall through to video surface update */
|
/* Fall through to video surface update */
|
||||||
screen = SDL_VideoSurface;
|
screen = SDL_VideoSurface;
|
||||||
|
@ -1027,9 +1028,9 @@ int SDL_Flip(SDL_Surface *screen)
|
||||||
/* Copy the shadow surface to the video surface */
|
/* Copy the shadow surface to the video surface */
|
||||||
if ( screen == SDL_ShadowSurface ) {
|
if ( screen == SDL_ShadowSurface ) {
|
||||||
SDL_Rect rect;
|
SDL_Rect rect;
|
||||||
SDL_Palette *pal = screen->format->palette;
|
SDL_Palette *pal = screen->format->palette;
|
||||||
SDL_Color *saved_colors = NULL;
|
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 */
|
/* simulated 8bpp, use correct physical palette */
|
||||||
saved_colors = pal->colors;
|
saved_colors = pal->colors;
|
||||||
if ( video->gammacols ) {
|
if ( video->gammacols ) {
|
||||||
|
@ -1045,10 +1046,22 @@ int SDL_Flip(SDL_Surface *screen)
|
||||||
rect.y = 0;
|
rect.y = 0;
|
||||||
rect.w = screen->w;
|
rect.w = screen->w;
|
||||||
rect.h = screen->h;
|
rect.h = screen->h;
|
||||||
SDL_LowerBlit(SDL_ShadowSurface,&rect, SDL_VideoSurface,&rect);
|
if ( SHOULD_DRAWCURSOR(SDL_cursorstate) ) {
|
||||||
|
SDL_LockCursor();
|
||||||
if ( saved_colors )
|
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;
|
pal->colors = saved_colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fall through to video surface update */
|
||||||
screen = SDL_VideoSurface;
|
screen = SDL_VideoSurface;
|
||||||
}
|
}
|
||||||
if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
|
if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue