Update to 3.22.18

This commit is contained in:
Kalev Lember 2017-08-08 11:38:04 +02:00
parent 6f963a69d1
commit f1138553e7
4 changed files with 8 additions and 193 deletions

1
.gitignore vendored
View File

@ -160,3 +160,4 @@ gtk+-2.90.5.tar.bz2
/gtk+-3.22.15.tar.xz
/gtk+-3.22.16.tar.xz
/gtk+-3.22.17.tar.xz
/gtk+-3.22.18.tar.xz

View File

@ -1,185 +0,0 @@
From f78585b7c35cbe07b5cf921a871d59299dcfa355 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Mon, 13 Mar 2017 14:33:06 +0800
Subject: [PATCH 1/2] wayland: Make beep requests go through the GdkDisplay
This way we can add things like throttling.
https://bugzilla.gnome.org/show_bug.cgi?id=778188
---
gdk/wayland/gdkdisplay-wayland.c | 19 ++++++++++++++++---
gdk/wayland/gdkprivate-wayland.h | 5 +++++
gdk/wayland/gdkwindow-wayland.c | 18 +++++++++---------
3 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index 784cfbecc411..d7fb684bd69b 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -656,10 +656,12 @@ gdk_wayland_display_get_default_screen (GdkDisplay *display)
return GDK_WAYLAND_DISPLAY (display)->screen;
}
-static void
-gdk_wayland_display_beep (GdkDisplay *display)
+void
+gdk_wayland_display_system_bell (GdkDisplay *display,
+ GdkWindow *window)
{
GdkWaylandDisplay *display_wayland;
+ struct gtk_surface1 *gtk_surface;
g_return_if_fail (GDK_IS_DISPLAY (display));
@@ -668,7 +670,18 @@ gdk_wayland_display_beep (GdkDisplay *display)
if (!display_wayland->gtk_shell)
return;
- gtk_shell1_system_bell (display_wayland->gtk_shell, NULL);
+ if (window)
+ gtk_surface = gdk_wayland_window_get_gtk_surface (window);
+ else
+ gtk_surface = NULL;
+
+ gtk_shell1_system_bell (display_wayland->gtk_shell, gtk_surface);
+}
+
+static void
+gdk_wayland_display_beep (GdkDisplay *display)
+{
+ gdk_wayland_display_system_bell (display, NULL);
}
static void
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h
index a95c925ca138..fde7632d38f5 100644
--- a/gdk/wayland/gdkprivate-wayland.h
+++ b/gdk/wayland/gdkprivate-wayland.h
@@ -83,6 +83,9 @@ void _gdk_wayland_display_get_maximal_cursor_size (GdkDisplay *display,
gboolean _gdk_wayland_display_supports_cursor_alpha (GdkDisplay *display);
gboolean _gdk_wayland_display_supports_cursor_color (GdkDisplay *display);
+void gdk_wayland_display_system_bell (GdkDisplay *display,
+ GdkWindow *window);
+
struct wl_buffer *_gdk_wayland_cursor_get_buffer (GdkCursor *cursor,
guint image_index,
int *hotspot_x,
@@ -271,6 +274,8 @@ EGLSurface gdk_wayland_window_get_egl_surface (GdkWindow *window,
EGLSurface gdk_wayland_window_get_dummy_egl_surface (GdkWindow *window,
EGLConfig config);
+struct gtk_surface1 * gdk_wayland_window_get_gtk_surface (GdkWindow *window);
+
void gdk_wayland_seat_set_global_cursor (GdkSeat *seat,
GdkCursor *cursor);
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index ffc9f94a009c..1f93f6c9c598 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -958,15 +958,8 @@ gdk_window_impl_wayland_end_paint (GdkWindow *window)
static gboolean
gdk_window_impl_wayland_beep (GdkWindow *window)
{
- GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
- GdkWaylandDisplay *display_wayland =
- GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
-
- if (!display_wayland->gtk_shell)
- return FALSE;
-
- gtk_shell1_system_bell (display_wayland->gtk_shell,
- impl->display_server.gtk_surface);
+ gdk_wayland_display_system_bell (gdk_window_get_display (window),
+ window);
return TRUE;
}
@@ -3891,6 +3884,13 @@ gdk_wayland_window_get_dummy_egl_surface (GdkWindow *window,
return impl->dummy_egl_surface;
}
+struct gtk_surface1 *
+gdk_wayland_window_get_gtk_surface (GdkWindow *window)
+{
+ g_return_val_if_fail (GDK_IS_WAYLAND_WINDOW (window), NULL);
+
+ return GDK_WINDOW_IMPL_WAYLAND (window->impl)->display_server.gtk_surface;
+}
/**
* gdk_wayland_window_set_use_custom_surface:
--
2.9.4
From 376ff1ae607db3e3ae47e8caeb8e8bce98c56f54 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Mon, 13 Mar 2017 14:42:38 +0800
Subject: [PATCH 2/2] wayland: Throttle system bell requests
If a bad behaving application tries to make the window/display beep too
often, throttle the beep requests so that we don't end up filling the
Wayland socket queue.
The throttle is set to 50 beeps per second, which far more beeps than
will ever make any sense from a user experience point of view, but will
avoid terminating due to an excessive amount of requests.
https://bugzilla.gnome.org/show_bug.cgi?id=778188
---
gdk/wayland/gdkdisplay-wayland.c | 9 +++++++++
gdk/wayland/gdkdisplay-wayland.h | 2 ++
2 files changed, 11 insertions(+)
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index d7fb684bd69b..3c8eedbfdae8 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -80,6 +80,8 @@
* ]|
*/
+#define MIN_SYSTEM_BELL_DELAY_MS 20
+
static void _gdk_wayland_display_load_cursor_theme (GdkWaylandDisplay *display_wayland);
G_DEFINE_TYPE (GdkWaylandDisplay, gdk_wayland_display, GDK_TYPE_DISPLAY)
@@ -662,6 +664,7 @@ gdk_wayland_display_system_bell (GdkDisplay *display,
{
GdkWaylandDisplay *display_wayland;
struct gtk_surface1 *gtk_surface;
+ gint64 now_ms;
g_return_if_fail (GDK_IS_DISPLAY (display));
@@ -675,6 +678,12 @@ gdk_wayland_display_system_bell (GdkDisplay *display,
else
gtk_surface = NULL;
+ now_ms = g_get_monotonic_time () / 1000;
+ if (now_ms - display_wayland->last_bell_time_ms < MIN_SYSTEM_BELL_DELAY_MS)
+ return;
+
+ display_wayland->last_bell_time_ms = now_ms;
+
gtk_shell1_system_bell (display_wayland->gtk_shell, gtk_surface);
}
diff --git a/gdk/wayland/gdkdisplay-wayland.h b/gdk/wayland/gdkdisplay-wayland.h
index a9fd4831a49c..3ae114e048fb 100644
--- a/gdk/wayland/gdkdisplay-wayland.h
+++ b/gdk/wayland/gdkdisplay-wayland.h
@@ -110,6 +110,8 @@ struct _GdkWaylandDisplay
GPtrArray *monitors;
+ gint64 last_bell_time_ms;
+
/* egl info */
EGLDisplay egl_display;
int egl_major_version;
--
2.9.4

View File

@ -10,7 +10,7 @@
%global gdk_pixbuf_version 2.30.0
%global xrandr_version 1.5.0
%global wayland_version 1.9.91
%global wayland_protocols_version 1.7
%global wayland_protocols_version 1.9
%global epoxy_version 1.0
%global bin_version 3.0.0
@ -21,17 +21,14 @@
%global __provides_exclude_from ^%{_libdir}/gtk-3.0
Name: gtk3
Version: 3.22.17
Release: 4%{?dist}
Version: 3.22.18
Release: 1%{?dist}
Summary: GTK+ graphical user interface library
License: LGPLv2+
URL: http://www.gtk.org
Source0: http://download.gnome.org/sources/gtk+/3.22/gtk+-%{version}.tar.xz
# https://bugzilla.redhat.com/show_bug.cgi?id=1466654
Patch0: gtk3-throttle-system-bell-on-wayland.patch
BuildRequires: pkgconfig(atk) >= %{atk_version}
BuildRequires: pkgconfig(atk-bridge-2.0)
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
@ -170,7 +167,6 @@ the functionality of the installed %{name} package.
%prep
%setup -q -n gtk+-%{version}
%patch0 -p1
%build
export CFLAGS='-fno-strict-aliasing %optflags'
@ -343,6 +339,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache &>/dev/null || :
%{_datadir}/installed-tests
%changelog
* Tue Aug 08 2017 Kalev Lember <klember@redhat.com> - 3.22.18-1
- Update to 3.22.18
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.22.17-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (gtk+-3.22.17.tar.xz) = 9503baa73f6e199a1fe807bec739df2bb8bc2e586e9c316184d37e874191eb5938c962d1eb83e58841579b16cde8b85d80e058a3577c0033de12fc3fce066dfa
SHA512 (gtk+-3.22.18.tar.xz) = f61d9117565a8e5d5902bc935aab34574910d408b28358fba78096be0c751d2c4c48a0f227086c6b15575c296b0ba8c811c5752e55711ba712a1db3d5a93471a