From 025ab35af7c22f97d29539f3d1c6793c88fd9061 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 21 Nov 2013 17:45:05 -0500 Subject: [PATCH] surface-actor: Add setters for set_input_region / set_opaque_region Subsurfaces won't have a MetaWindow or MetaWindowActor to fetch these from, so they need to be tied directly to the MetaSurfaceActor. --- src/compositor/meta-surface-actor.c | 14 ++++++++++++++ src/compositor/meta-surface-actor.h | 4 ++++ src/compositor/meta-window-actor.c | 13 ++----------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/compositor/meta-surface-actor.c b/src/compositor/meta-surface-actor.c index af599607b..b046d239f 100644 --- a/src/compositor/meta-surface-actor.c +++ b/src/compositor/meta-surface-actor.c @@ -164,3 +164,17 @@ meta_surface_actor_set_texture (MetaSurfaceActor *self, { meta_shaped_texture_set_texture (self->priv->texture, texture); } + +void +meta_surface_actor_set_input_region (MetaSurfaceActor *self, + cairo_region_t *region) +{ + meta_shaped_texture_set_input_shape_region (self->priv->texture, region); +} + +void +meta_surface_actor_set_opaque_region (MetaSurfaceActor *self, + cairo_region_t *region) +{ + meta_shaped_texture_set_opaque_region (self->priv->texture, region); +} diff --git a/src/compositor/meta-surface-actor.h b/src/compositor/meta-surface-actor.h index 287b230a3..45284f6f2 100644 --- a/src/compositor/meta-surface-actor.h +++ b/src/compositor/meta-surface-actor.h @@ -57,6 +57,10 @@ void meta_surface_actor_set_texture (MetaSurfaceActor *self, CoglTexture *texture); void meta_surface_actor_attach_wayland_buffer (MetaSurfaceActor *self, MetaWaylandBuffer *buffer); +void meta_surface_actor_set_input_region (MetaSurfaceActor *self, + cairo_region_t *region); +void meta_surface_actor_set_opaque_region (MetaSurfaceActor *self, + cairo_region_t *region); G_END_DECLS diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 44ec25367..7a3b78653 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -2357,12 +2357,8 @@ meta_window_actor_update_input_region (MetaWindowActor *self, cairo_rectangle_int_t *client_area) { MetaWindowActorPrivate *priv = self->priv; - MetaShapedTexture *stex = meta_surface_actor_get_texture (priv->surface); cairo_region_t *region = NULL; - if (!stex) - return; - if (priv->window->frame != NULL && priv->window->input_region != NULL) { region = meta_frame_get_frame_bounds (priv->window->frame); @@ -2387,7 +2383,7 @@ meta_window_actor_update_input_region (MetaWindowActor *self, region = cairo_region_create_rectangle (client_area); } - meta_shaped_texture_set_input_shape_region (stex, region); + meta_surface_actor_set_input_region (priv->surface, region); cairo_region_destroy (region); } @@ -2395,13 +2391,8 @@ static void meta_window_actor_update_opaque_region (MetaWindowActor *self) { MetaWindowActorPrivate *priv = self->priv; - MetaShapedTexture *stex; cairo_region_t *opaque_region; - stex = meta_surface_actor_get_texture (priv->surface); - if (!stex) - return; - if (priv->argb32 && priv->window->opaque_region != NULL) { MetaFrameBorders borders; @@ -2427,7 +2418,7 @@ meta_window_actor_update_opaque_region (MetaWindowActor *self) else opaque_region = cairo_region_reference (priv->shape_region); - meta_shaped_texture_set_opaque_region (stex, opaque_region); + meta_surface_actor_set_opaque_region (priv->surface, opaque_region); cairo_region_destroy (opaque_region); }