From 14956ce6cca73cea67d63394ea840b0c59f3c43b Mon Sep 17 00:00:00 2001 From: Victor Toso Date: Thu, 16 May 2019 11:06:25 +0200 Subject: [PATCH] Update to v0.37 --- 0001-meson-improve-gtk-doc-build.patch | 73 --------- ...ninja-dist-and-building-from-tarball.patch | 54 ------- ...ce-widget-Use-GdkSeat-API-on-Wayland.patch | 138 ------------------ ...grab-mouse-on-leave-event-on-Wayland.patch | 50 ------- ...n-ensure-correct-build-order-of-VAPI.patch | 32 ---- sources | 2 +- spice-gtk.spec | 21 ++- 7 files changed, 10 insertions(+), 360 deletions(-) delete mode 100644 0001-meson-improve-gtk-doc-build.patch delete mode 100644 0002-meson-fix-ninja-dist-and-building-from-tarball.patch delete mode 100644 0003-spice-widget-Use-GdkSeat-API-on-Wayland.patch delete mode 100644 0004-spice-widget-Ungrab-mouse-on-leave-event-on-Wayland.patch delete mode 100644 0005-meson-ensure-correct-build-order-of-VAPI.patch diff --git a/0001-meson-improve-gtk-doc-build.patch b/0001-meson-improve-gtk-doc-build.patch deleted file mode 100644 index 299d1b0..0000000 --- a/0001-meson-improve-gtk-doc-build.patch +++ /dev/null @@ -1,73 +0,0 @@ -From ffa4077f696585ab671ae3dcdb1ebfc53705ab91 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= -Date: Wed, 16 Jan 2019 16:13:30 +0400 -Subject: [PATCH spice-gtk 1/2] meson: improve gtk-doc build -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- Fix the following warnings: -./spice-gtk-sections.txt:467: warning: No declaration found for SPICE_GTK_CHECK_VERSION. -./spice-gtk-sections.txt:468: warning: No declaration found for SPICE_GTK_MAJOR_VERSION. -./spice-gtk-sections.txt:469: warning: No declaration found for SPICE_GTK_MICRO_VERSION. -./spice-gtk-sections.txt:470: warning: No declaration found for SPICE_GTK_MINOR_VERSION. - -- fixxref for glib and gtk (thus requires gtk+ to build doc) - -- And other minor simplifications. - -After autotools is removed, we should try to use --rebuild-types. For -now I prefer not to touch it :) - -Signed-off-by: Marc-André Lureau ---- - doc/reference/meson.build | 31 +++++++++++++++++++++++++------ - 1 file changed, 25 insertions(+), 6 deletions(-) - -diff --git a/doc/reference/meson.build b/doc/reference/meson.build -index a121e66..72fcabe 100644 ---- a/doc/reference/meson.build -+++ b/doc/reference/meson.build -@@ -38,14 +38,33 @@ ignore_headers = [ - - spice_gtk_doc_dep = declare_dependency(link_with : [spice_client_gtk_lib, spice_client_glib_lib]) - --gnome.gtkdoc('spice-gtk', -- content_files : ['spice-gtk-overrides.txt', 'spice-gtk-overrides.txt'], -+glib_prefix = dependency('glib-2.0').get_pkgconfig_variable('prefix') -+glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html') -+gtk_prefix = dependency('gtk+-3.0').get_pkgconfig_variable('prefix') -+gtk_docpath = join_paths(gtk_prefix, 'share', 'gtk-doc', 'html') -+docpath = join_paths(spice_gtk_datadir, 'gtk-doc', 'html') -+ -+gnome.gtkdoc(meson.project_name(), - dependencies : spice_gtk_doc_dep, -- main_xml : 'spice-gtk-docs.xml', -- gobject_typesfile : files('spice-gtk.types'), -+ main_xml : meson.project_name() + '-docs.xml', -+ gobject_typesfile : meson.project_name() + '.types', - ignore_headers : ignore_headers, - include_directories: spice_gtk_include, - c_args : '-DSPICE_COMPILATION', - install : true, -- scan_args : ['--deprecated-guards="SPICE_DISABLE_DEPRECATED"', '--ignore-decorators="G_GNUC_INTERNAL"'], -- src_dir : join_paths(meson.source_root(), 'src')) -+ scan_args : [ -+ '--deprecated-guards="SPICE_DISABLE_DEPRECATED"', -+ '--ignore-decorators="G_GNUC_INTERNAL"' -+ ], -+ src_dir : [ -+ join_paths(meson.source_root(), 'src'), -+ join_paths(meson.build_root(), 'src'), -+ ], -+ fixxref_args: [ -+ '--html-dir=@0@'.format(docpath), -+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')), -+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')), -+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')), -+ '--extra-dir=@0@'.format(join_paths(gtk_docpath, 'gtk3')), -+ ], -+ ) --- -2.20.1.98.gecbdaf0899 - diff --git a/0002-meson-fix-ninja-dist-and-building-from-tarball.patch b/0002-meson-fix-ninja-dist-and-building-from-tarball.patch deleted file mode 100644 index f9c504c..0000000 --- a/0002-meson-fix-ninja-dist-and-building-from-tarball.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 9b8c32c9ee422294278934ef48a865de3737661e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= -Date: Wed, 16 Jan 2019 17:20:58 +0400 -Subject: [PATCH spice-gtk 2/2] meson: fix ninja dist, and building from - tarball -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -meson doesn't handle git-version-gen correctly yet (see -meson#688). Let's set the version manually for now. - -And a tag version vX.X will also fail to build, version_info[2] -doesn't exist. - -Signed-off-by: Marc-André Lureau ---- - meson.build | 2 +- - src/meson.build | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/meson.build b/meson.build -index d7062af..70dd318 100644 ---- a/meson.build -+++ b/meson.build -@@ -2,7 +2,7 @@ - # project definition - # - project('spice-gtk', 'c', -- version : run_command('build-aux/git-version-gen', '${MESON_SOURCE_ROOT}/.tarball-version', check : true).stdout().strip(), -+ version : '0.36', - license : 'LGPLv2.1', - meson_version : '>= 0.49') - -diff --git a/src/meson.build b/src/meson.build -index d9614cb..c55db44 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -8,9 +8,9 @@ spice_gtk_include += [include_directories('.')] - version_info = meson.project_version().split('.') - major = '@0@'.format(version_info[0]) - minor = '@0@'.format(version_info[1]) --micro = version_info[2].split('-')[0] --if micro == '' -- micro = '0' -+micro = '0' -+if version_info.length() > 2 -+ micro = version_info[2].split('-')[0] - endif - version_data = configuration_data() - version_data.set('SPICE_GTK_MAJOR_VERSION', major) --- -2.20.1.98.gecbdaf0899 - diff --git a/0003-spice-widget-Use-GdkSeat-API-on-Wayland.patch b/0003-spice-widget-Use-GdkSeat-API-on-Wayland.patch deleted file mode 100644 index 5b6fb50..0000000 --- a/0003-spice-widget-Use-GdkSeat-API-on-Wayland.patch +++ /dev/null @@ -1,138 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Wed, 6 Feb 2019 15:42:53 +0100 -Subject: [PATCH] spice-widget: Use GdkSeat API on Wayland - -Using different GDK APIs to grab and ungrab devices leads to -undetermined behavior and can cause the cursor to remain hidden on -ungrab on Wayland because GDK Wayland backend keeps a reference of -the GdkSeat cursor. - -On Wayland, use the GdkSeat API only even for ungrab, by ungrabbing the -seat and immediately re-grabbing the remaining keyboard or pointer if -the grab is to be retained. - -Thanks-to: Peter Hutterer -Signed-off-by: Olivier Fourdan -Fixes: https://gitlab.freedesktop.org/spice/spice-gtk/issues/83 -See-also: https://gitlab.gnome.org/GNOME/gtk/issues/787 -Acked-by: Victor Toso ---- - src/spice-widget.c | 82 +++++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 78 insertions(+), 4 deletions(-) - -diff --git a/src/spice-widget.c b/src/spice-widget.c -index 8adcc38..fd0c935 100644 ---- a/src/spice-widget.c -+++ b/src/spice-widget.c -@@ -32,6 +32,9 @@ - #include - #endif - #endif -+#ifdef GDK_WINDOWING_WAYLAND -+#include -+#endif - #ifdef G_OS_WIN32 - #include - #include -@@ -887,12 +890,46 @@ static void try_keyboard_grab(SpiceDisplay *display) - } - } - --static void ungrab_keyboard(G_GNUC_UNUSED SpiceDisplay *display) -+static void ungrab_keyboard(SpiceDisplay *display) - { -+ GdkSeat *seat = spice_display_get_default_seat(display); -+ GdkDevice *keyboard = gdk_seat_get_keyboard(seat); -+ -+#ifdef GDK_WINDOWING_WAYLAND -+ /* On Wayland, use the GdkSeat API alone. -+ * We simply issue a gdk_seat_ungrab() followed immediately by another -+ * gdk_seat_grab() on the pointer if the pointer grab is to be kept. -+ */ -+ if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) { -+ SpiceDisplayPrivate *d = display->priv; -+ -+ gdk_seat_ungrab(seat); -+ -+ if (d->mouse_grab_active) { -+ GdkGrabStatus status; -+ GdkCursor *blank = spice_display_get_blank_cursor(display); -+ -+ status = gdk_seat_grab(seat, -+ gtk_widget_get_window(GTK_WIDGET(display)), -+ GDK_SEAT_CAPABILITY_ALL_POINTING, -+ TRUE, -+ blank, -+ NULL, -+ NULL, -+ NULL); -+ if (status != GDK_GRAB_SUCCESS) { -+ g_warning("pointer grab failed %u", status); -+ d->mouse_grab_active = false; -+ } -+ } -+ -+ return; -+ } -+#endif -+ - G_GNUC_BEGIN_IGNORE_DEPRECATIONS - /* 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); - G_GNUC_END_IGNORE_DEPRECATIONS - } -@@ -1148,12 +1185,49 @@ static void mouse_wrap(SpiceDisplay *display, GdkEventMotion *motion) - - } - --static void ungrab_pointer(G_GNUC_UNUSED SpiceDisplay *display) -+static void ungrab_pointer(SpiceDisplay *display) - { -+ GdkSeat *seat = spice_display_get_default_seat(display); -+ GdkDevice *pointer = gdk_seat_get_pointer(seat); -+ -+#ifdef GDK_WINDOWING_WAYLAND -+ /* On Wayland, mixing the GdkSeat and the GdkDevice APIs leave the -+ * cursor unchanged because the GDK Wayland backend keeps a reference -+ * of the cursor set previously using gdk_seat_grab() attached to the -+ * GdkSeat. -+ * To avoid that issue, we simply issue a gdk_seat_ungrab() followed -+ * immediately by another gdk_seat_grab() on the keyboard if the -+ * keyboard grab is to be kept. -+ */ -+ if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) { -+ SpiceDisplayPrivate *d = display->priv; -+ -+ gdk_seat_ungrab(seat); -+ -+ if (d->keyboard_grab_active) { -+ GdkGrabStatus status; -+ -+ status = gdk_seat_grab(seat, -+ gtk_widget_get_window(GTK_WIDGET(display)), -+ GDK_SEAT_CAPABILITY_KEYBOARD, -+ FALSE, -+ NULL, -+ NULL, -+ NULL, -+ NULL); -+ if (status != GDK_GRAB_SUCCESS) { -+ g_warning("keyboard grab failed %u", status); -+ d->keyboard_grab_active = false; -+ } -+ } -+ -+ return; -+ } -+#endif -+ - G_GNUC_BEGIN_IGNORE_DEPRECATIONS - /* 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); - G_GNUC_END_IGNORE_DEPRECATIONS - } diff --git a/0004-spice-widget-Ungrab-mouse-on-leave-event-on-Wayland.patch b/0004-spice-widget-Ungrab-mouse-on-leave-event-on-Wayland.patch deleted file mode 100644 index d67c75d..0000000 --- a/0004-spice-widget-Ungrab-mouse-on-leave-event-on-Wayland.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Fri, 1 Feb 2019 14:35:39 +0100 -Subject: [PATCH] spice-widget: Ungrab mouse on leave event on Wayland - -The Spice Gtk widget relies on pointer grabs to receive all pointer -events even after the pointer has left the window. - -While that works on X11, on Wayland there is no active pointer grab, -so once the pointer has left the SPICE widget on Wayland, the events -are routed to the window with the pointer focus instead of ours. - -To avoid the problem, on Wayland, we simply ungrab the pointer once it -leaves the window. - -Thanks-to: Peter Hutterer -Signed-off-by: Olivier Fourdan -https://gitlab.freedesktop.org/spice/spice-gtk/issues/83 -Acked-by: Victor Toso ---- - src/spice-widget.c | 15 ++++++++++++++- - 1 file changed, 14 insertions(+), 1 deletion(-) - -diff --git a/src/spice-widget.c b/src/spice-widget.c -index fd0c935..d924731 100644 ---- a/src/spice-widget.c -+++ b/src/spice-widget.c -@@ -1854,8 +1854,21 @@ static gboolean leave_event(GtkWidget *widget, GdkEventCrossing *crossing G_GNUC - - DISPLAY_DEBUG(display, "%s", __FUNCTION__); - -- if (d->mouse_grab_active) -+ if (d->mouse_grab_active) { -+#ifdef GDK_WINDOWING_WAYLAND -+ /* On Wayland, there is no active pointer grab, so once the pointer -+ * has left the window, the events are routed to the window with -+ * pointer focus instead of ours, in which case we should just -+ * ungrab to avoid nasty side effects. */ -+ if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) { -+ GdkWindow *window = gtk_widget_get_window(widget); -+ -+ if (window == crossing->window) -+ try_mouse_ungrab(display); -+ } -+#endif - return true; -+ } - - d->mouse_have_pointer = false; - spice_gtk_session_set_mouse_has_pointer(d->gtk_session, false); diff --git a/0005-meson-ensure-correct-build-order-of-VAPI.patch b/0005-meson-ensure-correct-build-order-of-VAPI.patch deleted file mode 100644 index 610434b..0000000 --- a/0005-meson-ensure-correct-build-order-of-VAPI.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Rasmus Thomsen -Date: Sun, 20 Jan 2019 02:09:53 +0100 -Subject: [PATCH] meson: ensure correct build order of VAPI - -Without this commit spice-client-gtk-3.0.vapi may be built -before spice-client-glib-2.0.vapi if build_jobs > 1. This causes -the build to fail because the former depends on the latter ---- - vapi/meson.build | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/vapi/meson.build b/vapi/meson.build -index 2c4caa0..c9fef3d 100644 ---- a/vapi/meson.build -+++ b/vapi/meson.build -@@ -1,12 +1,13 @@ - if spice_gtk_has_vala -- gnome.generate_vapi('spice-client-glib-2.0', -+ spice_glib_vapi = gnome.generate_vapi('spice-client-glib-2.0', - install : true, - packages : ['gio-2.0', 'gstreamer-1.0'], - sources : spice_client_glib_gir[0]) -+ - if spice_gtk_has_gtk - gnome.generate_vapi('spice-client-gtk-3.0', - install : true, -- packages : ['gtk+-3.0', 'gstreamer-1.0', 'spice-client-glib-2.0'], -+ packages : ['gtk+-3.0', 'gstreamer-1.0', spice_glib_vapi], - gir_dirs : join_paths(meson.build_root(), 'src'), - vapi_dirs : meson.current_build_dir(), - sources : spice_client_gtk_gir[0]) diff --git a/sources b/sources index 2538a6f..2546436 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (spice-gtk-0.36.tar.bz2) = 2f8fd15e18b902d7ec0bcfae09d189bd26a9eedd72c9e018b201132e454513849821c46746fcb5887ea0ba995d9ff168ee46482ca1d4dbdf7580787a1298e5bf +SHA512 (spice-gtk-0.37.tar.bz2) = a0a20bc6f25337d86e57fe1fc9586c4cc84457fc8c38cdcc5a728990a69018da0fca3ab5aa63349786b5a7508c82b716c94803eefb3495cffb7df4526db2d029 diff --git a/spice-gtk.spec b/spice-gtk.spec index 3f186b6..2ee4b78 100644 --- a/spice-gtk.spec +++ b/spice-gtk.spec @@ -1,8 +1,8 @@ #define _version_suffix Name: spice-gtk -Version: 0.36 -Release: 5%{?dist} +Version: 0.37 +Release: 1%{?dist} Summary: A GTK+ widget for SPICE clients License: LGPLv2+ @@ -10,16 +10,10 @@ URL: https://www.spice-space.org/spice-gtk.html #VCS: git:git://anongit.freedesktop.org/spice/spice-gtk Source0: https://www.spice-space.org/download/gtk/%{name}-%{version}%{?_version_suffix}.tar.bz2 -Patch0001: 0001-meson-improve-gtk-doc-build.patch -Patch0002: 0002-meson-fix-ninja-dist-and-building-from-tarball.patch -Patch0003: 0003-spice-widget-Use-GdkSeat-API-on-Wayland.patch -Patch0004: 0004-spice-widget-Ungrab-mouse-on-leave-event-on-Wayland.patch -Patch0005: 0005-meson-ensure-correct-build-order-of-VAPI.patch - BuildRequires: git-core BuildRequires: meson BuildRequires: intltool -BuildRequires: usbredir-devel >= 0.5.2 +BuildRequires: usbredir-devel >= 0.7.1 BuildRequires: libusb1-devel >= 1.0.16 BuildRequires: pixman-devel libjpeg-turbo-devel BuildRequires: opus-devel @@ -40,7 +34,7 @@ BuildRequires: lz4-devel BuildRequires: gtk3-devel BuildRequires: json-glib-devel BuildRequires: spice-protocol >= 0.12.15 -BuildRequires: gstreamer1-devel gstreamer1-plugins-base-devel +BuildRequires: gstreamer1-devel >= 1.10 gstreamer1-plugins-base-devel >= 1.10 BuildRequires: python3-six BuildRequires: python3-pyparsing BuildRequires: openssl-devel @@ -148,8 +142,8 @@ spicy-screenshot is a tool to capture screen-shots of a SPICE desktop. %files %doc AUTHORS %doc COPYING -%doc README -%doc NEWS +%doc README.md +%doc CHANGELOG.md %{_mandir}/man1/spice-client.1* %files -n spice-glib -f %{name}.lang @@ -190,6 +184,9 @@ spicy-screenshot is a tool to capture screen-shots of a SPICE desktop. %{_bindir}/spicy-stats %changelog +* Thu May 16 2019 Victor Toso - 0.37-1 +- Update to v0.37 + * Thu Mar 07 2019 Christophe Fergeau - 0.36-5 - Use actual upstream patches, I made a mistake in the previous build and used patches which were only applied locally