[arch-commits] Commit in clutter/repos (14 files)
Jan de Groot
jgc at archlinux.org
Fri Mar 6 14:13:03 UTC 2015
Date: Friday, March 6, 2015 @ 15:13:03
Author: jgc
Revision: 232941
archrelease: copy trunk to gnome-unstable-i686, gnome-unstable-x86_64
Added:
clutter/repos/gnome-unstable-i686/
clutter/repos/gnome-unstable-i686/PKGBUILD
(from rev 232940, clutter/trunk/PKGBUILD)
clutter/repos/gnome-unstable-i686/closure-annotation.patch
(from rev 232940, clutter/trunk/closure-annotation.patch)
clutter/repos/gnome-unstable-i686/create-pangocontext-per-actor.patch
(from rev 232940, clutter/trunk/create-pangocontext-per-actor.patch)
clutter/repos/gnome-unstable-i686/dont-update-pangocontext.patch
(from rev 232940, clutter/trunk/dont-update-pangocontext.patch)
clutter/repos/gnome-unstable-i686/evdev-flush-event-queue.patch
(from rev 232940, clutter/trunk/evdev-flush-event-queue.patch)
clutter/repos/gnome-unstable-i686/libinput08.patch
(from rev 232940, clutter/trunk/libinput08.patch)
clutter/repos/gnome-unstable-x86_64/
clutter/repos/gnome-unstable-x86_64/PKGBUILD
(from rev 232940, clutter/trunk/PKGBUILD)
clutter/repos/gnome-unstable-x86_64/closure-annotation.patch
(from rev 232940, clutter/trunk/closure-annotation.patch)
clutter/repos/gnome-unstable-x86_64/create-pangocontext-per-actor.patch
(from rev 232940, clutter/trunk/create-pangocontext-per-actor.patch)
clutter/repos/gnome-unstable-x86_64/dont-update-pangocontext.patch
(from rev 232940, clutter/trunk/dont-update-pangocontext.patch)
clutter/repos/gnome-unstable-x86_64/evdev-flush-event-queue.patch
(from rev 232940, clutter/trunk/evdev-flush-event-queue.patch)
clutter/repos/gnome-unstable-x86_64/libinput08.patch
(from rev 232940, clutter/trunk/libinput08.patch)
-----------------------------------------------------------+
gnome-unstable-i686/PKGBUILD | 33 +
gnome-unstable-i686/closure-annotation.patch | 22 +
gnome-unstable-i686/create-pangocontext-per-actor.patch | 224 ++++++++++++
gnome-unstable-i686/dont-update-pangocontext.patch | 37 +
gnome-unstable-i686/evdev-flush-event-queue.patch | 54 ++
gnome-unstable-i686/libinput08.patch | 90 ++++
gnome-unstable-x86_64/PKGBUILD | 33 +
gnome-unstable-x86_64/closure-annotation.patch | 22 +
gnome-unstable-x86_64/create-pangocontext-per-actor.patch | 224 ++++++++++++
gnome-unstable-x86_64/dont-update-pangocontext.patch | 37 +
gnome-unstable-x86_64/evdev-flush-event-queue.patch | 54 ++
gnome-unstable-x86_64/libinput08.patch | 90 ++++
12 files changed, 920 insertions(+)
Copied: clutter/repos/gnome-unstable-i686/PKGBUILD (from rev 232940, clutter/trunk/PKGBUILD)
===================================================================
--- gnome-unstable-i686/PKGBUILD (rev 0)
+++ gnome-unstable-i686/PKGBUILD 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,33 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc at archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch at gmail.com>
+# Contributor: William Rea <sillywilly at gmail.com>
+
+pkgname=clutter
+pkgver=1.21.6
+pkgrel=1
+pkgdesc="A GObject based library for creating fast, visually rich graphical user interfaces"
+arch=('i686' 'x86_64')
+url="http://clutter-project.org/"
+license=('LGPL')
+depends=('cogl' 'mesa' 'json-glib' 'atk' 'libxi' 'libxkbcommon' 'libinput')
+makedepends=('gobject-introspection')
+source=(https://download.gnome.org/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz)
+sha256sums=('4546561d88b7a53128025307786c040eb5dbfe6e08dd237652317f8e832f1879')
+
+build() {
+ cd "$pkgname-$pkgver"
+ ./configure --prefix=/usr --enable-introspection \
+ --enable-wayland-backend --enable-egl-backend --enable-evdev-input \
+ --enable-wayland-compositor
+
+ # https://bugzilla.gnome.org/show_bug.cgi?id=655517
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
Copied: clutter/repos/gnome-unstable-i686/closure-annotation.patch (from rev 232940, clutter/trunk/closure-annotation.patch)
===================================================================
--- gnome-unstable-i686/closure-annotation.patch (rev 0)
+++ gnome-unstable-i686/closure-annotation.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,22 @@
+From 084dc49a0cdadeed7de896df81e9af536f2ab678 Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz at ubuntu.com>
+Date: Thu, 2 Oct 2014 09:27:36 +0200
+Subject: x11: Add missing closure annotation to ClutterX11FilterFunc
+
+
+diff --git a/clutter/x11/clutter-x11.h b/clutter/x11/clutter-x11.h
+index b0ab8a1..285ea51 100644
+--- a/clutter/x11/clutter-x11.h
++++ b/clutter/x11/clutter-x11.h
+@@ -85,7 +85,7 @@ typedef struct _ClutterX11XInputDevice ClutterX11XInputDevice;
+ * ClutterX11FilterFunc:
+ * @xev: Native X11 event structure
+ * @cev: Clutter event structure
+- * @data: user data passed to the filter function
++ * @data: (closure): user data passed to the filter function
+ *
+ * Filter function for X11 native events.
+ *
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-i686/create-pangocontext-per-actor.patch (from rev 232940, clutter/trunk/create-pangocontext-per-actor.patch)
===================================================================
--- gnome-unstable-i686/create-pangocontext-per-actor.patch (rev 0)
+++ gnome-unstable-i686/create-pangocontext-per-actor.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,224 @@
+From 46877cc2bd497ec23acfa07fedaf29f45522dc6f Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre at mecheye.net>
+Date: Wed, 22 Oct 2014 18:44:22 -0700
+Subject: actor: Create a PangoContext per actor
+
+For a variety of complicated reasons, ClutterText currently sets fields
+on the PangoContext when creating a layout. This causes ClutterText to
+behave somewhat erratically in certain cases, since the PangoContext is
+currently shared between all actors.
+
+GTK+ creates a PangoContext for every single GtkWidget, so it seems like
+we should do the same here.
+
+Move the private code that was previously in clutter-main.c into
+clutter-actor.c and clean it up a bit. This gives every actor its own
+PangoContext it can mutilate whenever it wants, at its heart's content.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739050
+
+diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
+index 6a0582a..33fe3e7 100644
+--- a/clutter/clutter-actor.c
++++ b/clutter/clutter-actor.c
+@@ -15474,6 +15474,46 @@ clutter_actor_grab_key_focus (ClutterActor *self)
+ clutter_stage_set_key_focus (CLUTTER_STAGE (stage), self);
+ }
+
++static void
++update_pango_context (ClutterBackend *backend,
++ PangoContext *context)
++{
++ ClutterSettings *settings;
++ PangoFontDescription *font_desc;
++ const cairo_font_options_t *font_options;
++ gchar *font_name;
++ PangoDirection pango_dir;
++ gdouble resolution;
++
++ settings = clutter_settings_get_default ();
++
++ /* update the text direction */
++ if (clutter_get_default_text_direction () == CLUTTER_TEXT_DIRECTION_RTL)
++ pango_dir = PANGO_DIRECTION_RTL;
++ else
++ pango_dir = PANGO_DIRECTION_LTR;
++
++ pango_context_set_base_dir (context, pango_dir);
++
++ g_object_get (settings, "font-name", &font_name, NULL);
++
++ /* get the configuration for the PangoContext from the backend */
++ font_options = clutter_backend_get_font_options (backend);
++ resolution = clutter_backend_get_resolution (backend);
++
++ font_desc = pango_font_description_from_string (font_name);
++
++ if (resolution < 0)
++ resolution = 96.0; /* fall back */
++
++ pango_context_set_font_description (context, font_desc);
++ pango_cairo_context_set_font_options (context, font_options);
++ pango_cairo_context_set_resolution (context, resolution);
++
++ pango_font_description_free (font_desc);
++ g_free (font_name);
++}
++
+ /**
+ * clutter_actor_get_pango_context:
+ * @self: a #ClutterActor
+@@ -15500,16 +15540,23 @@ PangoContext *
+ clutter_actor_get_pango_context (ClutterActor *self)
+ {
+ ClutterActorPrivate *priv;
++ ClutterBackend *backend = clutter_get_default_backend ();
+
+ g_return_val_if_fail (CLUTTER_IS_ACTOR (self), NULL);
+
+ priv = self->priv;
+
+- if (priv->pango_context != NULL)
+- return priv->pango_context;
++ if (G_UNLIKELY (priv->pango_context == NULL))
++ {
++ priv->pango_context = clutter_actor_create_pango_context (self);
+
+- priv->pango_context = _clutter_context_get_pango_context ();
+- g_object_ref (priv->pango_context);
++ g_signal_connect_object (backend, "resolution-changed",
++ G_CALLBACK (update_pango_context), priv->pango_context, 0);
++ g_signal_connect_object (backend, "font-changed",
++ G_CALLBACK (update_pango_context), priv->pango_context, 0);
++ }
++ else
++ update_pango_context (backend, priv->pango_context);
+
+ return priv->pango_context;
+ }
+@@ -15533,9 +15580,16 @@ clutter_actor_get_pango_context (ClutterActor *self)
+ PangoContext *
+ clutter_actor_create_pango_context (ClutterActor *self)
+ {
+- g_return_val_if_fail (CLUTTER_IS_ACTOR (self), NULL);
++ CoglPangoFontMap *font_map;
++ PangoContext *context;
++
++ font_map = COGL_PANGO_FONT_MAP (clutter_get_font_map ());
++
++ context = cogl_pango_font_map_create_context (font_map);
++ update_pango_context (clutter_get_default_backend (), context);
++ pango_context_set_language (context, pango_language_get_default ());
+
+- return _clutter_context_create_pango_context ();
++ return context;
+ }
+
+ /**
+diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
+index 3b9385a..1a337c0 100644
+--- a/clutter/clutter-main.c
++++ b/clutter/clutter-main.c
+@@ -764,86 +764,6 @@ clutter_get_text_direction (void)
+ return dir;
+ }
+
+-static void
+-update_pango_context (ClutterBackend *backend,
+- PangoContext *context)
+-{
+- ClutterSettings *settings;
+- PangoFontDescription *font_desc;
+- const cairo_font_options_t *font_options;
+- gchar *font_name;
+- PangoDirection pango_dir;
+- gdouble resolution;
+-
+- settings = clutter_settings_get_default ();
+-
+- /* update the text direction */
+- if (clutter_text_direction == CLUTTER_TEXT_DIRECTION_RTL)
+- pango_dir = PANGO_DIRECTION_RTL;
+- else
+- pango_dir = PANGO_DIRECTION_LTR;
+-
+- pango_context_set_base_dir (context, pango_dir);
+-
+- g_object_get (settings, "font-name", &font_name, NULL);
+-
+- /* get the configuration for the PangoContext from the backend */
+- font_options = clutter_backend_get_font_options (backend);
+- resolution = clutter_backend_get_resolution (backend);
+-
+- font_desc = pango_font_description_from_string (font_name);
+-
+- if (resolution < 0)
+- resolution = 96.0; /* fall back */
+-
+- pango_context_set_font_description (context, font_desc);
+- pango_cairo_context_set_font_options (context, font_options);
+- pango_cairo_context_set_resolution (context, resolution);
+-
+- pango_font_description_free (font_desc);
+- g_free (font_name);
+-}
+-
+-PangoContext *
+-_clutter_context_get_pango_context (void)
+-{
+- ClutterMainContext *self = _clutter_context_get_default ();
+-
+- if (G_UNLIKELY (self->pango_context == NULL))
+- {
+- PangoContext *context;
+-
+- context = _clutter_context_create_pango_context ();
+- self->pango_context = context;
+-
+- g_signal_connect (self->backend, "resolution-changed",
+- G_CALLBACK (update_pango_context),
+- self->pango_context);
+- g_signal_connect (self->backend, "font-changed",
+- G_CALLBACK (update_pango_context),
+- self->pango_context);
+- }
+- else
+- update_pango_context (self->backend, self->pango_context);
+-
+- return self->pango_context;
+-}
+-
+-PangoContext *
+-_clutter_context_create_pango_context (void)
+-{
+- CoglPangoFontMap *font_map;
+- PangoContext *context;
+-
+- font_map = clutter_context_get_pango_fontmap ();
+-
+- context = cogl_pango_font_map_create_context (font_map);
+- update_pango_context (clutter_get_default_backend (), context);
+- pango_context_set_language (context, pango_language_get_default ());
+-
+- return context;
+-}
+-
+ /**
+ * clutter_main_quit:
+ *
+diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h
+index bf92626..b714edc 100644
+--- a/clutter/clutter-private.h
++++ b/clutter/clutter-private.h
+@@ -198,8 +198,6 @@ ClutterMainContext * _clutter_context_get_default (void);
+ void _clutter_context_lock (void);
+ void _clutter_context_unlock (void);
+ gboolean _clutter_context_is_initialized (void);
+-PangoContext * _clutter_context_create_pango_context (void);
+-PangoContext * _clutter_context_get_pango_context (void);
+ ClutterPickMode _clutter_context_get_pick_mode (void);
+ void _clutter_context_push_shader_stack (ClutterActor *actor);
+ ClutterActor * _clutter_context_pop_shader_stack (ClutterActor *actor);
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-i686/dont-update-pangocontext.patch (from rev 232940, clutter/trunk/dont-update-pangocontext.patch)
===================================================================
--- gnome-unstable-i686/dont-update-pangocontext.patch (rev 0)
+++ gnome-unstable-i686/dont-update-pangocontext.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,37 @@
+From 14d28e7908d5421f15f9b94f4f37d66f14c4222e Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre at mecheye.net>
+Date: Wed, 22 Oct 2014 18:44:16 -0700
+Subject: main: Don't update the PangoContext in clutter_set_font_flags
+
+clutter_set_font_flags already calls clutter_backend_set_font_options,
+which emits a signal which our PangoContext listens to, so this is just
+duplicate and unneeded code.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739050
+
+diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
+index 444ceba..3b9385a 100644
+--- a/clutter/clutter-main.c
++++ b/clutter/clutter-main.c
+@@ -3276,7 +3276,6 @@ clutter_clear_glyph_cache (void)
+ void
+ clutter_set_font_flags (ClutterFontFlags flags)
+ {
+- ClutterMainContext *context = _clutter_context_get_default ();
+ CoglPangoFontMap *font_map;
+ ClutterFontFlags old_flags, changed_flags;
+ const cairo_font_options_t *font_options;
+@@ -3326,10 +3325,6 @@ clutter_set_font_flags (ClutterFontFlags flags)
+ clutter_backend_set_font_options (backend, new_font_options);
+
+ cairo_font_options_destroy (new_font_options);
+-
+- /* update the default pango context, if any */
+- if (context->pango_context != NULL)
+- update_pango_context (backend, context->pango_context);
+ }
+
+ /**
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-i686/evdev-flush-event-queue.patch (from rev 232940, clutter/trunk/evdev-flush-event-queue.patch)
===================================================================
--- gnome-unstable-i686/evdev-flush-event-queue.patch (rev 0)
+++ gnome-unstable-i686/evdev-flush-event-queue.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,54 @@
+From 7764fd2079318fede95b4b96c72d18bd31699270 Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <carlosg at gnome.org>
+Date: Tue, 14 Oct 2014 12:41:10 +0200
+Subject: evdev: Flush event queue before removing an input device
+
+libinput_suspend() will trigger the removal of input devices, but also
+the emission of button/key releases pairing everything that is pressed
+at that moment. These events are queued, but the ClutterInputDevice
+pointers in these will point to invalid memory at the time these are
+processed.
+
+Fix this by flushing the event queue, in order to ensure there are no
+unprocessed input events after libinput_suspend().
+
+https://bugzilla.gnome.org/show_bug.cgi?id=738520
+
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 77a8ec6..7b48481 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -1017,6 +1017,18 @@ clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat)
+ }
+ }
+
++static void
++flush_event_queue (void)
++{
++ ClutterEvent *event;
++
++ while ((event = clutter_event_get ()) != NULL)
++ {
++ _clutter_process_event (event);
++ clutter_event_free (event);
++ }
++}
++
+ static gboolean
+ process_base_event (ClutterDeviceManagerEvdev *manager_evdev,
+ struct libinput_event *event)
+@@ -1034,6 +1046,11 @@ process_base_event (ClutterDeviceManagerEvdev *manager_evdev,
+ break;
+
+ case LIBINPUT_EVENT_DEVICE_REMOVED:
++ /* Flush all queued events, there
++ * might be some from this device.
++ */
++ flush_event_queue ();
++
+ libinput_device = libinput_event_get_device (event);
+
+ device = libinput_device_get_user_data (libinput_device);
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-i686/libinput08.patch (from rev 232940, clutter/trunk/libinput08.patch)
===================================================================
--- gnome-unstable-i686/libinput08.patch (rev 0)
+++ gnome-unstable-i686/libinput08.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,90 @@
+From ede13b11d72a310e535f9a6f0b7e3f774f5529dc Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Fri, 16 Jan 2015 01:03:52 +0100
+Subject: evdev: use libinput's new merged scroll events
+
+libinput's API changed from separate scroll events for vert/horiz scrolling to
+a single event that contains both axes if they changed.
+
+Updated by Armin K. to use the discrete axis value for wheel events as done
+in Weston.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=742829
+
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 7b48481..2b3828a 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -1191,29 +1191,43 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
+
+ case LIBINPUT_EVENT_POINTER_AXIS:
+ {
+- gdouble value, dx = 0.0, dy = 0.0;
++ gdouble dx = 0.0, dy = 0.0;
+ guint32 time;
++ gboolean wheel = FALSE;
+ enum libinput_pointer_axis axis;
++ enum libinput_pointer_axis_source source;
+ struct libinput_event_pointer *axis_event =
+ libinput_event_get_pointer_event (event);
++
+ device = libinput_device_get_user_data (libinput_device);
+
+ time = libinput_event_pointer_get_time (axis_event);
+- value = libinput_event_pointer_get_axis_value (axis_event);
+- axis = libinput_event_pointer_get_axis (axis_event);
++ source = libinput_event_pointer_get_axis_source (axis_event);
+
+- switch (axis)
+- {
+- case LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL:
+- dx = 0;
+- dy = value;
+- break;
++ /* libinput < 0.8 sent wheel click events with value 10. Since 0.8
++ the value is the angle of the click in degrees. To keep
++ backwards-compat with existing clients, we just send multiples of
++ the click count. */
++
++ if (source == LIBINPUT_POINTER_AXIS_SOURCE_WHEEL)
++ wheel = TRUE;
+
+- case LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL:
+- dx = value;
+- dy = 0;
+- break;
++ axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL;
++ if (libinput_event_pointer_has_axis (axis_event, axis))
++ {
++ if (wheel)
++ dy = 10 * libinput_event_pointer_get_axis_value_discrete (axis_event, axis);
++ else
++ dy = libinput_event_pointer_get_axis_value (axis_event, axis);
++ }
+
++ axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL;
++ if (libinput_event_pointer_has_axis (axis_event, axis))
++ {
++ if (wheel)
++ dx = 10 * libinput_event_pointer_get_axis_value_discrete (axis_event, axis);
++ else
++ dx = libinput_event_pointer_get_axis_value (axis_event, axis);
+ }
+
+ notify_scroll (device, time, dx, dy);
+diff --git a/configure.ac b/configure.ac
+index 0a9a580..2a47744 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -146,7 +146,7 @@ m4_define([uprof_req_version], [0.3])
+ m4_define([gtk_doc_req_version], [1.20])
+ m4_define([xcomposite_req_version], [0.4])
+ m4_define([gdk_req_version], [3.3.18])
+-m4_define([libinput_req_version], [0.4.0])
++m4_define([libinput_req_version], [0.8.0])
+ m4_define([libudev_req_version], [136])
+
+ AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-x86_64/PKGBUILD (from rev 232940, clutter/trunk/PKGBUILD)
===================================================================
--- gnome-unstable-x86_64/PKGBUILD (rev 0)
+++ gnome-unstable-x86_64/PKGBUILD 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,33 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc at archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch at gmail.com>
+# Contributor: William Rea <sillywilly at gmail.com>
+
+pkgname=clutter
+pkgver=1.21.6
+pkgrel=1
+pkgdesc="A GObject based library for creating fast, visually rich graphical user interfaces"
+arch=('i686' 'x86_64')
+url="http://clutter-project.org/"
+license=('LGPL')
+depends=('cogl' 'mesa' 'json-glib' 'atk' 'libxi' 'libxkbcommon' 'libinput')
+makedepends=('gobject-introspection')
+source=(https://download.gnome.org/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz)
+sha256sums=('4546561d88b7a53128025307786c040eb5dbfe6e08dd237652317f8e832f1879')
+
+build() {
+ cd "$pkgname-$pkgver"
+ ./configure --prefix=/usr --enable-introspection \
+ --enable-wayland-backend --enable-egl-backend --enable-evdev-input \
+ --enable-wayland-compositor
+
+ # https://bugzilla.gnome.org/show_bug.cgi?id=655517
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
Copied: clutter/repos/gnome-unstable-x86_64/closure-annotation.patch (from rev 232940, clutter/trunk/closure-annotation.patch)
===================================================================
--- gnome-unstable-x86_64/closure-annotation.patch (rev 0)
+++ gnome-unstable-x86_64/closure-annotation.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,22 @@
+From 084dc49a0cdadeed7de896df81e9af536f2ab678 Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz at ubuntu.com>
+Date: Thu, 2 Oct 2014 09:27:36 +0200
+Subject: x11: Add missing closure annotation to ClutterX11FilterFunc
+
+
+diff --git a/clutter/x11/clutter-x11.h b/clutter/x11/clutter-x11.h
+index b0ab8a1..285ea51 100644
+--- a/clutter/x11/clutter-x11.h
++++ b/clutter/x11/clutter-x11.h
+@@ -85,7 +85,7 @@ typedef struct _ClutterX11XInputDevice ClutterX11XInputDevice;
+ * ClutterX11FilterFunc:
+ * @xev: Native X11 event structure
+ * @cev: Clutter event structure
+- * @data: user data passed to the filter function
++ * @data: (closure): user data passed to the filter function
+ *
+ * Filter function for X11 native events.
+ *
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-x86_64/create-pangocontext-per-actor.patch (from rev 232940, clutter/trunk/create-pangocontext-per-actor.patch)
===================================================================
--- gnome-unstable-x86_64/create-pangocontext-per-actor.patch (rev 0)
+++ gnome-unstable-x86_64/create-pangocontext-per-actor.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,224 @@
+From 46877cc2bd497ec23acfa07fedaf29f45522dc6f Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre at mecheye.net>
+Date: Wed, 22 Oct 2014 18:44:22 -0700
+Subject: actor: Create a PangoContext per actor
+
+For a variety of complicated reasons, ClutterText currently sets fields
+on the PangoContext when creating a layout. This causes ClutterText to
+behave somewhat erratically in certain cases, since the PangoContext is
+currently shared between all actors.
+
+GTK+ creates a PangoContext for every single GtkWidget, so it seems like
+we should do the same here.
+
+Move the private code that was previously in clutter-main.c into
+clutter-actor.c and clean it up a bit. This gives every actor its own
+PangoContext it can mutilate whenever it wants, at its heart's content.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739050
+
+diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
+index 6a0582a..33fe3e7 100644
+--- a/clutter/clutter-actor.c
++++ b/clutter/clutter-actor.c
+@@ -15474,6 +15474,46 @@ clutter_actor_grab_key_focus (ClutterActor *self)
+ clutter_stage_set_key_focus (CLUTTER_STAGE (stage), self);
+ }
+
++static void
++update_pango_context (ClutterBackend *backend,
++ PangoContext *context)
++{
++ ClutterSettings *settings;
++ PangoFontDescription *font_desc;
++ const cairo_font_options_t *font_options;
++ gchar *font_name;
++ PangoDirection pango_dir;
++ gdouble resolution;
++
++ settings = clutter_settings_get_default ();
++
++ /* update the text direction */
++ if (clutter_get_default_text_direction () == CLUTTER_TEXT_DIRECTION_RTL)
++ pango_dir = PANGO_DIRECTION_RTL;
++ else
++ pango_dir = PANGO_DIRECTION_LTR;
++
++ pango_context_set_base_dir (context, pango_dir);
++
++ g_object_get (settings, "font-name", &font_name, NULL);
++
++ /* get the configuration for the PangoContext from the backend */
++ font_options = clutter_backend_get_font_options (backend);
++ resolution = clutter_backend_get_resolution (backend);
++
++ font_desc = pango_font_description_from_string (font_name);
++
++ if (resolution < 0)
++ resolution = 96.0; /* fall back */
++
++ pango_context_set_font_description (context, font_desc);
++ pango_cairo_context_set_font_options (context, font_options);
++ pango_cairo_context_set_resolution (context, resolution);
++
++ pango_font_description_free (font_desc);
++ g_free (font_name);
++}
++
+ /**
+ * clutter_actor_get_pango_context:
+ * @self: a #ClutterActor
+@@ -15500,16 +15540,23 @@ PangoContext *
+ clutter_actor_get_pango_context (ClutterActor *self)
+ {
+ ClutterActorPrivate *priv;
++ ClutterBackend *backend = clutter_get_default_backend ();
+
+ g_return_val_if_fail (CLUTTER_IS_ACTOR (self), NULL);
+
+ priv = self->priv;
+
+- if (priv->pango_context != NULL)
+- return priv->pango_context;
++ if (G_UNLIKELY (priv->pango_context == NULL))
++ {
++ priv->pango_context = clutter_actor_create_pango_context (self);
+
+- priv->pango_context = _clutter_context_get_pango_context ();
+- g_object_ref (priv->pango_context);
++ g_signal_connect_object (backend, "resolution-changed",
++ G_CALLBACK (update_pango_context), priv->pango_context, 0);
++ g_signal_connect_object (backend, "font-changed",
++ G_CALLBACK (update_pango_context), priv->pango_context, 0);
++ }
++ else
++ update_pango_context (backend, priv->pango_context);
+
+ return priv->pango_context;
+ }
+@@ -15533,9 +15580,16 @@ clutter_actor_get_pango_context (ClutterActor *self)
+ PangoContext *
+ clutter_actor_create_pango_context (ClutterActor *self)
+ {
+- g_return_val_if_fail (CLUTTER_IS_ACTOR (self), NULL);
++ CoglPangoFontMap *font_map;
++ PangoContext *context;
++
++ font_map = COGL_PANGO_FONT_MAP (clutter_get_font_map ());
++
++ context = cogl_pango_font_map_create_context (font_map);
++ update_pango_context (clutter_get_default_backend (), context);
++ pango_context_set_language (context, pango_language_get_default ());
+
+- return _clutter_context_create_pango_context ();
++ return context;
+ }
+
+ /**
+diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
+index 3b9385a..1a337c0 100644
+--- a/clutter/clutter-main.c
++++ b/clutter/clutter-main.c
+@@ -764,86 +764,6 @@ clutter_get_text_direction (void)
+ return dir;
+ }
+
+-static void
+-update_pango_context (ClutterBackend *backend,
+- PangoContext *context)
+-{
+- ClutterSettings *settings;
+- PangoFontDescription *font_desc;
+- const cairo_font_options_t *font_options;
+- gchar *font_name;
+- PangoDirection pango_dir;
+- gdouble resolution;
+-
+- settings = clutter_settings_get_default ();
+-
+- /* update the text direction */
+- if (clutter_text_direction == CLUTTER_TEXT_DIRECTION_RTL)
+- pango_dir = PANGO_DIRECTION_RTL;
+- else
+- pango_dir = PANGO_DIRECTION_LTR;
+-
+- pango_context_set_base_dir (context, pango_dir);
+-
+- g_object_get (settings, "font-name", &font_name, NULL);
+-
+- /* get the configuration for the PangoContext from the backend */
+- font_options = clutter_backend_get_font_options (backend);
+- resolution = clutter_backend_get_resolution (backend);
+-
+- font_desc = pango_font_description_from_string (font_name);
+-
+- if (resolution < 0)
+- resolution = 96.0; /* fall back */
+-
+- pango_context_set_font_description (context, font_desc);
+- pango_cairo_context_set_font_options (context, font_options);
+- pango_cairo_context_set_resolution (context, resolution);
+-
+- pango_font_description_free (font_desc);
+- g_free (font_name);
+-}
+-
+-PangoContext *
+-_clutter_context_get_pango_context (void)
+-{
+- ClutterMainContext *self = _clutter_context_get_default ();
+-
+- if (G_UNLIKELY (self->pango_context == NULL))
+- {
+- PangoContext *context;
+-
+- context = _clutter_context_create_pango_context ();
+- self->pango_context = context;
+-
+- g_signal_connect (self->backend, "resolution-changed",
+- G_CALLBACK (update_pango_context),
+- self->pango_context);
+- g_signal_connect (self->backend, "font-changed",
+- G_CALLBACK (update_pango_context),
+- self->pango_context);
+- }
+- else
+- update_pango_context (self->backend, self->pango_context);
+-
+- return self->pango_context;
+-}
+-
+-PangoContext *
+-_clutter_context_create_pango_context (void)
+-{
+- CoglPangoFontMap *font_map;
+- PangoContext *context;
+-
+- font_map = clutter_context_get_pango_fontmap ();
+-
+- context = cogl_pango_font_map_create_context (font_map);
+- update_pango_context (clutter_get_default_backend (), context);
+- pango_context_set_language (context, pango_language_get_default ());
+-
+- return context;
+-}
+-
+ /**
+ * clutter_main_quit:
+ *
+diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h
+index bf92626..b714edc 100644
+--- a/clutter/clutter-private.h
++++ b/clutter/clutter-private.h
+@@ -198,8 +198,6 @@ ClutterMainContext * _clutter_context_get_default (void);
+ void _clutter_context_lock (void);
+ void _clutter_context_unlock (void);
+ gboolean _clutter_context_is_initialized (void);
+-PangoContext * _clutter_context_create_pango_context (void);
+-PangoContext * _clutter_context_get_pango_context (void);
+ ClutterPickMode _clutter_context_get_pick_mode (void);
+ void _clutter_context_push_shader_stack (ClutterActor *actor);
+ ClutterActor * _clutter_context_pop_shader_stack (ClutterActor *actor);
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-x86_64/dont-update-pangocontext.patch (from rev 232940, clutter/trunk/dont-update-pangocontext.patch)
===================================================================
--- gnome-unstable-x86_64/dont-update-pangocontext.patch (rev 0)
+++ gnome-unstable-x86_64/dont-update-pangocontext.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,37 @@
+From 14d28e7908d5421f15f9b94f4f37d66f14c4222e Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre at mecheye.net>
+Date: Wed, 22 Oct 2014 18:44:16 -0700
+Subject: main: Don't update the PangoContext in clutter_set_font_flags
+
+clutter_set_font_flags already calls clutter_backend_set_font_options,
+which emits a signal which our PangoContext listens to, so this is just
+duplicate and unneeded code.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739050
+
+diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
+index 444ceba..3b9385a 100644
+--- a/clutter/clutter-main.c
++++ b/clutter/clutter-main.c
+@@ -3276,7 +3276,6 @@ clutter_clear_glyph_cache (void)
+ void
+ clutter_set_font_flags (ClutterFontFlags flags)
+ {
+- ClutterMainContext *context = _clutter_context_get_default ();
+ CoglPangoFontMap *font_map;
+ ClutterFontFlags old_flags, changed_flags;
+ const cairo_font_options_t *font_options;
+@@ -3326,10 +3325,6 @@ clutter_set_font_flags (ClutterFontFlags flags)
+ clutter_backend_set_font_options (backend, new_font_options);
+
+ cairo_font_options_destroy (new_font_options);
+-
+- /* update the default pango context, if any */
+- if (context->pango_context != NULL)
+- update_pango_context (backend, context->pango_context);
+ }
+
+ /**
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-x86_64/evdev-flush-event-queue.patch (from rev 232940, clutter/trunk/evdev-flush-event-queue.patch)
===================================================================
--- gnome-unstable-x86_64/evdev-flush-event-queue.patch (rev 0)
+++ gnome-unstable-x86_64/evdev-flush-event-queue.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,54 @@
+From 7764fd2079318fede95b4b96c72d18bd31699270 Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <carlosg at gnome.org>
+Date: Tue, 14 Oct 2014 12:41:10 +0200
+Subject: evdev: Flush event queue before removing an input device
+
+libinput_suspend() will trigger the removal of input devices, but also
+the emission of button/key releases pairing everything that is pressed
+at that moment. These events are queued, but the ClutterInputDevice
+pointers in these will point to invalid memory at the time these are
+processed.
+
+Fix this by flushing the event queue, in order to ensure there are no
+unprocessed input events after libinput_suspend().
+
+https://bugzilla.gnome.org/show_bug.cgi?id=738520
+
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 77a8ec6..7b48481 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -1017,6 +1017,18 @@ clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat)
+ }
+ }
+
++static void
++flush_event_queue (void)
++{
++ ClutterEvent *event;
++
++ while ((event = clutter_event_get ()) != NULL)
++ {
++ _clutter_process_event (event);
++ clutter_event_free (event);
++ }
++}
++
+ static gboolean
+ process_base_event (ClutterDeviceManagerEvdev *manager_evdev,
+ struct libinput_event *event)
+@@ -1034,6 +1046,11 @@ process_base_event (ClutterDeviceManagerEvdev *manager_evdev,
+ break;
+
+ case LIBINPUT_EVENT_DEVICE_REMOVED:
++ /* Flush all queued events, there
++ * might be some from this device.
++ */
++ flush_event_queue ();
++
+ libinput_device = libinput_event_get_device (event);
+
+ device = libinput_device_get_user_data (libinput_device);
+--
+cgit v0.10.1
+
Copied: clutter/repos/gnome-unstable-x86_64/libinput08.patch (from rev 232940, clutter/trunk/libinput08.patch)
===================================================================
--- gnome-unstable-x86_64/libinput08.patch (rev 0)
+++ gnome-unstable-x86_64/libinput08.patch 2015-03-06 14:13:03 UTC (rev 232941)
@@ -0,0 +1,90 @@
+From ede13b11d72a310e535f9a6f0b7e3f774f5529dc Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Fri, 16 Jan 2015 01:03:52 +0100
+Subject: evdev: use libinput's new merged scroll events
+
+libinput's API changed from separate scroll events for vert/horiz scrolling to
+a single event that contains both axes if they changed.
+
+Updated by Armin K. to use the discrete axis value for wheel events as done
+in Weston.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=742829
+
+diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
+index 7b48481..2b3828a 100644
+--- a/clutter/evdev/clutter-device-manager-evdev.c
++++ b/clutter/evdev/clutter-device-manager-evdev.c
+@@ -1191,29 +1191,43 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
+
+ case LIBINPUT_EVENT_POINTER_AXIS:
+ {
+- gdouble value, dx = 0.0, dy = 0.0;
++ gdouble dx = 0.0, dy = 0.0;
+ guint32 time;
++ gboolean wheel = FALSE;
+ enum libinput_pointer_axis axis;
++ enum libinput_pointer_axis_source source;
+ struct libinput_event_pointer *axis_event =
+ libinput_event_get_pointer_event (event);
++
+ device = libinput_device_get_user_data (libinput_device);
+
+ time = libinput_event_pointer_get_time (axis_event);
+- value = libinput_event_pointer_get_axis_value (axis_event);
+- axis = libinput_event_pointer_get_axis (axis_event);
++ source = libinput_event_pointer_get_axis_source (axis_event);
+
+- switch (axis)
+- {
+- case LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL:
+- dx = 0;
+- dy = value;
+- break;
++ /* libinput < 0.8 sent wheel click events with value 10. Since 0.8
++ the value is the angle of the click in degrees. To keep
++ backwards-compat with existing clients, we just send multiples of
++ the click count. */
++
++ if (source == LIBINPUT_POINTER_AXIS_SOURCE_WHEEL)
++ wheel = TRUE;
+
+- case LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL:
+- dx = value;
+- dy = 0;
+- break;
++ axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL;
++ if (libinput_event_pointer_has_axis (axis_event, axis))
++ {
++ if (wheel)
++ dy = 10 * libinput_event_pointer_get_axis_value_discrete (axis_event, axis);
++ else
++ dy = libinput_event_pointer_get_axis_value (axis_event, axis);
++ }
+
++ axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL;
++ if (libinput_event_pointer_has_axis (axis_event, axis))
++ {
++ if (wheel)
++ dx = 10 * libinput_event_pointer_get_axis_value_discrete (axis_event, axis);
++ else
++ dx = libinput_event_pointer_get_axis_value (axis_event, axis);
+ }
+
+ notify_scroll (device, time, dx, dy);
+diff --git a/configure.ac b/configure.ac
+index 0a9a580..2a47744 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -146,7 +146,7 @@ m4_define([uprof_req_version], [0.3])
+ m4_define([gtk_doc_req_version], [1.20])
+ m4_define([xcomposite_req_version], [0.4])
+ m4_define([gdk_req_version], [3.3.18])
+-m4_define([libinput_req_version], [0.4.0])
++m4_define([libinput_req_version], [0.8.0])
+ m4_define([libudev_req_version], [136])
+
+ AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
+--
+cgit v0.10.1
+
More information about the arch-commits
mailing list