2
0
luboslenco 3 долоо хоног өмнө
parent
commit
81567a584e

+ 3 - 0
base/sources/backends/linux_system.c

@@ -353,6 +353,7 @@ bool iron_x11_init() {
 
 	xlib.XOpenDisplay = dlsym(x11_ctx.libs.X11, "XOpenDisplay");
 	xlib.XCloseDisplay = dlsym(x11_ctx.libs.X11, "XCloseDisplay");
+	xlib.XInitThreads = dlsym(x11_ctx.libs.X11, "XInitThreads");
 	xlib.XSetErrorHandler = dlsym(x11_ctx.libs.X11, "XSetErrorHandler");
 	xlib.XGetErrorText = dlsym(x11_ctx.libs.X11, "XGetErrorText");
 	xlib.XInternAtoms = dlsym(x11_ctx.libs.X11, "XInternAtoms");
@@ -408,6 +409,8 @@ bool iron_x11_init() {
 	xlib.XRRFreeCrtcInfo = dlsym(x11_ctx.libs.Xrandr, "XRRFreeCrtcInfo");
 	xlib.XRRFreeScreenResources = dlsym(x11_ctx.libs.Xrandr, "XRRFreeScreenResources");
 
+	xlib.XInitThreads(); // Fixes random ubuntu22 crash
+
 	x11_ctx.display = xlib.XOpenDisplay(NULL);
 	if (!x11_ctx.display) {
 		return false;

+ 1 - 0
base/sources/backends/linux_system.h

@@ -82,6 +82,7 @@ struct iron_x11_procs {
 	Display *(*XOpenDisplay)(const char *name);
 	Status (*XInternAtoms)(Display *display, char **names, int count, Bool only_if_exists, Atom *atoms_return);
 	int (*XCloseDisplay)(Display *display);
+	int (*XInitThreads)(void);
 	XErrorHandler (*XSetErrorHandler)(XErrorHandler handler);
 	int (*XGetErrorText)(Display *, int, char *, int);
 	int (*XPending)(Display *display);