summaryrefslogtreecommitdiff
path: root/src/backends/meta-cursor.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/meta-cursor.c')
-rw-r--r--src/backends/meta-cursor.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/backends/meta-cursor.c b/src/backends/meta-cursor.c
index a0abd9cd6..539d037fe 100644
--- a/src/backends/meta-cursor.c
+++ b/src/backends/meta-cursor.c
@@ -45,6 +45,9 @@ typedef struct _MetaCursorSpritePrivate
float texture_scale;
MetaMonitorTransform texture_transform;
int hot_x, hot_y;
+
+ MetaCursorPrepareFunc prepare_func;
+ gpointer prepare_func_data;
} MetaCursorSpritePrivate;
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MetaCursorSprite,
@@ -188,12 +191,28 @@ meta_cursor_sprite_get_texture_transform (MetaCursorSprite *sprite)
}
void
+meta_cursor_sprite_set_prepare_func (MetaCursorSprite *sprite,
+ MetaCursorPrepareFunc func,
+ gpointer user_data)
+{
+ MetaCursorSpritePrivate *priv =
+ meta_cursor_sprite_get_instance_private (sprite);
+
+ priv->prepare_func = func;
+ priv->prepare_func_data = user_data;
+}
+
+void
meta_cursor_sprite_prepare_at (MetaCursorSprite *sprite,
float best_scale,
int x,
int y)
{
- g_signal_emit (sprite, signals[PREPARE_AT], 0, best_scale, x, y);
+ MetaCursorSpritePrivate *priv =
+ meta_cursor_sprite_get_instance_private (sprite);
+
+ if (priv->prepare_func)
+ priv->prepare_func (sprite, best_scale, x, y, priv->prepare_func_data);
}
gboolean