[metacity] compositor-xrender: pass only visible surfaces to paint_windows
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] compositor-xrender: pass only visible surfaces to paint_windows
- Date: Tue, 22 Oct 2019 23:48:55 +0000 (UTC)
commit db76f8e249efff10c8295a1d2f94b0d890e9c9a0
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Wed Oct 23 01:14:36 2019 +0300
compositor-xrender: pass only visible surfaces to paint_windows
src/compositor/meta-compositor-xrender.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
---
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 5c0c22eb..64b8eaea 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -729,9 +729,6 @@ paint_dock_shadows (MetaCompositorXRender *xrender,
surface = META_SURFACE (l->data);
- if (!meta_surface_is_visible (surface))
- continue;
-
window = meta_surface_get_window (surface);
if (window->type == META_WINDOW_DOCK)
@@ -774,9 +771,6 @@ paint_windows (MetaCompositorXRender *xrender,
surface = META_SURFACE (index->data);
- if (!meta_surface_is_visible (surface))
- continue;
-
window = meta_surface_get_window (surface);
if (window->type == META_WINDOW_DESKTOP &&
@@ -823,9 +817,6 @@ paint_windows (MetaCompositorXRender *xrender,
surface = META_SURFACE (index->data);
surface_xrender = META_SURFACE_XRENDER (surface);
- if (!meta_surface_is_visible (surface))
- continue;
-
window = meta_surface_get_window (surface);
if (window->type != META_WINDOW_DOCK)
@@ -1117,6 +1108,8 @@ meta_compositor_xrender_redraw (MetaCompositor *compositor,
int screen_width;
int screen_height;
GList *stack;
+ GList *visible_stack;
+ GList *l;
xrender = META_COMPOSITOR_XRENDER (compositor);
@@ -1146,7 +1139,17 @@ meta_compositor_xrender_redraw (MetaCompositor *compositor,
}
stack = meta_compositor_get_stack (compositor);
- paint_windows (xrender, stack, xrender->root_buffer, all_damage);
+ visible_stack = NULL;
+
+ for (l = stack; l != NULL; l = l->next)
+ {
+ if (meta_surface_is_visible (META_SURFACE (l->data)))
+ visible_stack = g_list_prepend (visible_stack, l->data);
+ }
+
+ visible_stack = g_list_reverse (visible_stack);
+ paint_windows (xrender, visible_stack, xrender->root_buffer, all_damage);
+ g_list_free (visible_stack);
XFixesSetPictureClipRegion (xdisplay, xrender->root_buffer, 0, 0, all_damage);
XRenderComposite (xdisplay, PictOpSrc, xrender->root_buffer, None,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]