[metacity] compositor-xrender: use window-type property
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] compositor-xrender: use window-type property
- Date: Sun, 20 Oct 2019 12:28:43 +0000 (UTC)
commit d2cae232b3472a08559e4ef7ad9c2255df63fdc7
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sat Oct 19 19:14:27 2019 +0300
compositor-xrender: use window-type property
src/compositor/meta-compositor-xrender.c | 47 ++++++++++++++++++++++++--------
1 file changed, 36 insertions(+), 11 deletions(-)
---
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 8b5ace43..009a93e8 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -1278,6 +1278,38 @@ notify_decorated_cb (MetaWindow *window,
meta_compositor_queue_redraw (compositor);
}
+static void
+notify_window_type_cb (MetaWindow *window,
+ GParamSpec *pspec,
+ MetaCompositorXRender *xrender)
+{
+ MetaCompositor *compositor;
+ MetaCompWindow *cw;
+
+ compositor = META_COMPOSITOR (xrender);
+ cw = find_comp_window_by_window (xrender, window);
+
+ if (cw == NULL)
+ return;
+
+ if (cw->extents != None)
+ {
+ meta_compositor_add_damage (compositor, "notify_window_type_cb", cw->extents);
+ XFixesDestroyRegion (xrender->xdisplay, cw->extents);
+ cw->extents = None;
+ }
+
+ if (cw->shadow != None)
+ {
+ XRenderFreePicture (xrender->xdisplay, cw->shadow);
+ cw->shadow = None;
+ }
+
+ cw->needs_shadow = window_has_shadow (xrender, cw);
+
+ meta_compositor_queue_redraw (compositor);
+}
+
/* event processors must all be called with an error trap in place */
static void
process_property_notify (MetaCompositorXRender *xrender,
@@ -1308,17 +1340,6 @@ process_property_notify (MetaCompositorXRender *xrender,
return;
}
}
-
- if (event->atom == display->atom__NET_WM_WINDOW_TYPE)
- {
- MetaCompWindow *cw = find_comp_window_by_xwindow (xrender, event->window);
-
- if (!cw)
- return;
-
- cw->needs_shadow = window_has_shadow (xrender, cw);
- return;
- }
}
static void
@@ -1577,6 +1598,10 @@ meta_compositor_xrender_add_window (MetaCompositor *compositor,
G_CALLBACK (notify_decorated_cb),
xrender, 0);
+ g_signal_connect_object (window, "notify::window-type",
+ G_CALLBACK (notify_window_type_cb),
+ xrender, 0);
+
cw->extents = None;
cw->shadow = None;
cw->shadow_dx = 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]