more SDL fullscreen state tracking fixes, don't update fullscreen flags on failure to change fullscreen state

This commit is contained in:
Sam Lantinga 2015-11-09 08:54:56 -08:00
parent 792354d6f0
commit eeddb7c534
2 changed files with 13 additions and 1 deletions

View File

@ -1980,6 +1980,7 @@ SDL_RestoreWindow(SDL_Window * window)
int int
SDL_SetWindowFullscreen(SDL_Window * window, Uint32 flags) SDL_SetWindowFullscreen(SDL_Window * window, Uint32 flags)
{ {
Uint32 oldflags;
CHECK_WINDOW_MAGIC(window, -1); CHECK_WINDOW_MAGIC(window, -1);
flags &= FULLSCREEN_MASK; flags &= FULLSCREEN_MASK;
@ -1989,10 +1990,17 @@ SDL_SetWindowFullscreen(SDL_Window * window, Uint32 flags)
} }
/* clear the previous flags and OR in the new ones */ /* clear the previous flags and OR in the new ones */
oldflags = window->flags & FULLSCREEN_MASK;
window->flags &= ~FULLSCREEN_MASK; window->flags &= ~FULLSCREEN_MASK;
window->flags |= flags; window->flags |= flags;
return SDL_UpdateFullscreenMode(window, FULLSCREEN_VISIBLE(window)); if (SDL_UpdateFullscreenMode(window, FULLSCREEN_VISIBLE(window)) == 0) {
return 0;
}
window->flags &= ~FULLSCREEN_MASK;
window->flags |= oldflags;
return -1;
} }
static SDL_Surface * static SDL_Surface *

View File

@ -646,6 +646,8 @@ SetWindowStyle(SDL_Window * window, unsigned int style)
isFullscreenSpace = NO; isFullscreenSpace = NO;
inFullscreenTransition = NO; inFullscreenTransition = NO;
[self windowDidExitFullScreen:nil];
} }
- (void)windowDidEnterFullScreen:(NSNotification *)aNotification - (void)windowDidEnterFullScreen:(NSNotification *)aNotification
@ -690,6 +692,8 @@ SetWindowStyle(SDL_Window * window, unsigned int style)
isFullscreenSpace = YES; isFullscreenSpace = YES;
inFullscreenTransition = NO; inFullscreenTransition = NO;
[self windowDidEnterFullScreen:nil];
} }
- (void)windowDidExitFullScreen:(NSNotification *)aNotification - (void)windowDidExitFullScreen:(NSNotification *)aNotification