[metacity] compositor: stop handling CirculateNotify events
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] compositor: stop handling CirculateNotify events
- Date: Sun, 5 Mar 2017 23:39:54 +0000 (UTC)
commit 4dbfb187d8575b10908191e631f954db861a9762
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Mar 5 19:11:48 2017 +0200
compositor: stop handling CirculateNotify events
src/compositor/meta-compositor-none.c | 7 +++
src/compositor/meta-compositor-private.h | 3 +
src/compositor/meta-compositor-xrender.c | 74 +++++++++++++++++------------
src/compositor/meta-compositor.c | 5 ++
4 files changed, 58 insertions(+), 31 deletions(-)
---
diff --git a/src/compositor/meta-compositor-none.c b/src/compositor/meta-compositor-none.c
index 7fecf46..fe9ad69 100644
--- a/src/compositor/meta-compositor-none.c
+++ b/src/compositor/meta-compositor-none.c
@@ -127,6 +127,12 @@ meta_compositor_none_unmaximize_window (MetaCompositor *compositor,
{
}
+static void
+meta_compositor_none_sync_stack (MetaCompositor *compositor,
+ GList *stack)
+{
+}
+
static gboolean
meta_compositor_none_is_our_xwindow (MetaCompositor *compositor,
Window xwindow)
@@ -156,6 +162,7 @@ meta_compositor_none_class_init (MetaCompositorNoneClass *none_class)
compositor_class->end_move = meta_compositor_none_end_move;
compositor_class->maximize_window = meta_compositor_none_maximize_window;
compositor_class->unmaximize_window = meta_compositor_none_unmaximize_window;
+ compositor_class->sync_stack = meta_compositor_none_sync_stack;
compositor_class->is_our_xwindow = meta_compositor_none_is_our_xwindow;
}
diff --git a/src/compositor/meta-compositor-private.h b/src/compositor/meta-compositor-private.h
index 76aa9fe..5c7c42c 100644
--- a/src/compositor/meta-compositor-private.h
+++ b/src/compositor/meta-compositor-private.h
@@ -81,6 +81,9 @@ struct _MetaCompositorClass
void (* unmaximize_window) (MetaCompositor *compositor,
MetaWindow *window);
+ void (* sync_stack) (MetaCompositor *compositor,
+ GList *stack);
+
gboolean (* is_our_xwindow) (MetaCompositor *compositor,
Window xwindow);
};
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index d11258e..03064ee 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -2499,33 +2499,6 @@ resize_win (MetaCompositorXRender *xrender,
/* event processors must all be called with an error trap in place */
static void
-process_circulate_notify (MetaCompositorXRender *xrender,
- XCirculateEvent *event)
-{
- MetaCompWindow *cw = find_window (xrender, event->window);
- MetaCompWindow *top;
- GList *first;
- Window above;
-
- if (!cw)
- return;
-
- first = xrender->windows;
- top = (MetaCompWindow *) first->data;
-
- if ((event->place == PlaceOnTop) && top)
- above = top->id;
- else
- above = None;
-
- restack_win (xrender, cw, above);
-
- xrender->clip_changed = TRUE;
-
- add_repair (xrender);
-}
-
-static void
process_configure_notify (MetaCompositorXRender *xrender,
XConfigureEvent *event)
{
@@ -3131,10 +3104,6 @@ meta_compositor_xrender_process_event (MetaCompositor *compositor,
switch (event->type)
{
- case CirculateNotify:
- process_circulate_notify (xrender, (XCirculateEvent *) event);
- break;
-
case ConfigureNotify:
process_configure_notify (xrender, (XConfigureEvent *) event);
break;
@@ -3493,6 +3462,48 @@ meta_compositor_xrender_unmaximize_window (MetaCompositor *compositor,
cw->needs_shadow = window_has_shadow (xrender, cw);
}
+static void
+meta_compositor_xrender_sync_stack (MetaCompositor *compositor,
+ GList *stack)
+{
+ MetaCompositorXRender *xrender;
+ GList *tmp;
+
+ xrender = META_COMPOSITOR_XRENDER (compositor);
+
+ for (tmp = stack; tmp != NULL; tmp = tmp->next)
+ {
+ MetaWindow *window;
+ MetaFrame *frame;
+ Window xwindow;
+ MetaCompWindow *cw;
+
+ window = (MetaWindow *) tmp->data;
+ frame = meta_window_get_frame (window);
+
+ if (frame)
+ xwindow = meta_frame_get_xwindow (frame);
+ else
+ xwindow = meta_window_get_xwindow (window);
+
+ cw = find_window (xrender, xwindow);
+
+ if (cw == NULL)
+ {
+ g_warning ("Failed to find MetaCompWindow for MetaWindow %p", window);
+ continue;
+ }
+
+ xrender->windows = g_list_remove (xrender->windows, cw);
+ xrender->windows = g_list_prepend (xrender->windows, cw);
+ }
+
+ xrender->windows = g_list_reverse (xrender->windows);
+ xrender->clip_changed = TRUE;
+
+ add_repair (xrender);
+}
+
static gboolean
meta_compositor_xrender_is_our_xwindow (MetaCompositor *compositor,
Window xwindow)
@@ -3533,6 +3544,7 @@ meta_compositor_xrender_class_init (MetaCompositorXRenderClass *xrender_class)
compositor_class->end_move = meta_compositor_xrender_end_move;
compositor_class->maximize_window = meta_compositor_xrender_maximize_window;
compositor_class->unmaximize_window = meta_compositor_xrender_unmaximize_window;
+ compositor_class->sync_stack = meta_compositor_xrender_sync_stack;
compositor_class->is_our_xwindow = meta_compositor_xrender_is_our_xwindow;
}
diff --git a/src/compositor/meta-compositor.c b/src/compositor/meta-compositor.c
index 88c1caf..d6bfc87 100644
--- a/src/compositor/meta-compositor.c
+++ b/src/compositor/meta-compositor.c
@@ -352,6 +352,11 @@ void
meta_compositor_sync_stack (MetaCompositor *compositor,
GList *stack)
{
+ MetaCompositorClass *compositor_class;
+
+ compositor_class = META_COMPOSITOR_GET_CLASS (compositor);
+
+ compositor_class->sync_stack (compositor, stack);
}
gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]