[Spice-devel] [spice-gtk 1/4] build-sys: bump gtk requirement 3.12 -> 3.22

Victor Toso victortoso at redhat.com
Fri Jul 20 16:04:09 UTC 2018


From: Victor Toso <me at victortoso.com>

Fedora 28: 3.22.30
Fedora 27: 3.22.26
Fedora 26: 3.22.21
RHEL 7.6: 3.22.30
RHEL 7.5: 3.22.26
RHEL 7.4: 3.22.10
Debian 10: 3.22.30
Debian  9: 3.22.11
Ubuntu 18.04: 3.22.30
Ubuntu 17.10: 3.22.24

Besides cleanup the code, gtk is under heavy development to better
work under Wayland and reducing the code path based on library version
should be helpful as well.

Signed-off-by: Victor Toso <victortoso at redhat.com>
---
 configure.ac            |  4 +--
 src/spice-gtk-session.c | 38 -------------------------
 src/spice-widget-egl.c  |  6 ----
 src/spice-widget.c      | 61 +++--------------------------------------
 4 files changed, 6 insertions(+), 103 deletions(-)

diff --git a/configure.ac b/configure.ac
index 1cc3000..2d90b7b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -130,8 +130,8 @@ AC_ARG_WITH([gtk],
   [with_gtk=3.0])
 
 case "$with_gtk" in
-  3.0) GTK_REQUIRED=3.12
-       GTK_ENCODED_VERSION="GDK_VERSION_3_12"
+  3.0) GTK_REQUIRED=3.22
+       GTK_ENCODED_VERSION="GDK_VERSION_3_22"
        ;;
   no)
        AS_IF([test x$enable_gtk_doc = xyes],
diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c
index 705498a..3d8973e 100644
--- a/src/spice-gtk-session.c
+++ b/src/spice-gtk-session.c
@@ -119,7 +119,6 @@ enum {
 static guint32 get_keyboard_lock_modifiers(void)
 {
     guint32 modifiers = 0;
-#if GTK_CHECK_VERSION(3,18,0)
 /* Ignore GLib's too-new warnings */
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     GdkKeymap *keyboard = gdk_keymap_get_default();
@@ -136,43 +135,6 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
         modifiers |= SPICE_INPUTS_SCROLL_LOCK;
     }
 G_GNUC_END_IGNORE_DEPRECATIONS
-#else
-#ifdef HAVE_X11_XKBLIB_H
-    Display *x_display = NULL;
-    XKeyboardState keyboard_state;
-
-    GdkScreen *screen = gdk_screen_get_default();
-    if (!GDK_IS_X11_DISPLAY(gdk_screen_get_display(screen))) {
-        SPICE_DEBUG("FIXME: gtk backend is not X11");
-        return 0;
-    }
-
-    x_display = GDK_SCREEN_XDISPLAY(screen);
-    XGetKeyboardControl(x_display, &keyboard_state);
-
-    if (keyboard_state.led_mask & 0x01) {
-        modifiers |= SPICE_INPUTS_CAPS_LOCK;
-    }
-    if (keyboard_state.led_mask & 0x02) {
-        modifiers |= SPICE_INPUTS_NUM_LOCK;
-    }
-    if (keyboard_state.led_mask & 0x04) {
-        modifiers |= SPICE_INPUTS_SCROLL_LOCK;
-    }
-#elif defined(G_OS_WIN32)
-    if (GetKeyState(VK_CAPITAL) & 1) {
-        modifiers |= SPICE_INPUTS_CAPS_LOCK;
-    }
-    if (GetKeyState(VK_NUMLOCK) & 1) {
-        modifiers |= SPICE_INPUTS_NUM_LOCK;
-    }
-    if (GetKeyState(VK_SCROLL) & 1) {
-        modifiers |= SPICE_INPUTS_SCROLL_LOCK;
-    }
-#else
-    g_warning("get_keyboard_lock_modifiers not implemented");
-#endif // HAVE_X11_XKBLIB_H
-#endif // GTK_CHECK_VERSION(3,18,0)
     return modifiers;
 }
 
diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c
index 29d2f01..a6805dd 100644
--- a/src/spice-widget-egl.c
+++ b/src/spice-widget-egl.c
@@ -308,7 +308,6 @@ gl_make_current(SpiceDisplay *display, GError **err)
         }
     }
 #endif
-#if GTK_CHECK_VERSION(3,16,0)
 #ifdef GDK_WINDOWING_X11
     else
 #endif
@@ -320,7 +319,6 @@ gl_make_current(SpiceDisplay *display, GError **err)
         gtk_gl_area_make_current(GTK_GL_AREA(area));
         G_GNUC_END_IGNORE_DEPRECATIONS
     }
-#endif
 
     return TRUE;
 }
@@ -600,9 +598,7 @@ void spice_egl_update_display(SpiceDisplay *display)
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 
-#if !GTK_CHECK_VERSION(3,16,0)
     glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (GLeglImageOES)d->egl.image);
-#endif
 
     glDisable(GL_BLEND);
     glGetIntegerv(GL_CURRENT_PROGRAM, &prog);
@@ -686,13 +682,11 @@ gboolean spice_egl_update_scanout(SpiceDisplay *display,
 
     d->egl.scanout = *scanout;
 
-#if GTK_CHECK_VERSION(3,16,0)
     if (!gl_make_current(display, NULL))
         return FALSE;
 
     glBindTexture(GL_TEXTURE_2D, d->egl.tex_id);
     glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (GLeglImageOES)d->egl.image);
-#endif
 
     return TRUE;
 }
diff --git a/src/spice-widget.c b/src/spice-widget.c
index ecd29e9..cb35e72 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -573,7 +573,6 @@ static void grab_notify(SpiceDisplay *display, gboolean was_grabbed)
         release_keys(display);
 }
 
-#if GTK_CHECK_VERSION(3,16,0)
 #if HAVE_EGL
 /* Ignore GLib's too-new warnings */
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -610,7 +609,6 @@ gl_area_realize(GtkGLArea *area, gpointer user_data)
 }
 G_GNUC_END_IGNORE_DEPRECATIONS
 #endif
-#endif
 
 static void
 drawing_area_realize(GtkWidget *area, gpointer user_data)
@@ -645,7 +643,6 @@ static void spice_display_init(SpiceDisplay *display)
     gtk_widget_set_double_buffered(area, true);
     gtk_stack_set_visible_child(d->stack, area);
 
-#if GTK_CHECK_VERSION(3,16,0)
 #if HAVE_EGL
 /* Ignore GLib's too-new warnings */
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -658,7 +655,6 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
                      NULL);
     gtk_stack_add_named(d->stack, area, "gl-area");
 G_GNUC_END_IGNORE_DEPRECATIONS
-#endif
 #endif
     area = gtk_drawing_area_new();
     gtk_stack_add_named(d->stack, area, "gst-area");
@@ -813,7 +809,6 @@ SpiceGrabSequence *spice_display_get_grab_keys(SpiceDisplay *display)
     return d->grabseq;
 }
 
-#if GTK_CHECK_VERSION(3, 20, 0)
 static GdkSeat *spice_display_get_default_seat(SpiceDisplay *display)
 {
     GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(display));
@@ -822,7 +817,6 @@ static GdkSeat *spice_display_get_default_seat(SpiceDisplay *display)
     return gdk_display_get_default_seat(gdk_display);
     G_GNUC_END_IGNORE_DEPRECATIONS
 }
-#endif
 
 /* FIXME: gdk_keyboard_grab/ungrab() is deprecated */
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -869,7 +863,6 @@ static void try_keyboard_grab(SpiceDisplay *display)
                                             GetModuleHandle(NULL), 0);
     g_warn_if_fail(d->keyboard_hook != NULL);
 #endif
-#if GTK_CHECK_VERSION(3, 20, 0)
     status = gdk_seat_grab(spice_display_get_default_seat(display),
                            gtk_widget_get_window(widget),
                            GDK_SEAT_CAPABILITY_KEYBOARD,
@@ -878,10 +871,6 @@ static void try_keyboard_grab(SpiceDisplay *display)
                            NULL,
                            NULL,
                            NULL);
-#else
-    status = gdk_keyboard_grab(gtk_widget_get_window(widget), FALSE,
-                               GDK_CURRENT_TIME);
-#endif
     if (status != GDK_GRAB_SUCCESS) {
         g_warning("keyboard grab failed %u", status);
         d->keyboard_grab_active = false;
@@ -894,14 +883,10 @@ static void try_keyboard_grab(SpiceDisplay *display)
 static void ungrab_keyboard(G_GNUC_UNUSED SpiceDisplay *display)
 {
     G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-#if GTK_CHECK_VERSION(3, 20, 0)
     /* we want to ungrab just the keyboard - it is not possible using gdk_seat_ungrab().
        See also https://bugzilla.gnome.org/show_bug.cgi?id=780133 */
     GdkDevice *keyboard = gdk_seat_get_keyboard(spice_display_get_default_seat(display));
     gdk_device_ungrab(keyboard, GDK_CURRENT_TIME);
-#else
-    gdk_keyboard_ungrab(GDK_CURRENT_TIME);
-#endif
     G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
@@ -1044,7 +1029,6 @@ static gboolean do_pointer_grab(SpiceDisplay *display)
 
     try_keyboard_grab(display);
     G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-#if GTK_CHECK_VERSION(3, 20, 0)
     status = gdk_seat_grab(spice_display_get_default_seat(display),
                            window,
                            GDK_SEAT_CAPABILITY_ALL_POINTING,
@@ -1053,26 +1037,6 @@ static gboolean do_pointer_grab(SpiceDisplay *display)
                            NULL,
                            NULL,
                            NULL);
-#else
-    /*
-     * from gtk-vnc:
-     * For relative mouse to work correctly when grabbed we need to
-     * allow the pointer to move anywhere on the local desktop, so
-     * use NULL for the 'confine_to' argument. Furthermore we need
-     * the coords to be reported to our VNC window, regardless of
-     * what window the pointer is actally over, so use 'FALSE' for
-     * 'owner_events' parameter
-     */
-    status = gdk_pointer_grab(window, FALSE,
-                     GDK_POINTER_MOTION_MASK |
-                     GDK_BUTTON_PRESS_MASK |
-                     GDK_BUTTON_RELEASE_MASK |
-                     GDK_BUTTON_MOTION_MASK |
-                     GDK_SCROLL_MASK,
-                     NULL,
-                     blank,
-                     GDK_CURRENT_TIME);
-#endif
     G_GNUC_END_IGNORE_DEPRECATIONS
     grab_successful = (status == GDK_GRAB_SUCCESS);
     if (!grab_successful) {
@@ -1176,14 +1140,10 @@ static void mouse_wrap(SpiceDisplay *display, GdkEventMotion *motion)
 static void ungrab_pointer(G_GNUC_UNUSED SpiceDisplay *display)
 {
     G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-#if GTK_CHECK_VERSION(3, 20, 0)
     /* we want to ungrab just the pointer - it is not possible using gdk_seat_ungrab().
        See also https://bugzilla.gnome.org/show_bug.cgi?id=780133 */
     GdkDevice *pointer = gdk_seat_get_pointer(spice_display_get_default_seat(display));
     gdk_device_ungrab(pointer, GDK_CURRENT_TIME);
-#else
-    gdk_pointer_ungrab(GDK_CURRENT_TIME);
-#endif
     G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
@@ -1624,14 +1584,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
     if (!d->inputs)
         return true;
 
-    if (key->keyval == GDK_KEY_Pause
-#if defined(G_OS_WIN32) && !GTK_CHECK_VERSION(3, 22, 0)
-        /* Bug https://bugzilla.gnome.org/show_bug.cgi?id=769214
-         * Fixed in 3.22 with 125ef35
-         */
-        || key->hardware_keycode == VK_PAUSE
-#endif
-        ) {
+    if (key->keyval == GDK_KEY_Pause) {
         return send_pause(display, key->type);
     }
     if (!scancode)
@@ -2450,11 +2403,7 @@ static GdkDevice *spice_gdk_window_get_pointing_device(GdkWindow *window)
 {
     GdkDisplay *gdk_display = gdk_window_get_display(window);
     G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-#if GTK_CHECK_VERSION(3, 20, 0)
     return gdk_seat_get_pointer(gdk_display_get_default_seat(gdk_display));
-#else
-    return gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_display));
-#endif
     G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
@@ -2947,6 +2896,7 @@ static void gl_draw(SpiceDisplay *display,
                     guint32 x, guint32 y, guint32 w, guint32 h)
 {
     SpiceDisplayPrivate *d = display->priv;
+    GtkWidget *gl;
 
     DISPLAY_DEBUG(display, "%s",  __FUNCTION__);
 
@@ -2958,8 +2908,7 @@ static void gl_draw(SpiceDisplay *display,
         return;
     }
 
-#if GTK_CHECK_VERSION(3,16,0)
-    GtkWidget *gl = gtk_stack_get_child_by_name(d->stack, "gl-area");
+    gl = gtk_stack_get_child_by_name(d->stack, "gl-area");
 
     if (gtk_stack_get_visible_child(d->stack) == gl) {
         /* Ignore GLib's too-new warnings */
@@ -2967,9 +2916,7 @@ static void gl_draw(SpiceDisplay *display,
         gtk_gl_area_queue_render(GTK_GL_AREA(gl));
         G_GNUC_END_IGNORE_DEPRECATIONS
         d->egl.call_draw_done = TRUE;
-    } else
-#endif
-    {
+    } else {
         spice_egl_update_display(display);
         spice_display_channel_gl_draw_done(d->display);
     }
-- 
2.17.1



More information about the Spice-devel mailing list