From dfde1ff327bbfa0422362de04068d6de1c7d93af Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 26 Sep 2014 18:52:30 +0200 Subject: [PATCH] stage: Add overlay for the DnD surface This will be rendered similarly to the pointer cursor. --- src/backends/meta-stage.c | 17 +++++++++++++++++ src/backends/meta-stage.h | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c index e304441f7..c0cbd7637 100644 --- a/src/backends/meta-stage.c +++ b/src/backends/meta-stage.c @@ -40,6 +40,7 @@ typedef struct { } MetaOverlay; struct _MetaStagePrivate { + MetaOverlay dnd_overlay; MetaOverlay cursor_overlay; }; typedef struct _MetaStagePrivate MetaStagePrivate; @@ -112,6 +113,7 @@ meta_stage_finalize (GObject *object) MetaStage *stage = META_STAGE (object); MetaStagePrivate *priv = meta_stage_get_instance_private (stage); + meta_overlay_free (&priv->dnd_overlay); meta_overlay_free (&priv->cursor_overlay); } @@ -123,6 +125,7 @@ meta_stage_paint (ClutterActor *actor) CLUTTER_ACTOR_CLASS (meta_stage_parent_class)->paint (actor); + meta_overlay_paint (&priv->dnd_overlay); meta_overlay_paint (&priv->cursor_overlay); } @@ -142,6 +145,7 @@ meta_stage_init (MetaStage *stage) { MetaStagePrivate *priv = meta_stage_get_instance_private (stage); + meta_overlay_init (&priv->dnd_overlay); meta_overlay_init (&priv->cursor_overlay); clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), FALSE); @@ -183,6 +187,19 @@ queue_redraw_for_overlay (MetaStage *stage, } } +void +meta_stage_set_dnd_surface (MetaStage *stage, + CoglTexture *texture, + MetaRectangle *rect) +{ + MetaStagePrivate *priv = meta_stage_get_instance_private (stage); + + g_assert (meta_is_wayland_compositor ()); + + meta_overlay_set (&priv->dnd_overlay, texture, rect); + queue_redraw_for_overlay (stage, &priv->dnd_overlay); +} + void meta_stage_set_cursor (MetaStage *stage, CoglTexture *texture, diff --git a/src/backends/meta-stage.h b/src/backends/meta-stage.h index 742d14fa4..572530d51 100644 --- a/src/backends/meta-stage.h +++ b/src/backends/meta-stage.h @@ -51,6 +51,10 @@ GType meta_stage_get_type (void) G_GNUC_CONST; ClutterActor *meta_stage_new (void); +void meta_stage_set_dnd_surface (MetaStage *stage, + CoglTexture *texture, + MetaRectangle *rect); + void meta_stage_set_cursor (MetaStage *stage, CoglTexture *texture, MetaRectangle *rect);