# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1613546980 0 # Node ID 610c66b17fbc69a7f682c264adfd0aa3fc16be46 # Parent 4b04943319c592faafc54d3b4b08c0119f92e574 GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks. Apparently you can build with multiple backends, so this prevents them being called when not using the X11 backend. Functions will do nothing on non-X11 backends currently. diff -r 4b04943319c5 -r 610c66b17fbc gtk4/dw.c --- a/gtk4/dw.c Wed Feb 17 06:21:27 2021 +0000 +++ b/gtk4/dw.c Wed Feb 17 07:29:40 2021 +0000 @@ -1708,8 +1708,9 @@ DW_FUNCTION_RESTORE_PARAM1(handle, HWND) { int retval = DW_ERROR_UNKNOWN; - - if(handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -1740,8 +1741,9 @@ DW_FUNCTION_RESTORE_PARAM1(handle, HWND) { int retval = DW_ERROR_UNKNOWN; - - if(handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -2343,7 +2345,9 @@ DW_FUNCTION_NO_RETURN(dw_window_capture) DW_FUNCTION_RESTORE_PARAM1(handle, HWND) { - if(_DWXGrabbedDisplay == NULL && handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(_DWXGrabbedDisplay == NULL && handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -2372,6 +2376,7 @@ DW_FUNCTION_ADD_PARAM DW_FUNCTION_NO_RETURN(dw_window_release) { + /* Don't need X11 test, _DWXGrabbedDisplay won't get set unless X11 */ if(_DWXGrabbedDisplay) { XUngrabPointer(_DWXGrabbedDisplay, CurrentTime); @@ -3119,7 +3124,7 @@ { GdkDisplay *display = gdk_display_get_default(); - if(display) + if(display && GDK_IS_X11_DISPLAY(display)) { Display *xdisplay = gdk_x11_display_get_xdisplay(display); Window xrootwin = gdk_x11_display_get_xrootwindow(display); @@ -8603,7 +8608,9 @@ DW_FUNCTION_NO_RETURN(dw_window_set_pos) DW_FUNCTION_RESTORE_PARAM3(handle, HWND, x, long, y, long) { - if(handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -8670,24 +8677,19 @@ #ifdef GDK_WINDOWING_X11 { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); - - if(surface) + GdkDisplay *display = gdk_display_get_default(); + + if(surface && display && GDK_IS_X11_DISPLAY(display)) { - GdkDisplay *display = gdk_display_get_default(); XWindowAttributes xwa; int ix = 0, iy = 0; - - if(display) - { - Window child, xrootwin = gdk_x11_display_get_xrootwindow(display); - - XTranslateCoordinates(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), - xrootwin, 0, 0, &ix, &iy, &child); - - } - + Window child, xrootwin = gdk_x11_display_get_xrootwindow(display); + + XTranslateCoordinates(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), + xrootwin, 0, 0, &ix, &iy, &child); XGetWindowAttributes(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), &xwa); + if(x) *x = (long)(ix - xwa.x); if(y)