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

This commit is contained in:
Sam Lantinga
2023-05-27 20:42:07 -07:00
parent 76a919d458
commit 85f33fe866

View File

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