Forráskód Böngészése

Fixed crash when disconnecting external display on iOS

Sam Lantinga 9 hónapja
szülő
commit
753f3f8609
2 módosított fájl, 5 hozzáadás és 4 törlés
  1. 1 1
      src/video/uikit/SDL_uikitmodes.h
  2. 4 3
      src/video/uikit/SDL_uikitmodes.m

+ 1 - 1
src/video/uikit/SDL_uikitmodes.h

@@ -48,7 +48,7 @@ extern SDL_bool UIKit_IsDisplayLandscape(UIScreen *uiscreen);
 extern int UIKit_InitModes(SDL_VideoDevice *_this);
 #ifndef SDL_PLATFORM_VISIONOS
 extern int UIKit_AddDisplay(UIScreen *uiscreen, SDL_bool send_event);
-extern void UIKit_DelDisplay(UIScreen *uiscreen);
+extern void UIKit_DelDisplay(UIScreen *uiscreen, SDL_bool send_event);
 #endif
 extern int UIKit_GetDisplayModes(SDL_VideoDevice *_this, SDL_VideoDisplay *display);
 extern int UIKit_SetDisplayMode(SDL_VideoDevice *_this, SDL_VideoDisplay *display, SDL_DisplayMode *mode);

+ 4 - 3
src/video/uikit/SDL_uikitmodes.m

@@ -92,7 +92,7 @@
 + (void)screenDisconnected:(NSNotification *)notification
 {
     UIScreen *uiscreen = [notification object];
-    UIKit_DelDisplay(uiscreen);
+    UIKit_DelDisplay(uiscreen, SDL_TRUE);
 }
 
 @end
@@ -308,7 +308,7 @@ int UIKit_AddDisplay(SDL_bool send_event){
 
 #ifndef SDL_PLATFORM_VISIONOS
 
-void UIKit_DelDisplay(UIScreen *uiscreen)
+void UIKit_DelDisplay(UIScreen *uiscreen, SDL_bool send_event)
 {
     SDL_DisplayID *displays;
     int i;
@@ -321,7 +321,8 @@ void UIKit_DelDisplay(UIScreen *uiscreen)
 
             if (data && data.uiscreen == uiscreen) {
                 CFRelease(display->driverdata);
-                SDL_DelVideoDisplay(displays[i], SDL_FALSE);
+                display->driverdata = NULL;
+                SDL_DelVideoDisplay(displays[i], send_event);
                 break;
             }
         }