diff options
Diffstat (limited to 'extra/clutter')
-rw-r--r-- | extra/clutter/PKGBUILD | 30 | ||||
-rw-r--r-- | extra/clutter/fix_a_segfault_on_device_removal.diff | 31 | ||||
-rw-r--r-- | extra/clutter/stop_using_deprecated_libevdev_api.diff | 117 | ||||
-rw-r--r-- | extra/clutter/unref_devices_on_removal.diff | 22 |
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 |