Update to v0.37

This commit is contained in:
Victor Toso 2019-05-16 11:06:25 +02:00
parent 1f90b4502c
commit 14956ce6cc
7 changed files with 10 additions and 360 deletions

View File

@ -1,73 +0,0 @@
From ffa4077f696585ab671ae3dcdb1ebfc53705ab91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
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 <marcandre.lureau@redhat.com>
---
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

View File

@ -1,54 +0,0 @@
From 9b8c32c9ee422294278934ef48a865de3737661e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
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 <marcandre.lureau@redhat.com>
---
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

View File

@ -1,138 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
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 <peter.hutterer@who-t.net>
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Fixes: https://gitlab.freedesktop.org/spice/spice-gtk/issues/83
See-also: https://gitlab.gnome.org/GNOME/gtk/issues/787
Acked-by: Victor Toso <victortoso@redhat.com>
---
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 <va/va_x11.h>
#endif
#endif
+#ifdef GDK_WINDOWING_WAYLAND
+#include <gdk/gdkwayland.h>
+#endif
#ifdef G_OS_WIN32
#include <windows.h>
#include <dinput.h>
@@ -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
}

View File

@ -1,50 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
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 <peter.hutterer@who-t.net>
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
https://gitlab.freedesktop.org/spice/spice-gtk/issues/83
Acked-by: Victor Toso <victortoso@redhat.com>
---
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);

View File

@ -1,32 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Rasmus Thomsen <rasmus.thomsen@protonmail.com>
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])

View File

@ -1 +1 @@
SHA512 (spice-gtk-0.36.tar.bz2) = 2f8fd15e18b902d7ec0bcfae09d189bd26a9eedd72c9e018b201132e454513849821c46746fcb5887ea0ba995d9ff168ee46482ca1d4dbdf7580787a1298e5bf
SHA512 (spice-gtk-0.37.tar.bz2) = a0a20bc6f25337d86e57fe1fc9586c4cc84457fc8c38cdcc5a728990a69018da0fca3ab5aa63349786b5a7508c82b716c94803eefb3495cffb7df4526db2d029

View File

@ -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 <victortoso@redhat.com> - 0.37-1
- Update to v0.37
* Thu Mar 07 2019 Christophe Fergeau <cfergeau@redhat.com> - 0.36-5
- Use actual upstream patches, I made a mistake in the previous build
and used patches which were only applied locally