diff --git a/.gitignore b/.gitignore index 5e2dd72..b877f1d 100644 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,4 @@ mutter-2.31.5.tar.bz2 /mutter-3.17.92.tar.xz /mutter-3.18.0.tar.xz /mutter-3.18.1.tar.xz +/mutter-3.19.1.tar.xz diff --git a/0001-wayland-surface-disconnect-signals-on-destroy.patch b/0001-wayland-surface-disconnect-signals-on-destroy.patch deleted file mode 100644 index 43bd3c9..0000000 --- a/0001-wayland-surface-disconnect-signals-on-destroy.patch +++ /dev/null @@ -1,101 +0,0 @@ -From a4f763ac3b0530fd602eb30396abe7147cc4c741 Mon Sep 17 00:00:00 2001 -From: Giovanni Campagna -Date: Tue, 13 Oct 2015 21:33:15 -0700 -Subject: [PATCH] wayland-surface: disconnect signals on destroy - -Otherwise signal handlers will be called on garbage - -https://bugzilla.gnome.org/show_bug.cgi?id=756548 ---- - src/wayland/meta-wayland-surface.c | 33 ++++++++++++++++++++++----------- - src/wayland/meta-wayland-surface.h | 2 +- - 2 files changed, 23 insertions(+), 12 deletions(-) - -diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c -index 9d15401..f8f6ffc 100644 ---- a/src/wayland/meta-wayland-surface.c -+++ b/src/wayland/meta-wayland-surface.c -@@ -933,22 +933,26 @@ set_surface_is_on_output (MetaWaylandSurface *surface, - MetaWaylandOutput *wayland_output, - gboolean is_on_output) - { -- gboolean was_on_output = g_hash_table_contains (surface->outputs, -- wayland_output); -+ gpointer orig_id; -+ gboolean was_on_output = g_hash_table_lookup_extended (surface->outputs_to_destroy_notify_id, -+ wayland_output, -+ NULL, &orig_id); - - if (!was_on_output && is_on_output) - { -- g_signal_connect (wayland_output, "output-destroyed", -- G_CALLBACK (surface_handle_output_destroy), -- surface); -- g_hash_table_add (surface->outputs, wayland_output); -+ gulong id; -+ -+ id = g_signal_connect (wayland_output, "output-destroyed", -+ G_CALLBACK (surface_handle_output_destroy), -+ surface); -+ g_hash_table_insert (surface->outputs_to_destroy_notify_id, wayland_output, -+ GSIZE_TO_POINTER ((gsize)id)); - surface_entered_output (surface, wayland_output); - } - else if (was_on_output && !is_on_output) - { -- g_hash_table_remove (surface->outputs, wayland_output); -- g_signal_handlers_disconnect_by_func ( -- wayland_output, (gpointer)surface_handle_output_destroy, surface); -+ g_hash_table_remove (surface->outputs_to_destroy_notify_id, wayland_output); -+ g_signal_handler_disconnect (wayland_output, (gulong) GPOINTER_TO_SIZE (orig_id)); - surface_left_output (surface, wayland_output); - } - } -@@ -986,6 +990,12 @@ update_surface_output_state (gpointer key, gpointer value, gpointer user_data) - set_surface_is_on_output (surface, wayland_output, is_on_output); - } - -+static void -+surface_output_disconnect_signal (gpointer key, gpointer value, gpointer user_data) -+{ -+ g_signal_handler_disconnect (key, (gulong) GPOINTER_TO_SIZE (value)); -+} -+ - void - meta_wayland_surface_update_outputs (MetaWaylandSurface *surface) - { -@@ -1036,7 +1046,8 @@ wl_surface_destructor (struct wl_resource *resource) - - meta_wayland_compositor_destroy_frame_callbacks (compositor, surface); - -- g_hash_table_unref (surface->outputs); -+ g_hash_table_foreach (surface->outputs_to_destroy_notify_id, surface_output_disconnect_signal, surface); -+ g_hash_table_unref (surface->outputs_to_destroy_notify_id); - - wl_list_for_each_safe (cb, next, &surface->pending_frame_callback_list, link) - wl_resource_destroy (cb->resource); -@@ -1081,7 +1092,7 @@ meta_wayland_surface_create (MetaWaylandCompositor *compositor, - - sync_drag_dest_funcs (surface); - -- surface->outputs = g_hash_table_new (NULL, NULL); -+ surface->outputs_to_destroy_notify_id = g_hash_table_new (NULL, NULL); - - pending_state_init (&surface->pending); - return surface; -diff --git a/src/wayland/meta-wayland-surface.h b/src/wayland/meta-wayland-surface.h -index c0ce8fd..94ba100 100644 ---- a/src/wayland/meta-wayland-surface.h -+++ b/src/wayland/meta-wayland-surface.h -@@ -147,7 +147,7 @@ struct _MetaWaylandSurface - int scale; - int32_t offset_x, offset_y; - GList *subsurfaces; -- GHashTable *outputs; -+ GHashTable *outputs_to_destroy_notify_id; - - /* List of pending frame callbacks that needs to stay queued longer than one - * commit sequence, such as when it has not yet been assigned a role. --- -2.5.0 - diff --git a/mutter.spec b/mutter.spec index 4059da8..9a19a7f 100644 --- a/mutter.spec +++ b/mutter.spec @@ -2,7 +2,7 @@ %global gsettings_desktop_schemas_version 3.15.92 Name: mutter -Version: 3.18.1 +Version: 3.19.1 Release: 4%{?dist} Summary: Window and compositing manager based on Clutter @@ -10,12 +10,10 @@ Group: User Interface/Desktops License: GPLv2+ #VCS: git:git://git.gnome.org/mutter URL: http://www.gnome.org -Source0: http://download.gnome.org/sources/%{name}/3.18/%{name}-%{version}.tar.xz +Source0: http://download.gnome.org/sources/%{name}/3.19/%{name}-%{version}.tar.xz # https://bugzilla.redhat.com/show_bug.cgi?id=1200901 Patch0: 0001-Force-cursor-update-after-applying-configuration.patch -# Backported from upstream -Patch1: 0001-wayland-surface-disconnect-signals-on-destroy.patch BuildRequires: clutter-devel >= %{clutter_version} BuildRequires: pango-devel @@ -100,7 +98,6 @@ the functionality of the installed %{name} package. %prep %setup -q %patch0 -p1 -b .fix-cursor -%patch1 -p1 %build autoreconf -f -i @@ -171,6 +168,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : %{_datadir}/mutter/tests %changelog +* Thu Oct 29 2015 Florian Müllner - 3.19.1-1 +- Update to 3.19.1 + * Wed Oct 21 2015 Ray Strode 3.18.1-4 - Force the cursor visible on vt switches after setting the crtc to workaround that qxl bug from before in a diff --git a/sources b/sources index a779757..0d5dc30 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d5218fc0d0f46b1b959c488100ae3c88 mutter-3.18.1.tar.xz +8e1ad5737b2851f05f7a50d8b5012530 mutter-3.19.1.tar.xz