From ad7aa91136a5e24c0d9920fde707f5e4fbbda2ee Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 23 Jun 2013 12:45:49 -0400 Subject: [PATCH] fix a shell crash --- ...ap-errors-when-calling-XIQueryDevice.patch | 70 +++++++++++++++++++ clutter.spec | 10 ++- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 0001-x11-trap-errors-when-calling-XIQueryDevice.patch diff --git a/0001-x11-trap-errors-when-calling-XIQueryDevice.patch b/0001-x11-trap-errors-when-calling-XIQueryDevice.patch new file mode 100644 index 0000000..dac8407 --- /dev/null +++ b/0001-x11-trap-errors-when-calling-XIQueryDevice.patch @@ -0,0 +1,70 @@ +From d343cc6289583a7b0d929b82b740499ed588b1ab Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Mon, 10 Jun 2013 21:41:24 -0400 +Subject: [PATCH] x11: trap errors when calling XIQueryDevice + +Devices can disappear at any time, causing XIQueryDevice +to throw an error. At the same time, plug a memory leak. + +https://bugzilla.gnome.org/show_bug.cgi?id=701974 +--- + clutter/x11/clutter-device-manager-xi2.c | 30 ++++++++++++++++++++++-------- + 1 file changed, 22 insertions(+), 8 deletions(-) + +diff --git a/clutter/x11/clutter-device-manager-xi2.c b/clutter/x11/clutter-device-manager-xi2.c +index 6a06cec..49ee212 100644 +--- a/clutter/x11/clutter-device-manager-xi2.c ++++ b/clutter/x11/clutter-device-manager-xi2.c +@@ -408,10 +408,16 @@ translate_hierarchy_event (ClutterBackendX11 *backend_x11, + + CLUTTER_NOTE (EVENT, "Hierarchy event: device enabled"); + ++ clutter_x11_trap_x_errors (); + info = XIQueryDevice (backend_x11->xdpy, + ev->info[i].deviceid, + &n_devices); +- add_device (manager_xi2, backend_x11, &info[0], FALSE); ++ clutter_x11_untrap_x_errors (); ++ if (info != NULL) ++ { ++ add_device (manager_xi2, backend_x11, &info[0], FALSE); ++ XIFreeDeviceInfo (info); ++ } + } + else if (ev->info[i].flags & XIDeviceDisabled) + { +@@ -448,16 +454,24 @@ translate_hierarchy_event (ClutterBackendX11 *backend_x11, + /* and attach the slave to the new master if needed */ + if (ev->info[i].flags & XISlaveAttached) + { ++ clutter_x11_trap_x_errors (); + info = XIQueryDevice (backend_x11->xdpy, + ev->info[i].deviceid, + &n_devices); +- master = g_hash_table_lookup (manager_xi2->devices_by_id, +- GINT_TO_POINTER (info->attachment)); +- _clutter_input_device_set_associated_device (slave, master); +- _clutter_input_device_add_slave (master, slave); +- +- send_changed = TRUE; +- XIFreeDeviceInfo (info); ++ clutter_x11_untrap_x_errors (); ++ if (info != NULL) ++ { ++ master = g_hash_table_lookup (manager_xi2->devices_by_id, ++ GINT_TO_POINTER (info->attachment)); ++ if (master != NULL) ++ { ++ _clutter_input_device_set_associated_device (slave, master); ++ _clutter_input_device_add_slave (master, slave); ++ ++ send_changed = TRUE; ++ } ++ XIFreeDeviceInfo (info); ++ } + } + + if (send_changed) +-- +1.8.3.1 + diff --git a/clutter.spec b/clutter.spec index b2469e7..45bfdf4 100644 --- a/clutter.spec +++ b/clutter.spec @@ -1,10 +1,12 @@ +%global _changelog_trimtime %(date +%s -d "1 year ago") + %if 0%{?fedora} %global with_wayland 1 %endif Name: clutter Version: 1.14.4 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Open Source software library for creating rich graphical user interfaces Group: Development/Libraries @@ -13,6 +15,8 @@ URL: http://www.clutter-project.org/ Source0: http://download.gnome.org/sources/clutter/1.14/clutter-%{version}.tar.xz # https://bugzilla.gnome.org/show_bug.cgi?id=692706 Patch0: 0001-cally-Use-a-weak-pointer-to-hold-the-key-focus-in-Ca.patch +# https://bugzilla.gnome.org/show_bug.cgi?id=701974 +Patch1: 0001-x11-trap-errors-when-calling-XIQueryDevice.patch BuildRequires: glib2-devel mesa-libGL-devel pkgconfig pango-devel BuildRequires: cairo-gobject-devel gdk-pixbuf2-devel atk-devel @@ -77,6 +81,7 @@ This package contains documentation for clutter. %prep %setup -q %patch0 -p1 -b .cally_crash +%patch1 -p1 -b .xi2-crash %build (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi; @@ -125,6 +130,9 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';' %{_datadir}/gtk-doc/html/cally %changelog +* Sun Jun 23 2013 Matthias Clasen - 1.14.4-3 +- Backport another upstream patch for gnome-shell crashes (#954054) + * Fri May 17 2013 Kalev Lember - 1.14.4-2 - Backport an upstream patch for frequent gnome-shell crashes (#827158)