[metacity] compositor: stop using meta_screen_get_compositor_data
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] compositor: stop using meta_screen_get_compositor_data
- Date: Fri, 3 Mar 2017 18:47:53 +0000 (UTC)
commit 2848989c282a4bf44a77193aba87dff050c25c37
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Fri Mar 3 18:15:28 2017 +0200
compositor: stop using meta_screen_get_compositor_data
src/compositor/meta-compositor-xrender.c | 296 +++++++++++++++---------------
1 files changed, 151 insertions(+), 145 deletions(-)
---
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index defb18b..474cc9c 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -190,6 +190,8 @@ struct _MetaCompositorXRender
{
MetaCompositor parent;
+ MetaCompScreen *info;
+
#ifdef USE_IDLE_REPAINT
guint repaint_id;
#endif
@@ -425,14 +427,14 @@ generate_shadows (MetaCompScreen *info)
}
static XImage *
-make_shadow (MetaDisplay *display,
- MetaScreen *screen,
- MetaShadowType shadow_type,
- double opacity,
- int width,
- int height)
-{
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+make_shadow (MetaCompositorXRender *xrender,
+ MetaDisplay *display,
+ MetaScreen *screen,
+ MetaShadowType shadow_type,
+ double opacity,
+ int width,
+ int height)
+{
Display *xdisplay = meta_display_get_xdisplay (display);
XImage *ximage;
guchar *data;
@@ -447,12 +449,12 @@ make_shadow (MetaDisplay *display,
int opacity_int = (int)(opacity * 25);
int screen_number = meta_screen_get_screen_number (screen);
- if (info==NULL)
+ if (xrender->info == NULL)
{
return NULL;
}
- shad = info->shadows[shadow_type];
+ shad = xrender->info->shadows[shadow_type];
msize = shad->gaussian_map->size;
swidth = width + msize;
sheight = height + msize;
@@ -672,15 +674,16 @@ shadow_picture_clip (Display *xdisplay,
}
static Picture
-shadow_picture (MetaDisplay *display,
- MetaScreen *screen,
- MetaCompWindow *cw,
- double opacity,
- MetaFrameBorders borders,
- int width,
- int height,
- int *wp,
- int *hp)
+shadow_picture (MetaCompositorXRender *xrender,
+ MetaDisplay *display,
+ MetaScreen *screen,
+ MetaCompWindow *cw,
+ double opacity,
+ MetaFrameBorders borders,
+ int width,
+ int height,
+ int *wp,
+ int *hp)
{
Display *xdisplay = meta_display_get_xdisplay (display);
XImage *shadow_image;
@@ -689,7 +692,7 @@ shadow_picture (MetaDisplay *display,
Window xroot = meta_screen_get_xroot (screen);
GC gc;
- shadow_image = make_shadow (display, screen, cw->shadow_type,
+ shadow_image = make_shadow (xrender, display, screen, cw->shadow_type,
opacity, width, height);
if (!shadow_image)
return None;
@@ -737,10 +740,11 @@ shadow_picture (MetaDisplay *display,
}
static MetaCompWindow *
-find_window_for_screen (MetaScreen *screen,
- Window xwindow)
+find_window_for_screen (MetaCompositorXRender *xrender,
+ MetaScreen *screen,
+ Window xwindow)
{
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
if (info == NULL)
return NULL;
@@ -749,14 +753,15 @@ find_window_for_screen (MetaScreen *screen,
}
static MetaCompWindow *
-find_window_in_display (MetaDisplay *display,
- Window xwindow)
+find_window_in_display (MetaCompositorXRender *xrender,
+ MetaDisplay *display,
+ Window xwindow)
{
MetaScreen *screen;
MetaCompWindow *cw;
screen = meta_display_get_screen (display);
- cw = find_window_for_screen (screen, xwindow);
+ cw = find_window_for_screen (xrender, screen, xwindow);
if (cw != NULL)
return cw;
@@ -765,8 +770,9 @@ find_window_in_display (MetaDisplay *display,
}
static MetaCompWindow *
-find_window_for_child_window_in_display (MetaDisplay *display,
- Window xwindow)
+find_window_for_child_window_in_display (MetaCompositorXRender *xrender,
+ MetaDisplay *display,
+ Window xwindow)
{
Window ignored1, *ignored2;
Window parent;
@@ -776,7 +782,7 @@ find_window_for_child_window_in_display (MetaDisplay *display,
&parent, &ignored2, &ignored_children);
if (parent != None)
- return find_window_in_display (display, parent);
+ return find_window_in_display (xrender, display, parent);
return NULL;
}
@@ -941,18 +947,18 @@ root_tile (MetaScreen *screen)
}
static Picture
-create_root_buffer (MetaScreen *screen)
+create_root_buffer (MetaCompositorXRender *xrender,
+ MetaScreen *screen)
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
Picture pict;
XRenderPictFormat *format;
Pixmap root_pixmap;
Visual *visual;
int depth, screen_width, screen_height, screen_number;
- if (info == NULL)
+ if (xrender->info == NULL)
{
return None;
}
@@ -965,7 +971,7 @@ create_root_buffer (MetaScreen *screen)
format = XRenderFindVisualFormat (xdisplay, visual);
g_return_val_if_fail (format != NULL, None);
- root_pixmap = XCreatePixmap (xdisplay, info->output,
+ root_pixmap = XCreatePixmap (xdisplay, xrender->info->output,
screen_width, screen_height, depth);
g_return_val_if_fail (root_pixmap != None, None);
@@ -976,12 +982,13 @@ create_root_buffer (MetaScreen *screen)
}
static void
-paint_root (MetaScreen *screen,
- Picture root_buffer)
+paint_root (MetaCompositorXRender *xrender,
+ MetaScreen *screen,
+ Picture root_buffer)
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
int width, height;
if (info == NULL)
@@ -1003,11 +1010,10 @@ paint_root (MetaScreen *screen,
}
static gboolean
-window_has_shadow (MetaCompWindow *cw)
+window_has_shadow (MetaCompositorXRender *xrender,
+ MetaCompWindow *cw)
{
- MetaCompScreen *info = meta_screen_get_compositor_data (cw->screen);
-
- if (info == NULL || info->have_shadows == FALSE)
+ if (xrender->info == NULL || xrender->info->have_shadows == FALSE)
return FALSE;
/* Always put a shadow around windows with a frame. This should override
@@ -1086,7 +1092,8 @@ window_has_shadow (MetaCompWindow *cw)
static XserverRegion
-win_extents (MetaCompWindow *cw)
+win_extents (MetaCompositorXRender *xrender,
+ MetaCompWindow *cw)
{
MetaScreen *screen = cw->screen;
MetaDisplay *display = meta_screen_get_display (screen);
@@ -1125,7 +1132,7 @@ win_extents (MetaCompWindow *cw)
if (cw->opacity != (guint) OPAQUE)
opacity = opacity * ((double) cw->opacity) / ((double) OPAQUE);
- cw->shadow = shadow_picture (display, screen, cw, opacity, borders,
+ cw->shadow = shadow_picture (xrender, display, screen, cw, opacity, borders,
cw->attrs.width - invisible_width + cw->attrs.border_width * 2,
cw->attrs.height - invisible_height + cw->attrs.border_width * 2,
&cw->shadow_width, &cw->shadow_height);
@@ -1433,13 +1440,14 @@ get_window_mask (MetaCompWindow *cw)
}
static void
-paint_dock_shadows (MetaScreen *screen,
- Picture root_buffer,
- XserverRegion region)
+paint_dock_shadows (MetaCompositorXRender *xrender,
+ MetaScreen *screen,
+ Picture root_buffer,
+ XserverRegion region)
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
GSList *d;
if (info == NULL)
@@ -1472,13 +1480,14 @@ paint_dock_shadows (MetaScreen *screen,
}
static void
-paint_windows (MetaScreen *screen,
- GList *windows,
- Picture root_buffer,
- XserverRegion region)
+paint_windows (MetaCompositorXRender *xrender,
+ MetaScreen *screen,
+ GList *windows,
+ Picture root_buffer,
+ XserverRegion region)
{
MetaDisplay *display = meta_screen_get_display (screen);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
Display *xdisplay = meta_display_get_xdisplay (display);
GList *index, *last;
int screen_width, screen_height;
@@ -1586,7 +1595,7 @@ paint_windows (MetaScreen *screen,
cw->client_region = get_client_region (cw);
if (cw->extents == None)
- cw->extents = win_extents (cw);
+ cw->extents = win_extents (xrender, cw);
if (cw->mode == WINDOW_SOLID)
{
@@ -1636,10 +1645,11 @@ paint_windows (MetaScreen *screen,
}
XFixesSetPictureClipRegion (xdisplay, root_buffer, 0, 0, paint_region);
- paint_root (screen, root_buffer);
+ paint_root (xrender, screen, root_buffer);
+
+ paint_dock_shadows (xrender, screen, root_buffer,
+ desktop_region == None ? paint_region : desktop_region);
- paint_dock_shadows (screen, root_buffer, desktop_region == None ?
- paint_region : desktop_region);
if (desktop_region != None)
XFixesDestroyRegion (xdisplay, desktop_region);
@@ -1752,7 +1762,7 @@ paint_all (MetaCompositorXRender *xrender,
MetaScreen *screen,
XserverRegion region)
{
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
int screen_width, screen_height;
@@ -1782,9 +1792,9 @@ paint_all (MetaCompositorXRender *xrender,
}
if (info->root_buffer == None)
- info->root_buffer = create_root_buffer (screen);
+ info->root_buffer = create_root_buffer (xrender, screen);
- paint_windows (screen, info->windows, info->root_buffer, region);
+ paint_windows (xrender, screen, info->windows, info->root_buffer, region);
XFixesSetPictureClipRegion (xdisplay, info->root_buffer, 0, 0, region);
XRenderComposite (xdisplay, PictOpSrc, info->root_buffer, None,
@@ -1796,7 +1806,7 @@ static void
repair_screen (MetaCompositorXRender *xrender,
MetaScreen *screen)
{
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
@@ -1868,7 +1878,7 @@ add_damage (MetaCompositorXRender *xrender,
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
/* dump_xserver_region (xrender, "add_damage", damage); */
@@ -1921,7 +1931,7 @@ repair_win (MetaCompositorXRender *xrender,
if (!cw->damaged)
{
- parts = win_extents (cw);
+ parts = win_extents (xrender, cw);
XDamageSubtract (xdisplay, cw->damage, None, None);
}
else
@@ -1941,12 +1951,13 @@ repair_win (MetaCompositorXRender *xrender,
}
static void
-free_win (MetaCompWindow *cw,
- gboolean destroy)
+free_win (MetaCompositorXRender *xrender,
+ MetaCompWindow *cw,
+ gboolean destroy)
{
MetaDisplay *display = meta_screen_get_display (cw->screen);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (cw->screen);
+ MetaCompScreen *info = xrender->info;
meta_error_trap_push (display);
@@ -2055,11 +2066,12 @@ free_win (MetaCompWindow *cw,
}
static void
-map_win (MetaDisplay *display,
- MetaScreen *screen,
- Window id)
+map_win (MetaCompositorXRender *xrender,
+ MetaDisplay *display,
+ MetaScreen *screen,
+ Window id)
{
- MetaCompWindow *cw = find_window_for_screen (screen, id);
+ MetaCompWindow *cw = find_window_for_screen (xrender, screen, id);
Display *xdisplay = meta_display_get_xdisplay (display);
if (cw == NULL)
@@ -2113,8 +2125,8 @@ unmap_win (MetaCompositorXRender *xrender,
MetaScreen *screen,
Window id)
{
- MetaCompWindow *cw = find_window_for_screen (screen, id);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompWindow *cw = find_window_for_screen (xrender, screen, id);
+ MetaCompScreen *info = xrender->info;
if (cw == NULL || info == NULL)
{
@@ -2134,7 +2146,7 @@ unmap_win (MetaCompositorXRender *xrender,
cw->extents = None;
}
- free_win (cw, FALSE);
+ free_win (xrender, cw, FALSE);
info->clip_changed = TRUE;
}
@@ -2260,7 +2272,7 @@ add_win (MetaCompositorXRender *xrender,
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
MetaCompWindow *cw;
gulong event_mask;
@@ -2271,7 +2283,7 @@ add_win (MetaCompositorXRender *xrender,
return;
/* If already added, ignore */
- if (find_window_for_screen (screen, xwindow) != NULL)
+ if (find_window_for_screen (xrender, screen, xwindow) != NULL)
return;
cw = g_new0 (MetaCompWindow, 1);
@@ -2339,7 +2351,7 @@ add_win (MetaCompositorXRender *xrender,
cw->shaded.client_region = None;
determine_mode (xrender, screen, cw);
- cw->needs_shadow = window_has_shadow (cw);
+ cw->needs_shadow = window_has_shadow (xrender, cw);
/* Only add the window to the list of docks if it needs a shadow */
if (cw->type == META_COMP_WINDOW_DOCK && cw->needs_shadow)
@@ -2354,7 +2366,7 @@ add_win (MetaCompositorXRender *xrender,
g_hash_table_insert (info->windows_by_xid, (gpointer) xwindow, cw);
if (cw->attrs.map_state == IsViewable)
- map_win (display, screen, xwindow);
+ map_win (xrender, display, screen, xwindow);
}
static void
@@ -2369,7 +2381,7 @@ destroy_win (MetaCompositorXRender *xrender,
compositor = META_COMPOSITOR (xrender);
display = meta_compositor_get_display (compositor);
- cw = find_window_in_display (display, xwindow);
+ cw = find_window_in_display (xrender, display, xwindow);
if (cw == NULL)
return;
@@ -2383,27 +2395,26 @@ destroy_win (MetaCompositorXRender *xrender,
cw->extents = None;
}
- info = meta_screen_get_compositor_data (screen);
+ info = xrender->info;
if (info != NULL)
{
info->windows = g_list_remove (info->windows, (gconstpointer) cw);
g_hash_table_remove (info->windows_by_xid, (gpointer) xwindow);
}
- free_win (cw, TRUE);
+ free_win (xrender, cw, TRUE);
}
static void
-restack_win (MetaCompWindow *cw,
- Window above)
+restack_win (MetaCompositorXRender *xrender,
+ MetaCompWindow *cw,
+ Window above)
{
- MetaScreen *screen;
MetaCompScreen *info;
Window previous_above;
GList *sibling, *next;
- screen = cw->screen;
- info = meta_screen_get_compositor_data (screen);
+ info = xrender->info;
if (info == NULL)
{
@@ -2460,7 +2471,6 @@ resize_win (MetaCompositorXRender *xrender,
MetaScreen *screen = cw->screen;
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
XserverRegion damage;
XserverRegion shape;
@@ -2587,7 +2597,7 @@ resize_win (MetaCompositorXRender *xrender,
if (cw->extents)
XFixesDestroyRegion (xdisplay, cw->extents);
- cw->extents = win_extents (cw);
+ cw->extents = win_extents (xrender, cw);
if (damage)
{
@@ -2609,9 +2619,9 @@ resize_win (MetaCompositorXRender *xrender,
dump_xserver_region (xrender, "resize_win", damage);
add_damage (xrender, screen, damage);
- if (info != NULL)
+ if (xrender->info != NULL)
{
- info->clip_changed = TRUE;
+ xrender->info->clip_changed = TRUE;
}
}
@@ -2622,18 +2632,16 @@ process_circulate_notify (MetaCompositorXRender *xrender,
{
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
MetaCompWindow *top;
MetaCompScreen *info;
- MetaScreen *screen;
GList *first;
Window above;
if (!cw)
return;
- screen = cw->screen;
- info = meta_screen_get_compositor_data (screen);
+ info = xrender->info;
first = info->windows;
top = (MetaCompWindow *) first->data;
@@ -2641,7 +2649,8 @@ process_circulate_notify (MetaCompositorXRender *xrender,
above = top->id;
else
above = None;
- restack_win (cw, above);
+
+ restack_win (xrender, cw, above);
if (info != NULL)
{
@@ -2660,7 +2669,7 @@ process_configure_notify (MetaCompositorXRender *xrender,
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
Display *xdisplay = meta_display_get_xdisplay (display);
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
if (cw)
{
@@ -2673,7 +2682,7 @@ process_configure_notify (MetaCompositorXRender *xrender,
event->x, event->y, event->width, event->height);
}
- restack_win (cw, event->above);
+ restack_win (xrender, cw, event->above);
resize_win (xrender, cw, event->x, event->y, event->width, event->height,
event->border_width, event->override_redirect);
}
@@ -2687,7 +2696,7 @@ process_configure_notify (MetaCompositorXRender *xrender,
if (screen == NULL)
return;
- info = meta_screen_get_compositor_data (screen);
+ info = xrender->info;
if (info != NULL && info->root_buffer)
{
XRenderFreePicture (xdisplay, info->root_buffer);
@@ -2720,7 +2729,7 @@ process_property_notify (MetaCompositorXRender *xrender,
screen = meta_display_screen_for_root (display, event->window);
if (screen)
{
- MetaCompScreen *info = meta_screen_get_compositor_data (screen);
+ MetaCompScreen *info = xrender->info;
Window xroot = meta_screen_get_xroot (screen);
if (info != NULL && info->root_tile)
@@ -2745,7 +2754,7 @@ process_property_notify (MetaCompositorXRender *xrender,
/* Check for the opacity changing */
if (event->atom == display->atom__NET_WM_WINDOW_OPACITY)
{
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
gulong value;
if (!cw)
@@ -2753,7 +2762,7 @@ process_property_notify (MetaCompositorXRender *xrender,
/* Applications can set this for their toplevel windows, so
* this must be propagated to the window managed by the compositor
*/
- cw = find_window_for_child_window_in_display (display, event->window);
+ cw = find_window_for_child_window_in_display (xrender, display, event->window);
}
if (!cw)
@@ -2766,7 +2775,7 @@ process_property_notify (MetaCompositorXRender *xrender,
cw->opacity = (guint)value;
determine_mode (xrender, cw->screen, cw);
- cw->needs_shadow = window_has_shadow (cw);
+ cw->needs_shadow = window_has_shadow (xrender, cw);
if (cw->shadow)
{
@@ -2776,7 +2785,7 @@ process_property_notify (MetaCompositorXRender *xrender,
if (cw->extents)
XFixesDestroyRegion (xdisplay, cw->extents);
- cw->extents = win_extents (cw);
+ cw->extents = win_extents (xrender, cw);
cw->damaged = TRUE;
#ifdef USE_IDLE_REPAINT
@@ -2787,13 +2796,13 @@ process_property_notify (MetaCompositorXRender *xrender,
}
if (event->atom == display->atom__NET_WM_WINDOW_TYPE) {
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
if (!cw)
return;
get_window_type (display, cw);
- cw->needs_shadow = window_has_shadow (cw);
+ cw->needs_shadow = window_has_shadow (xrender, cw);
return;
}
}
@@ -2821,7 +2830,7 @@ process_expose (MetaCompositorXRender *xrender,
{
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
MetaScreen *screen = NULL;
XRectangle rect[1];
int origin_x = 0, origin_y = 0;
@@ -2861,7 +2870,7 @@ process_unmap (MetaCompositorXRender *xrender,
return;
}
- cw = find_window_in_display (display, event->window);
+ cw = find_window_in_display (xrender, display, event->window);
if (cw)
unmap_win (xrender, cw->screen, event->window);
}
@@ -2872,10 +2881,10 @@ process_map (MetaCompositorXRender *xrender,
{
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
if (cw)
- map_win (display, cw->screen, event->window);
+ map_win (xrender, display, cw->screen, event->window);
}
static void
@@ -2911,7 +2920,7 @@ process_create (MetaCompositorXRender *xrender,
if (screen == NULL)
return;
- if (!find_window_in_display (display, event->window))
+ if (!find_window_in_display (xrender, display, event->window))
add_win (xrender, screen, window, event->window);
}
@@ -2928,7 +2937,7 @@ process_damage (MetaCompositorXRender *xrender,
{
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
- MetaCompWindow *cw = find_window_in_display (display, event->drawable);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->drawable);
if (cw == NULL)
return;
@@ -2947,7 +2956,7 @@ process_shape (MetaCompositorXRender *xrender,
{
MetaCompositor *compositor = META_COMPOSITOR (xrender);
MetaDisplay *display = meta_compositor_get_display (compositor);
- MetaCompWindow *cw = find_window_in_display (display, event->window);
+ MetaCompWindow *cw = find_window_in_display (xrender, display, event->window);
if (cw == NULL)
return;
@@ -2994,7 +3003,7 @@ static void
update_shadows (MetaPreference pref,
gpointer data)
{
- MetaCompScreen *info;
+ MetaCompositorXRender *xrender;
MetaDisplay *display;
Display *xdisplay;
GList *index;
@@ -3002,11 +3011,11 @@ update_shadows (MetaPreference pref,
if (pref != META_PREF_THEME_TYPE)
return;
- info = (MetaCompScreen *) data;
- display = meta_screen_get_display (info->screen);
+ xrender = META_COMPOSITOR_XRENDER (data);
+ display = meta_screen_get_display (xrender->info->screen);
xdisplay = meta_display_get_xdisplay (display);
- for (index = info->windows; index; index = index->next)
+ for (index = xrender->info->windows; index; index = index->next)
{
MetaCompWindow *cw;
@@ -3018,7 +3027,7 @@ update_shadows (MetaPreference pref,
cw->shadow = None;
}
- cw->needs_shadow = window_has_shadow (cw);
+ cw->needs_shadow = window_has_shadow (xrender, cw);
}
}
@@ -3096,7 +3105,7 @@ meta_compositor_xrender_manage (MetaCompositor *compositor)
Window xroot = meta_screen_get_xroot (screen);
/* Check if the screen is already managed */
- if (meta_screen_get_compositor_data (screen))
+ if (xrender->info != NULL)
return;
gdk_error_trap_push ();
@@ -3113,7 +3122,7 @@ meta_compositor_xrender_manage (MetaCompositor *compositor)
info = g_new0 (MetaCompScreen, 1);
info->screen = screen;
- meta_screen_set_compositor_data (screen, info);
+ xrender->info = info;
visual_format = XRenderFindVisualFormat (xdisplay, DefaultVisual (xdisplay,
screen_number));
@@ -3164,12 +3173,13 @@ meta_compositor_xrender_manage (MetaCompositor *compositor)
/* Now we're up and running we can show the output if needed */
show_overlay_window (xrender, screen, info->output);
- meta_prefs_add_listener (update_shadows, info);
+ meta_prefs_add_listener (update_shadows, xrender);
}
static void
meta_compositor_xrender_unmanage (MetaCompositor *compositor)
{
+ MetaCompositorXRender *xrender = META_COMPOSITOR_XRENDER (compositor);
MetaDisplay *display = meta_compositor_get_display (compositor);
MetaScreen *screen = meta_display_get_screen (display);
Display *xdisplay = meta_display_get_xdisplay (display);
@@ -3177,13 +3187,13 @@ meta_compositor_xrender_unmanage (MetaCompositor *compositor)
Window xroot = meta_screen_get_xroot (screen);
GList *index;
- info = meta_screen_get_compositor_data (screen);
+ info = xrender->info;
/* This screen isn't managed */
if (info == NULL)
return;
- meta_prefs_remove_listener (update_shadows, info);
+ meta_prefs_remove_listener (update_shadows, xrender);
hide_overlay_window (screen, info->output);
@@ -3191,7 +3201,7 @@ meta_compositor_xrender_unmanage (MetaCompositor *compositor)
for (index = info->windows; index; index = index->next)
{
MetaCompWindow *cw = (MetaCompWindow *) index->data;
- free_win (cw, TRUE);
+ free_win (xrender, cw, TRUE);
}
g_list_free (info->windows);
g_hash_table_destroy (info->windows_by_xid);
@@ -3216,9 +3226,7 @@ meta_compositor_xrender_unmanage (MetaCompositor *compositor)
XCompositeReleaseOverlayWindow (xdisplay, info->output);
- g_free (info);
-
- meta_screen_set_compositor_data (screen, NULL);
+ g_clear_pointer (&xrender->info, g_free);
}
static void
@@ -3253,7 +3261,7 @@ meta_compositor_xrender_remove_window (MetaCompositor *compositor,
else
xwindow = meta_window_get_xwindow (window);
- cw = find_window_in_display (display, xwindow);
+ cw = find_window_in_display (xrender, display, xwindow);
if (cw == NULL)
return;
@@ -3268,7 +3276,7 @@ meta_compositor_xrender_remove_window (MetaCompositor *compositor,
cw->extents = None;
}
- free_win (cw, FALSE);
+ free_win (xrender, cw, FALSE);
}
static void
@@ -3397,7 +3405,7 @@ meta_compositor_xrender_get_window_surface (MetaCompositor *compositor,
xwindow = meta_window_get_xwindow (window);
screen = meta_window_get_screen (window);
- cw = find_window_for_screen (screen, xwindow);
+ cw = find_window_for_screen (META_COMPOSITOR_XRENDER (compositor), screen, xwindow);
if (cw == NULL)
return NULL;
@@ -3515,7 +3523,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
display = meta_compositor_get_display (compositor);
screen = meta_display_get_screen (display);
xdisplay = meta_display_get_xdisplay (display);
- info = meta_screen_get_compositor_data (screen);
+ info = xrender->info;
if (info != NULL)
{
@@ -3526,7 +3534,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
{
MetaFrame *f = meta_window_get_frame (old_focus_win);
- old_focus = find_window_for_screen (screen,
+ old_focus = find_window_for_screen (xrender, screen,
f ? meta_frame_get_xwindow (f) :
meta_window_get_xwindow (old_focus_win));
}
@@ -3534,7 +3542,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
if (window)
{
MetaFrame *f = meta_window_get_frame (window);
- new_focus = find_window_for_screen (screen,
+ new_focus = find_window_for_screen (xrender, screen,
f ? meta_frame_get_xwindow (f) :
meta_window_get_xwindow (window));
}
@@ -3551,7 +3559,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
/* Tear down old shadows */
old_focus->shadow_type = META_SHADOW_MEDIUM;
determine_mode (xrender, screen, old_focus);
- old_focus->needs_shadow = window_has_shadow (old_focus);
+ old_focus->needs_shadow = window_has_shadow (xrender, old_focus);
if (old_focus->attrs.map_state == IsViewable)
{
@@ -3577,7 +3585,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
damage = None;
/* Build new extents */
- old_focus->extents = win_extents (old_focus);
+ old_focus->extents = win_extents (xrender, old_focus);
if (damage)
XFixesUnionRegion (xdisplay, damage, damage, old_focus->extents);
@@ -3603,7 +3611,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
new_focus->shadow_type = META_SHADOW_LARGE;
determine_mode (xrender, screen, new_focus);
- new_focus->needs_shadow = window_has_shadow (new_focus);
+ new_focus->needs_shadow = window_has_shadow (xrender, new_focus);
if (new_focus->mask)
{
@@ -3627,7 +3635,7 @@ meta_compositor_xrender_set_active_window (MetaCompositor *compositor,
damage = None;
/* Build new extents */
- new_focus->extents = win_extents (new_focus);
+ new_focus->extents = win_extents (xrender, new_focus);
if (damage)
XFixesUnionRegion (xdisplay, damage, damage, new_focus->extents);
@@ -3678,46 +3686,44 @@ static void
meta_compositor_xrender_maximize_window (MetaCompositor *compositor,
MetaWindow *window)
{
+ MetaCompositorXRender *xrender = META_COMPOSITOR_XRENDER (compositor);
MetaFrame *frame = meta_window_get_frame (window);
Window xid = frame ? meta_frame_get_xwindow (frame) : meta_window_get_xwindow (window);
- MetaCompWindow *cw = find_window_in_display (meta_window_get_display (window), xid);
+ MetaCompWindow *cw = find_window_in_display (xrender, meta_window_get_display (window), xid);
if (!cw)
return;
- cw->needs_shadow = window_has_shadow (cw);
+ cw->needs_shadow = window_has_shadow (xrender, cw);
}
static void
meta_compositor_xrender_unmaximize_window (MetaCompositor *compositor,
MetaWindow *window)
{
+ MetaCompositorXRender *xrender = META_COMPOSITOR_XRENDER (compositor);
MetaFrame *frame = meta_window_get_frame (window);
Window xid = frame ? meta_frame_get_xwindow (frame) : meta_window_get_xwindow (window);
- MetaCompWindow *cw = find_window_in_display (meta_window_get_display (window), xid);
+ MetaCompWindow *cw = find_window_in_display (xrender, meta_window_get_display (window), xid);
if (!cw)
return;
- cw->needs_shadow = window_has_shadow (cw);
+ cw->needs_shadow = window_has_shadow (xrender, cw);
}
static gboolean
meta_compositor_xrender_is_our_xwindow (MetaCompositor *compositor,
Window xwindow)
{
- MetaDisplay *display;
- MetaScreen *screen;
- MetaCompScreen *info;
+ MetaCompositorXRender *xrender;
- display = meta_compositor_get_display (compositor);
- screen = meta_display_get_screen (display);
- info = meta_screen_get_compositor_data (screen);
+ xrender = META_COMPOSITOR_XRENDER (compositor);
- if (info == NULL)
+ if (xrender->info == NULL)
return FALSE;
- if (info->output == xwindow)
+ if (xrender->info->output == xwindow)
return TRUE;
return FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]