summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backends/meta-cursor-tracker.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index 3cdab8389..f1562a259 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -53,6 +53,13 @@ enum {
static guint signals[LAST_SIGNAL];
+static void
+cursor_texture_updated (MetaCursorSprite *cursor,
+ MetaCursorTracker *tracker)
+{
+ g_signal_emit (tracker, signals[CURSOR_CHANGED], 0);
+}
+
static gboolean
update_displayed_cursor (MetaCursorTracker *tracker)
{
@@ -71,7 +78,12 @@ update_displayed_cursor (MetaCursorTracker *tracker)
if (tracker->displayed_cursor == cursor)
return FALSE;
+ g_signal_handlers_disconnect_by_func (tracker->displayed_cursor,
+ cursor_texture_updated,
+ tracker);
g_set_object (&tracker->displayed_cursor, cursor);
+ g_signal_connect (tracker->displayed_cursor, "texture-changed",
+ G_CALLBACK (cursor_texture_updated), tracker);
return TRUE;
}