Преглед на файлове

Fixed crash if the X11 display doesn't have a resource manager property

Sam Lantinga преди 1 година
родител
ревизия
85f33fe866
променени са 1 файла, в които са добавени 11 реда и са изтрити 9 реда
  1. 11 9
      src/video/x11/SDL_x11modes.c

+ 11 - 9
src/video/x11/SDL_x11modes.c

@@ -190,7 +190,7 @@ static float GetGlobalContentScale(SDL_VideoDevice *_this)
         {
             SDL_VideoData *data = _this->driverdata;
             Display *display = data->display;
-            char * resource_manager;
+            char *resource_manager;
             XrmDatabase db;
             XrmValue value;
             char *type;
@@ -198,16 +198,18 @@ static float GetGlobalContentScale(SDL_VideoDevice *_this)
             X11_XrmInitialize();
 
             resource_manager = X11_XResourceManagerString(display);
-            db = X11_XrmGetStringDatabase(resource_manager);
-
-            // Get the value of Xft.dpi from the Database
-            if (X11_XrmGetResource(db, "Xft.dpi", "String", &type, &value)) {
-                if (value.addr && type && SDL_strcmp(type, "String") == 0) {
-                    int dpi = SDL_atoi(value.addr);
-                    scale_factor  = dpi / 96.0;
+            if (resource_manager) {
+                db = X11_XrmGetStringDatabase(resource_manager);
+
+                // Get the value of Xft.dpi from the Database
+                if (X11_XrmGetResource(db, "Xft.dpi", "String", &type, &value)) {
+                    if (value.addr && type && SDL_strcmp(type, "String") == 0) {
+                        int dpi = SDL_atoi(value.addr);
+                        scale_factor  = dpi / 96.0;
+                    }
                 }
+                X11_XrmDestroyDatabase(db);
             }
-            X11_XrmDestroyDatabase(db);
         }
 
         /* If that failed, try the GDK_SCALE envvar... */