clutter: update to 1.20.2.
This commit is contained in:
parent
d9195be1c1
commit
6bba6147ca
5 changed files with 3 additions and 340 deletions
|
@ -1,22 +0,0 @@
|
||||||
From 084dc49a0cdadeed7de896df81e9af536f2ab678 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rico Tzschichholz <ricotz@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
|
|
||||||
|
|
|
@ -1,224 +0,0 @@
|
||||||
From 46877cc2bd497ec23acfa07fedaf29f45522dc6f Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Jasper St. Pierre" <jstpierre@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
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
From 14d28e7908d5421f15f9b94f4f37d66f14c4222e Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Jasper St. Pierre" <jstpierre@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
|
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
From 7764fd2079318fede95b4b96c72d18bd31699270 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Carlos Garnacho <carlosg@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
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'clutter'
|
# Template file for 'clutter'
|
||||||
pkgname=clutter
|
pkgname=clutter
|
||||||
version=1.20.0
|
version=1.20.2
|
||||||
revision=4
|
revision=1
|
||||||
patch_args="-Np1"
|
patch_args="-Np1"
|
||||||
build_style=gnu-configure
|
build_style=gnu-configure
|
||||||
build_options="gir"
|
build_options="gir"
|
||||||
|
@ -18,7 +18,7 @@ maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||||
homepage="http://www.clutter-project.org"
|
homepage="http://www.clutter-project.org"
|
||||||
license="LGPL-2.1"
|
license="LGPL-2.1"
|
||||||
distfiles="${GNOME_SITE}/clutter/${version%.*}/clutter-${version}.tar.xz"
|
distfiles="${GNOME_SITE}/clutter/${version%.*}/clutter-${version}.tar.xz"
|
||||||
checksum=cc940809e6e1469ce349c4bddb0cbcc2c13c087d4fc15cda9278d855ee2d1293
|
checksum=8fa5287e964e1811c339d95252b434a2bc0c60f1f42f1c854f29c71c7efeca94
|
||||||
|
|
||||||
if [ -z "$CROSS_BUILD" ]; then
|
if [ -z "$CROSS_BUILD" ]; then
|
||||||
build_options_default="gir"
|
build_options_default="gir"
|
||||||
|
|
Loading…
Reference in a new issue