summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-08-22 16:21:39 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-08-22 16:21:39 +0300
commit9949f5be1a170e6b158ba76a57554fb96d702242 (patch)
treeeb37b1e071853f8c2959cff1b49fc96c20ae6622
parent0ef46da1b9e9bea5c80b29a1819b04a64886e6ed (diff)
downloadmetacity-9949f5be1a170e6b158ba76a57554fb96d702242.tar.gz
compositor: add composited property
-rw-r--r--src/compositor/meta-compositor-none.c1
-rw-r--r--src/compositor/meta-compositor-private.h3
-rw-r--r--src/compositor/meta-compositor-vulkan.c1
-rw-r--r--src/compositor/meta-compositor-xrender.c1
-rw-r--r--src/compositor/meta-compositor.c39
5 files changed, 44 insertions, 1 deletions
diff --git a/src/compositor/meta-compositor-none.c b/src/compositor/meta-compositor-none.c
index 658c13df..e60dba5a 100644
--- a/src/compositor/meta-compositor-none.c
+++ b/src/compositor/meta-compositor-none.c
@@ -161,4 +161,5 @@ meta_compositor_none_class_init (MetaCompositorNoneClass *none_class)
static void
meta_compositor_none_init (MetaCompositorNone *none)
{
+ meta_compositor_set_composited (META_COMPOSITOR (none), FALSE);
}
diff --git a/src/compositor/meta-compositor-private.h b/src/compositor/meta-compositor-private.h
index c6dea493..87247b81 100644
--- a/src/compositor/meta-compositor-private.h
+++ b/src/compositor/meta-compositor-private.h
@@ -81,6 +81,9 @@ struct _MetaCompositorClass
void (* redraw) (MetaCompositor *compositor);
};
+void meta_compositor_set_composited (MetaCompositor *compositor,
+ gboolean composited);
+
gboolean meta_compositor_check_common_extensions (MetaCompositor *compositor,
GError **error);
diff --git a/src/compositor/meta-compositor-vulkan.c b/src/compositor/meta-compositor-vulkan.c
index 62fd840c..09883afa 100644
--- a/src/compositor/meta-compositor-vulkan.c
+++ b/src/compositor/meta-compositor-vulkan.c
@@ -1409,4 +1409,5 @@ meta_compositor_vulkan_class_init (MetaCompositorVulkanClass *vulkan_class)
static void
meta_compositor_vulkan_init (MetaCompositorVulkan *vulkan)
{
+ meta_compositor_set_composited (META_COMPOSITOR (vulkan), TRUE);
}
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 542d5d52..284dbdcf 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -3146,4 +3146,5 @@ meta_compositor_xrender_class_init (MetaCompositorXRenderClass *xrender_class)
static void
meta_compositor_xrender_init (MetaCompositorXRender *xrender)
{
+ meta_compositor_set_composited (META_COMPOSITOR (xrender), TRUE);
}
diff --git a/src/compositor/meta-compositor.c b/src/compositor/meta-compositor.c
index a83c3ae7..be518911 100644
--- a/src/compositor/meta-compositor.c
+++ b/src/compositor/meta-compositor.c
@@ -33,6 +33,8 @@ typedef struct
{
MetaDisplay *display;
+ gboolean composited;
+
/* _NET_WM_CM_Sn */
Atom cm_atom;
Window cm_window;
@@ -54,6 +56,8 @@ enum
PROP_DISPLAY,
+ PROP_COMPOSITED,
+
LAST_PROP
};
@@ -171,6 +175,10 @@ meta_compositor_get_property (GObject *object,
g_value_set_pointer (value, priv->display);
break;
+ case PROP_COMPOSITED:
+ g_value_set_boolean (value, priv->composited);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -195,6 +203,10 @@ meta_compositor_set_property (GObject *object,
priv->display = g_value_get_pointer (value);
break;
+ case PROP_COMPOSITED:
+ g_assert_not_reached ();
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -209,6 +221,11 @@ install_properties (GObjectClass *object_class)
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS);
+ properties[PROP_COMPOSITED] =
+ g_param_spec_boolean ("composited", "composited", "composited",
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, LAST_PROP, properties);
}
@@ -463,7 +480,27 @@ meta_compositor_is_our_xwindow (MetaCompositor *compositor,
gboolean
meta_compositor_is_composited (MetaCompositor *compositor)
{
- return !META_IS_COMPOSITOR_NONE (compositor);
+ MetaCompositorPrivate *priv;
+
+ priv = meta_compositor_get_instance_private (compositor);
+
+ return priv->composited;
+}
+
+void
+meta_compositor_set_composited (MetaCompositor *compositor,
+ gboolean composited)
+{
+ MetaCompositorPrivate *priv;
+
+ priv = meta_compositor_get_instance_private (compositor);
+
+ if (priv->composited == composited)
+ return;
+
+ priv->composited = composited;
+
+ g_object_notify_by_pspec (G_OBJECT (compositor), properties[PROP_COMPOSITED]);
}
gboolean