[metacity] compositor-xrender: move shaded_surface to MetaSurface
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] compositor-xrender: move shaded_surface to MetaSurface
- Date: Fri, 18 Oct 2019 16:43:59 +0000 (UTC)
commit c07a7688cfca7eef26b546479abf2da5f2de6db3
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Fri Oct 18 16:52:01 2019 +0300
compositor-xrender: move shaded_surface to MetaSurface
src/compositor/meta-compositor-xrender.c | 53 +---------------------
src/compositor/meta-surface.c | 77 +++++++++++++++++++++++++-------
2 files changed, 63 insertions(+), 67 deletions(-)
---
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 72680c2e..b3cfc1d5 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -104,12 +104,6 @@ typedef struct _MetaCompWindow
int shadow_dy;
int shadow_width;
int shadow_height;
-
- /* This is a copy of the original unshaded window so that we can still see
- * what the window looked like when it is needed for the _get_window_surface
- * function.
- */
- cairo_surface_t *shaded_surface;
} MetaCompWindow;
struct _MetaCompositorXRender
@@ -1282,15 +1276,7 @@ free_win (MetaCompWindow *cw,
}
if (destroy)
- {
- if (cw->shaded_surface != NULL)
- {
- cairo_surface_destroy (cw->shaded_surface);
- cw->shaded_surface = NULL;
- }
-
- g_free (cw);
- }
+ g_free (cw);
meta_error_trap_pop (display);
}
@@ -1407,25 +1393,6 @@ notify_decorated_cb (MetaWindow *window,
add_repair (xrender);
}
-static void
-notify_shaded_cb (MetaWindow *window,
- GParamSpec *pspec,
- MetaSurface *surface)
-{
- MetaCompWindow *cw;
-
- cw = g_object_get_data (G_OBJECT (surface), "cw");
-
- if (cw->shaded_surface != NULL)
- {
- cairo_surface_destroy (cw->shaded_surface);
- cw->shaded_surface = NULL;
- }
-
- if (meta_window_is_shaded (cw->window))
- cw->shaded_surface = meta_surface_get_image (surface);
-}
-
/* event processors must all be called with an error trap in place */
static void
process_property_notify (MetaCompositorXRender *xrender,
@@ -1741,10 +1708,6 @@ meta_compositor_xrender_add_window (MetaCompositor *compositor,
G_CALLBACK (notify_decorated_cb),
xrender, 0);
- g_signal_connect_object (window, "notify::shaded",
- G_CALLBACK (notify_shaded_cb),
- surface, 0);
-
cw->damaged = FALSE;
cw->extents = None;
@@ -1759,8 +1722,6 @@ meta_compositor_xrender_add_window (MetaCompositor *compositor,
else
cw->shadow_type = META_SHADOW_MEDIUM;
- cw->shaded_surface = NULL;
-
determine_mode (xrender, cw);
cw->needs_shadow = window_has_shadow (xrender, cw);
@@ -1912,18 +1873,6 @@ static cairo_surface_t *
meta_compositor_xrender_get_window_surface (MetaCompositor *compositor,
MetaSurface *surface)
{
- MetaCompWindow *cw;
-
- cw = g_object_get_data (G_OBJECT (surface), "cw");
-
- if (meta_window_is_shaded (cw->window))
- {
- if (cw->shaded_surface != NULL)
- return cairo_surface_reference (cw->shaded_surface);
- else
- return NULL;
- }
-
return meta_surface_get_image (surface);
}
diff --git a/src/compositor/meta-surface.c b/src/compositor/meta-surface.c
index ca976e36..1ea15c45 100644
--- a/src/compositor/meta-surface.c
+++ b/src/compositor/meta-surface.c
@@ -28,27 +28,33 @@
typedef struct
{
- MetaCompositor *compositor;
- MetaWindow *window;
+ MetaCompositor *compositor;
+ MetaWindow *window;
- MetaDisplay *display;
- Display *xdisplay;
+ MetaDisplay *display;
+ Display *xdisplay;
- Damage damage;
- gboolean damage_received;
+ Damage damage;
+ gboolean damage_received;
- Pixmap pixmap;
+ Pixmap pixmap;
- int x;
- int y;
- int width;
- int height;
+ int x;
+ int y;
+ int width;
+ int height;
- XserverRegion shape_region;
- gboolean shape_region_changed;
+ XserverRegion shape_region;
+ gboolean shape_region_changed;
- XserverRegion opaque_region;
- gboolean opaque_region_changed;
+ XserverRegion opaque_region;
+ gboolean opaque_region_changed;
+
+ /* This is a copy of the original unshaded window so that we can still see
+ * what the window looked like when it is needed for the _get_window_surface
+ * function.
+ */
+ cairo_surface_t *shaded_surface;
} MetaSurfacePrivate;
enum
@@ -307,6 +313,25 @@ notify_decorated_cb (MetaWindow *window,
create_damage (self);
}
+static void
+notify_shaded_cb (MetaWindow *window,
+ GParamSpec *pspec,
+ MetaSurface *self)
+{
+ MetaSurfacePrivate *priv;
+
+ priv = meta_surface_get_instance_private (self);
+
+ if (priv->shaded_surface != NULL)
+ {
+ cairo_surface_destroy (priv->shaded_surface);
+ priv->shaded_surface = NULL;
+ }
+
+ if (meta_window_is_shaded (priv->window))
+ priv->shaded_surface = META_SURFACE_GET_CLASS (self)->get_image (self);
+}
+
static void
meta_surface_constructed (GObject *object)
{
@@ -327,6 +352,10 @@ meta_surface_constructed (GObject *object)
g_signal_connect_object (priv->window, "notify::decorated",
G_CALLBACK (notify_decorated_cb),
self, 0);
+
+ g_signal_connect_object (priv->window, "notify::shaded",
+ G_CALLBACK (notify_shaded_cb),
+ self, 0);
}
static void
@@ -362,6 +391,12 @@ meta_surface_finalize (GObject *object)
priv->opaque_region = None;
}
+ if (priv->shaded_surface != NULL)
+ {
+ cairo_surface_destroy (priv->shaded_surface);
+ priv->shaded_surface = NULL;
+ }
+
G_OBJECT_CLASS (meta_surface_parent_class)->finalize (object);
}
@@ -555,6 +590,18 @@ meta_surface_get_shape_region (MetaSurface *self)
cairo_surface_t *
meta_surface_get_image (MetaSurface *self)
{
+ MetaSurfacePrivate *priv;
+
+ priv = meta_surface_get_instance_private (self);
+
+ if (meta_window_is_shaded (priv->window))
+ {
+ if (priv->shaded_surface != NULL)
+ return cairo_surface_reference (priv->shaded_surface);
+ else
+ return NULL;
+ }
+
return META_SURFACE_GET_CLASS (self)->get_image (self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]