Browse Source

wayland: Clear driverdata before calling ResetDisplayModes

Ethan Lee 3 years ago
parent
commit
72e53e4b87
1 changed files with 9 additions and 0 deletions
  1. 9 0
      src/video/wayland/SDL_waylandvideo.c

+ 9 - 0
src/video/wayland/SDL_waylandvideo.c

@@ -302,8 +302,17 @@ display_handle_geometry(void *data,
 
 {
     SDL_WaylandOutputData *driverdata = data;
+    SDL_VideoDisplay *display;
+    int i;
 
     if (driverdata->done) {
+        /* Clear the wl_output ref so Reset doesn't free it */
+        display = SDL_GetDisplay(driverdata->index);
+        for (i = 0; i < display->num_display_modes; i += 1) {
+            display->display_modes[i].driverdata = NULL;
+        }
+
+        /* Okay, now it's safe to reset */
         SDL_ResetDisplayModes(driverdata->index);
 
         /* The display has officially started over. */