Fixed crash when creating a dummy window on Mac OS X
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index cc8e8ef..18d756a 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -1164,35 +1164,38 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
CHECK_WINDOW_MAGIC(window,-1);
/* if we are in the process of hiding don't go back to fullscreen */
- if ( window->is_hiding && fullscreen )
+ if (window->is_hiding && fullscreen) {
return 0;
+ }
#ifdef __MACOSX__
/* if the window is going away and no resolution change is necessary,
- do nothing, or else we may trigger an ugly double-transition
+ do nothing, or else we may trigger an ugly double-transition
*/
if (window->is_destroying && (window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP)
return 0;
- /* If we're switching between a fullscreen Space and "normal" fullscreen, we need to get back to normal first. */
- if (fullscreen && ((window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP) && ((window->flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN)) {
- if (!Cocoa_SetWindowFullscreenSpace(window, SDL_FALSE)) {
- return -1;
- }
- } else if (fullscreen && ((window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN) && ((window->flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP)) {
- display = SDL_GetDisplayForWindow(window);
- SDL_SetDisplayModeForDisplay(display, NULL);
- if (_this->SetWindowFullscreen) {
- _this->SetWindowFullscreen(_this, window, display, SDL_FALSE);
+ if (SDL_strcmp(_this->name, "dummy") != 0) {
+ /* If we're switching between a fullscreen Space and "normal" fullscreen, we need to get back to normal first. */
+ if (fullscreen && ((window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP) && ((window->flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN)) {
+ if (!Cocoa_SetWindowFullscreenSpace(window, SDL_FALSE)) {
+ return -1;
+ }
+ } else if (fullscreen && ((window->last_fullscreen_flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN) && ((window->flags & FULLSCREEN_MASK) == SDL_WINDOW_FULLSCREEN_DESKTOP)) {
+ display = SDL_GetDisplayForWindow(window);
+ SDL_SetDisplayModeForDisplay(display, NULL);
+ if (_this->SetWindowFullscreen) {
+ _this->SetWindowFullscreen(_this, window, display, SDL_FALSE);
+ }
}
- }
- if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) {
- if (Cocoa_IsWindowInFullscreenSpace(window) != fullscreen) {
- return -1;
+ if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) {
+ if (Cocoa_IsWindowInFullscreenSpace(window) != fullscreen) {
+ return -1;
+ }
+ window->last_fullscreen_flags = window->flags;
+ return 0;
}
- window->last_fullscreen_flags = window->flags;
- return 0;
}
#elif __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10)
/* HACK: WinRT 8.x apps can't choose whether or not they are fullscreen
@@ -1345,7 +1348,7 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags)
}
}
- if ( (((flags & SDL_WINDOW_UTILITY) != 0) + ((flags & SDL_WINDOW_TOOLTIP) != 0) + ((flags & SDL_WINDOW_POPUP_MENU) != 0)) > 1 ) {
+ if ((((flags & SDL_WINDOW_UTILITY) != 0) + ((flags & SDL_WINDOW_TOOLTIP) != 0) + ((flags & SDL_WINDOW_POPUP_MENU) != 0)) > 1) {
SDL_SetError("Conflicting window flags specified");
return NULL;
}
@@ -3790,7 +3793,7 @@ SDL_SetWindowHitTest(SDL_Window * window, SDL_HitTest callback, void *userdata)
float SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches)
{
float den2 = hinches * hinches + vinches * vinches;
- if ( den2 <= 0.0f ) {
+ if (den2 <= 0.0f) {
return 0.0f;
}