Fix clutter #2366 (mutter hang when gnome-settings-daemon restarts)
This commit is contained in:
parent
51e81f5865
commit
23bb0d6136
10
clutter.spec
10
clutter.spec
@ -1,6 +1,6 @@
|
||||
Name: clutter
|
||||
Version: 1.4.0
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: Open Source software library for creating rich graphical user interfaces
|
||||
|
||||
Group: Development/Libraries
|
||||
@ -13,6 +13,8 @@ Source0: http://www.clutter-project.org/sources/%{name}/1.4/%{name}-%{ver
|
||||
Patch0: Use-a-native-format-for-atlas-textures.patch
|
||||
# http://bugzilla.clutter-project.org/show_bug.cgi?id=2324
|
||||
Patch1: cogl-x11-Trap-glXDestroyPixmap.patch
|
||||
# http://bugzilla.clutter-project.org/attachment.cgi?id=2366
|
||||
Patch2: xsettings-dont-use-the-xsettings-watch-function-fu.patch
|
||||
|
||||
BuildRequires: glib2-devel mesa-libGL-devel gtk2-devel pkgconfig pango-devel
|
||||
BuildRequires: gobject-introspection-devel >= 0.9.6
|
||||
@ -60,6 +62,7 @@ This package contains documentation for clutter.
|
||||
|
||||
%patch0 -p0 -b .atlas-textures
|
||||
%patch1 -p1 -b .glXDestroyPixmap
|
||||
%patch2 -p1 -b .xsettings
|
||||
|
||||
%build
|
||||
(if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi;
|
||||
@ -112,6 +115,11 @@ rm -rf %{buildroot}
|
||||
%{_datadir}/gtk-doc/html/cally
|
||||
|
||||
%changelog
|
||||
* Mon Nov 22 2010 Dan Williams <dcbw@redhat.com> - 1.4.0-4
|
||||
- Add a patch cherry-picked from upstream for
|
||||
http://bugzilla.clutter-project.org/attachment.cgi?id=2366
|
||||
(gnome-shell/mutter hang when gnome-settings-daemon restarts)
|
||||
|
||||
* Tue Oct 5 2010 Owen Taylor <otaylor@redhat.com> - 1.4.0-3
|
||||
- Add a patch cherry-picked from upstream for
|
||||
http://bugzilla.clutter-project.org/show_bug.cgi?id=2324
|
||||
|
86
xsettings-dont-use-the-xsettings-watch-function-fu.patch
Normal file
86
xsettings-dont-use-the-xsettings-watch-function-fu.patch
Normal file
@ -0,0 +1,86 @@
|
||||
From c7d388e987063612d178b2412559b463b5e56f7a Mon Sep 17 00:00:00 2001
|
||||
From: Owen W. Taylor <otaylor@fishsoup.net>
|
||||
Date: Fri, 12 Nov 2010 18:53:51 -0500
|
||||
Subject: [PATCH] xsettings: don't use the xsettings watch function functionality
|
||||
|
||||
The "watch" function functionality in xsettings-client.c is designed
|
||||
for setups like GDK where filters are per-window. If we are going
|
||||
to pass all events to _clutter_xsettings_client_process_event()
|
||||
anyways, we can just pass in NULL for watch.
|
||||
|
||||
This avoids a nasty infinite loop where an event would get processed
|
||||
triggering removing a filter and adding a new filter, which would
|
||||
immediately run and remove a filter and add another and so on
|
||||
ad-infinitum.
|
||||
|
||||
http://bugzilla.clutter-project.org/show_bug.cgi?id=2415
|
||||
---
|
||||
clutter/x11/clutter-backend-x11.c | 37 ++++---------------------------------
|
||||
1 files changed, 4 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c
|
||||
index 8a61741..3b7b579 100644
|
||||
--- a/clutter/x11/clutter-backend-x11.c
|
||||
+++ b/clutter/x11/clutter-backend-x11.c
|
||||
@@ -120,38 +120,6 @@ xsettings_filter (XEvent *xevent,
|
||||
return CLUTTER_X11_FILTER_CONTINUE;
|
||||
}
|
||||
|
||||
-static Bool
|
||||
-clutter_backend_x11_xsettings_watch (Window window,
|
||||
- Bool is_start,
|
||||
- long mask,
|
||||
- void *cb_data)
|
||||
-{
|
||||
- ClutterBackendX11 *backend_x11 = cb_data;
|
||||
-
|
||||
- if (is_start)
|
||||
- {
|
||||
- backend_x11->xsettings_xwin = window;
|
||||
- if (!backend_x11->xsettings_xwin)
|
||||
- return False;
|
||||
-
|
||||
- clutter_x11_add_filter (xsettings_filter, backend_x11);
|
||||
-
|
||||
- CLUTTER_NOTE (BACKEND, "Added filter on XSettings manager window 0x%x",
|
||||
- (unsigned int) backend_x11->xsettings_xwin);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- CLUTTER_NOTE (BACKEND, "Removed filter on XSettings manager window 0x%x",
|
||||
- (unsigned int) backend_x11->xsettings_xwin);
|
||||
-
|
||||
- clutter_x11_remove_filter (xsettings_filter, backend_x11);
|
||||
-
|
||||
- backend_x11->xsettings_xwin = None;
|
||||
- }
|
||||
-
|
||||
- return True;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
clutter_backend_x11_xsettings_notify (const char *name,
|
||||
XSettingsAction action,
|
||||
@@ -336,9 +304,11 @@ clutter_backend_x11_post_parse (ClutterBackend *backend,
|
||||
_clutter_xsettings_client_new (backend_x11->xdpy,
|
||||
backend_x11->xscreen_num,
|
||||
clutter_backend_x11_xsettings_notify,
|
||||
- clutter_backend_x11_xsettings_watch,
|
||||
+ NULL,
|
||||
backend_x11);
|
||||
|
||||
+ clutter_x11_add_filter (xsettings_filter, backend_x11);
|
||||
+
|
||||
if (clutter_synchronise)
|
||||
XSynchronize (backend_x11->xdpy, True);
|
||||
|
||||
@@ -426,6 +396,7 @@ clutter_backend_x11_finalize (GObject *gobject)
|
||||
|
||||
g_free (backend_x11->display_name);
|
||||
|
||||
+ clutter_x11_remove_filter (xsettings_filter, backend_x11);
|
||||
_clutter_xsettings_client_destroy (backend_x11->xsettings);
|
||||
|
||||
XCloseDisplay (backend_x11->xdpy);
|
||||
--
|
||||
1.7.3.2
|
Loading…
Reference in New Issue
Block a user