summaryrefslogtreecommitdiff
path: root/src/backends/meta-cursor-tracker.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-11-20 13:20:36 +0100
committerCarlos Garnacho <carlosg@gnome.org>2017-11-20 13:29:22 +0100
commitcf4b5efdd1b5b4b357f3de044e51218e382a551d (patch)
tree2c8ff1b0a2683b619bdcb8ba187cd5dfb55e6a9e /src/backends/meta-cursor-tracker.c
parent3067dab84ce4ea57d7fb9e43d593ef183d9a6487 (diff)
downloadmutter-cf4b5efdd1b5b4b357f3de044e51218e382a551d.tar.gz
backends: Do NULL checks before disconnecting/connecting signals
The displayed cursor may be NULL. https://bugzilla.gnome.org/show_bug.cgi?id=754806
Diffstat (limited to 'src/backends/meta-cursor-tracker.c')
-rw-r--r--src/backends/meta-cursor-tracker.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index b29a72638..74fa4351d 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -75,12 +75,21 @@ 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);
+ if (tracker->displayed_cursor)
+ {
+ 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);
+
+ if (cursor)
+ {
+ g_signal_connect (cursor, "texture-changed",
+ G_CALLBACK (cursor_texture_updated), tracker);
+ }
+
return TRUE;
}