summaryrefslogtreecommitdiff
path: root/extra/clutter
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-03-12 03:40:54 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-03-12 03:40:54 +0000
commit5d4b5782f03734e12c907cbc7e4b8c35926e9554 (patch)
treed6b52861ee269d63f88807a3e6cefc926a173247 /extra/clutter
parent345769552026b46d72b7318f1efa6d615ce03ee3 (diff)
Wed Mar 12 03:36:36 UTC 2014
Diffstat (limited to 'extra/clutter')
-rw-r--r--extra/clutter/PKGBUILD30
-rw-r--r--extra/clutter/fix_a_segfault_on_device_removal.diff31
-rw-r--r--extra/clutter/stop_using_deprecated_libevdev_api.diff117
-rw-r--r--extra/clutter/unref_devices_on_removal.diff22
4 files changed, 195 insertions, 5 deletions
diff --git a/extra/clutter/PKGBUILD b/extra/clutter/PKGBUILD
index 9c4766f0a..bc3c1fd2b 100644
--- a/extra/clutter/PKGBUILD
+++ b/extra/clutter/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 207401 2014-03-08 16:24:07Z ioni $
+# $Id: PKGBUILD 207501 2014-03-11 15:47:58Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: William Rea <sillywilly@gmail.com>
pkgname=clutter
pkgver=1.16.4
-pkgrel=2
+pkgrel=3
pkgdesc="A GObject based library for creating fast, visually rich graphical user interfaces"
arch=('i686' 'x86_64')
url="http://clutter-project.org/"
@@ -13,13 +13,33 @@ license=('LGPL')
depends=('cogl' 'mesa' 'json-glib' 'atk' 'libxi' 'libxkbcommon' 'libevdev')
makedepends=('gobject-introspection')
source=(http://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
- fix_buffer_age.patch)
+ fix_buffer_age.patch
+ unref_devices_on_removal.diff
+ fix_a_segfault_on_device_removal.diff
+ stop_using_deprecated_libevdev_api.diff)
sha256sums=('cf50836ec5503577b73f75f984577610881b3e2ff7a327bb5b6918b431b51b65'
- 'e254b26663c88dfba756934f011451c0551e52bb70e2de037835aea267ed7bda')
+ 'e254b26663c88dfba756934f011451c0551e52bb70e2de037835aea267ed7bda'
+ '70494fe0b46bbe4157196fd855e3fcef0970e543979018df57676fea00dd38af'
+ 'a9dabecb727f23654ef622aef8bba92e3dd1381ef6257107da7a689766e9917c'
+ '02768f0032f57939caa3f0695723fd3a6b4ab7bb33908ca50502dfc7f49e6c21')
-build() {
+prepare() {
cd "$pkgname-$pkgver"
patch -Np1 -i ../fix_buffer_age.patch
+
+ # fix build with libevdev >= 1.0.x
+ # https://git.gnome.org/browse/clutter/commit/?h=clutter-1.18&id=7d8f72a60e4087a4d9e48d3f0e38b669b3717243
+ patch -Np1 -i ../unref_devices_on_removal.diff
+ # https://git.gnome.org/browse/clutter/patch/?id=05e6bcc666e345ed4619c1a40a298212d1075b99
+ patch -Np1 -i ../fix_a_segfault_on_device_removal.diff
+ # https://git.gnome.org/browse/clutter/patch/?id=3cd9a70fea1ccf795419a1726c7c279b0aaf237e
+ patch -Np1 -i ../stop_using_deprecated_libevdev_api.diff
+
+ autoreconf -vfi
+}
+
+build() {
+ cd "$pkgname-$pkgver"
./configure --prefix=/usr --enable-introspection \
--enable-wayland-backend --enable-egl-backend --enable-evdev-input \
--enable-wayland-compositor
diff --git a/extra/clutter/fix_a_segfault_on_device_removal.diff b/extra/clutter/fix_a_segfault_on_device_removal.diff
new file mode 100644
index 000000000..46f67dbe5
--- /dev/null
+++ b/extra/clutter/fix_a_segfault_on_device_removal.diff
@@ -0,0 +1,31 @@
+From 05e6bcc666e345ed4619c1a40a298212d1075b99 Mon Sep 17 00:00:00 2001
+From: Rui Matos <tiagomatos@gmail.com>
+Date: Thu, 21 Nov 2013 13:51:26 +0000
+Subject: device-manager-evdev: Fix a segfault on device removal
+
+Master devices have a NULL sysfs path so use g_strcmp0 to handle them
+without crashing.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=712812
+---
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 256fd0e..38d707f 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -943,11 +943,8 @@ find_device_by_udev_device (ClutterDeviceManagerEvdev *manager_evdev,
+ {
+ ClutterInputDeviceEvdev *device = l->data;
+
+- if (strcmp (sysfs_path,
+- _clutter_input_device_evdev_get_sysfs_path (device)) == 0)
+- {
+- return device;
+- }
++ if (g_strcmp0 (sysfs_path, _clutter_input_device_evdev_get_sysfs_path (device)) == 0)
++ return device;
+ }
+
+ return NULL;
+--
+cgit v0.9.2
+
diff --git a/extra/clutter/stop_using_deprecated_libevdev_api.diff b/extra/clutter/stop_using_deprecated_libevdev_api.diff
new file mode 100644
index 000000000..cfe56a439
--- /dev/null
+++ b/extra/clutter/stop_using_deprecated_libevdev_api.diff
@@ -0,0 +1,117 @@
+From 3cd9a70fea1ccf795419a1726c7c279b0aaf237e Mon Sep 17 00:00:00 2001
+From: Rui Matos <tiagomatos@gmail.com>
+Date: Tue, 19 Nov 2013 16:02:58 +0000
+Subject: device-manager-evdev: Stop using deprecated libevdev API
+
+Fixes compiler warnings with libevdev >= 0.4 and makes use of a new
+function to set the clock id instead of doing the ioctl directly.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=712816
+---
+diff --git a/README.in b/README.in
+index 0018869..0e73a42 100644
+--- a/README.in
++++ b/README.in
+@@ -40,7 +40,7 @@ When building the CEx100 backend, Clutter also depends on:
+ When building the evdev input backend, Clutter also depends on:
+
+ • xkbcommon
+- • libevdev
++ • libevdev ≥ @LIBEVDEV_REQ_VERSION@
+
+ If you are building the API reference you will also need:
+
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 38d707f..bc34c39 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -605,11 +605,11 @@ sync_source (ClutterEventSource *source)
+ const gchar *device_path;
+
+ /* We read a SYN_DROPPED, ignore it and sync the device */
+- err = libevdev_next_event (source->dev, LIBEVDEV_READ_SYNC, &ev);
++ err = libevdev_next_event (source->dev, LIBEVDEV_READ_FLAG_SYNC, &ev);
+ while (err == 1)
+ {
+ dispatch_one_event (source, &ev);
+- err = libevdev_next_event (source->dev, LIBEVDEV_READ_SYNC, &ev);
++ err = libevdev_next_event (source->dev, LIBEVDEV_READ_FLAG_SYNC, &ev);
+ }
+
+ if (err != -EAGAIN && CLUTTER_HAS_DEBUG (EVENT))
+@@ -664,7 +664,7 @@ clutter_event_dispatch (GSource *g_source,
+ if (clutter_events_pending ())
+ goto queue_event;
+
+- err = libevdev_next_event (source->dev, LIBEVDEV_READ_NORMAL, &ev);
++ err = libevdev_next_event (source->dev, LIBEVDEV_READ_FLAG_NORMAL, &ev);
+ while (err != -EAGAIN)
+ {
+ if (err == 1)
+@@ -677,7 +677,7 @@ clutter_event_dispatch (GSource *g_source,
+ goto out;
+ }
+
+- err = libevdev_next_event (source->dev, LIBEVDEV_READ_NORMAL, &ev);
++ err = libevdev_next_event (source->dev, LIBEVDEV_READ_FLAG_NORMAL, &ev);
+ }
+
+ queue_event:
+@@ -725,7 +725,7 @@ clutter_event_source_new (ClutterInputDeviceEvdev *input_device)
+ GSource *source = g_source_new (&event_funcs, sizeof (ClutterEventSource));
+ ClutterEventSource *event_source = (ClutterEventSource *) source;
+ const gchar *node_path;
+- gint fd, clkid;
++ gint fd;
+ GError *error;
+ ClutterInputDeviceType device_type;
+
+@@ -756,15 +756,13 @@ clutter_event_source_new (ClutterInputDeviceEvdev *input_device)
+ }
+ }
+
+- /* Tell evdev to use the monotonic clock for its timestamps */
+- clkid = CLOCK_MONOTONIC;
+- ioctl (fd, EVIOCSCLOCKID, &clkid);
+-
+ /* setup the source */
+ event_source->device = input_device;
+ event_source->event_poll_fd.fd = fd;
+ event_source->event_poll_fd.events = G_IO_IN;
++
+ libevdev_new_from_fd (fd, &event_source->dev);
++ libevdev_set_clock_id (event_source->dev, CLOCK_MONOTONIC);
+
+ device_type = clutter_input_device_get_device_type (CLUTTER_INPUT_DEVICE (input_device));
+ if (device_type == CLUTTER_TOUCHPAD_DEVICE)
+diff --git a/configure.ac b/configure.ac
+index 0448ee4..47fce79 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -146,6 +146,7 @@ m4_define([uprof_req_version], [0.3])
+ m4_define([gtk_doc_req_version], [1.15])
+ m4_define([xcomposite_req_version], [0.4])
+ m4_define([gdk_req_version], [3.3.18])
++m4_define([libevdev_req_version], [0.4])
+
+ AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
+ AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
+@@ -158,6 +159,7 @@ AC_SUBST([UPROF_REQ_VERSION], [uprof_req_version])
+ AC_SUBST([GTK_DOC_REQ_VERSION], [gtk_doc_req_version])
+ AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version])
+ AC_SUBST([GDK_REQ_VERSION], [gdk_req_version])
++AC_SUBST([LIBEVDEV_REQ_VERSION], [libevdev_req_version])
+
+ # Checks for typedefs, structures, and compiler characteristics.
+ AM_PATH_GLIB_2_0([glib_req_version],
+@@ -478,7 +480,7 @@ AS_IF([test "x$enable_evdev" = "xyes"],
+ AS_IF([test "x$have_evdev" = "xyes"],
+ [
+ CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
+- BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 libevdev xkbcommon"
++ BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 libevdev >= $LIBEVDEV_REQ_VERSION xkbcommon"
+ experimental_input_backend="yes"
+ AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
+ SUPPORT_EVDEV=1
+--
+cgit v0.9.2
diff --git a/extra/clutter/unref_devices_on_removal.diff b/extra/clutter/unref_devices_on_removal.diff
new file mode 100644
index 000000000..8ad9aac30
--- /dev/null
+++ b/extra/clutter/unref_devices_on_removal.diff
@@ -0,0 +1,22 @@
+From 7d8f72a60e4087a4d9e48d3f0e38b669b3717243 Mon Sep 17 00:00:00 2001
+From: Rui Matos <tiagomatos@gmail.com>
+Date: Thu, 21 Nov 2013 13:50:40 +0000
+Subject: device-manager-evdev: Unref devices on removal
+
+https://bugzilla.gnome.org/show_bug.cgi?id=712812
+---
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 9e7be95..256fd0e 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -1046,6 +1046,8 @@ clutter_device_manager_evdev_remove_device (ClutterDeviceManager *manager,
+ clutter_event_source_free (source);
+ priv->event_sources = g_slist_remove (priv->event_sources, source);
+ }
++
++ g_object_unref (device);
+ }
+
+ static const GSList *
+--
+cgit v0.9.2