Ref #539: Run time check on GDK display backend
authorColin Clark <colin.clark@cclark.uk>
Thu, 10 Dec 2020 16:08:01 +0000 (16:08 +0000)
committerColin Clark <colin.clark@cclark.uk>
Thu, 10 Dec 2020 16:08:01 +0000 (16:08 +0000)
https://github.com/BestImageViewer/geeqie/issues/539

Include a run time check to determine which backend is being used.
There was a seg. fault when Wayland was being used.

src/layout.c

index ab62348..2899d54 100644 (file)
@@ -2520,23 +2520,28 @@ gboolean release_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
        return defined_mouse_buttons(widget, event, data);
 }
 
-#ifdef GDK_WINDOWING_X11
-#if GTK_CHECK_VERSION(3,10,0)
 static gboolean move_window_to_workspace_cb(gpointer data)
 {
+#ifdef GDK_WINDOWING_X11
+#if GTK_CHECK_VERSION(3,10,0)
        LayoutWindow *lw = data;
        GdkWindow *window;
+       GdkDisplay *display;
+
+       display = gdk_display_get_default();
 
-       if (lw->options.workspace != -1)
+       if (GDK_IS_X11_DISPLAY(display))
                {
-               window = gtk_widget_get_window(GTK_WIDGET(lw->window));
-               gdk_x11_window_move_to_desktop(window, lw->options.workspace);
+               if (lw->options.workspace != -1)
+                       {
+                       window = gtk_widget_get_window(GTK_WIDGET(lw->window));
+                       gdk_x11_window_move_to_desktop(window, lw->options.workspace);
+                       }
                }
-
-       return FALSE;
-}
 #endif
 #endif
+       return FALSE;
+}
 
 LayoutWindow *layout_new_with_geometry(FileData *dir_fd, LayoutOptions *lop,
                                       const gchar *geometry)
@@ -2612,11 +2617,8 @@ LayoutWindow *layout_new_with_geometry(FileData *dir_fd, LayoutOptions *lop,
                gtk_window_move(GTK_WINDOW(lw->window), lw->options.main_window.x, lw->options.main_window.y);
                if (lw->options.main_window.maximized) gtk_window_maximize(GTK_WINDOW(lw->window));
 //                     }
-#ifdef GDK_WINDOWING_X11
-#if GTK_CHECK_VERSION(3,10,0)
+
                g_idle_add(move_window_to_workspace_cb, lw);
-#endif
-#endif
                }
        else
                {