Moved shadow source actor form screen to the compositor (only one needed).

This commit is contained in:
Tomas Frydrych 2008-08-20 13:18:43 +01:00
parent 2bcb7d73be
commit 6946d6a4a3

View File

@ -140,6 +140,8 @@ typedef struct _MetaCompositorClutter
Atom atom_x_set_root; Atom atom_x_set_root;
Atom atom_net_wm_window_opacity; Atom atom_net_wm_window_opacity;
ClutterActor *shadow_src;
gboolean show_redraw : 1; gboolean show_redraw : 1;
gboolean debug : 1; gboolean debug : 1;
} MetaCompositorClutter; } MetaCompositorClutter;
@ -157,8 +159,6 @@ typedef struct _MetaCompScreen
ClutterEffectTemplate *destroy_effect; ClutterEffectTemplate *destroy_effect;
ClutterEffectTemplate *minimize_effect; ClutterEffectTemplate *minimize_effect;
ClutterActor *shadow_src;
} MetaCompScreen; } MetaCompScreen;
/* /*
@ -318,7 +318,6 @@ meta_comp_window_constructed (GObject *object)
MetaDisplay *display = meta_screen_get_display (screen); MetaDisplay *display = meta_screen_get_display (screen);
Window xwindow = priv->xwindow; Window xwindow = priv->xwindow;
Display *xdisplay = meta_display_get_xdisplay (display); Display *xdisplay = meta_display_get_xdisplay (display);
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
XRenderPictFormat *format; XRenderPictFormat *format;
meta_comp_window_get_window_type (self); meta_comp_window_get_window_type (self);
@ -337,8 +336,11 @@ meta_comp_window_constructed (GObject *object)
if (meta_comp_window_has_shadow (self)) if (meta_comp_window_has_shadow (self))
{ {
MetaCompositorClutter *compositor =
(MetaCompositorClutter*)meta_display_get_compositor (display);
priv->shadow = priv->shadow =
tidy_texture_frame_new (CLUTTER_TEXTURE (info->shadow_src), tidy_texture_frame_new (CLUTTER_TEXTURE (compositor->shadow_src),
MAX_TILE_SZ, MAX_TILE_SZ,
MAX_TILE_SZ, MAX_TILE_SZ,
MAX_TILE_SZ, MAX_TILE_SZ,
@ -1331,7 +1333,6 @@ clutter_cmp_manage_screen (MetaCompositor *compositor,
Window xroot = meta_screen_get_xroot (screen); Window xroot = meta_screen_get_xroot (screen);
Window xwin; Window xwin;
gint width, height; gint width, height;
guchar *data;
/* Check if the screen is already managed */ /* Check if the screen is already managed */
if (meta_screen_get_compositor_data (screen)) if (meta_screen_get_compositor_data (screen))
@ -1373,23 +1374,6 @@ clutter_cmp_manage_screen (MetaCompositor *compositor,
XReparentWindow (xdisplay, xwin, info->output, 0, 0); XReparentWindow (xdisplay, xwin, info->output, 0, 0);
/* Shadow setup */
data = shadow_gaussian_make_tile ();
info->shadow_src = clutter_texture_new ();
clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (info->shadow_src),
data,
TRUE,
TILE_WIDTH,
TILE_HEIGHT,
TILE_WIDTH*4,
4,
0,
NULL);
free (data);
clutter_actor_show_all (info->stage); clutter_actor_show_all (info->stage);
/* Now we're up and running we can show the output if needed */ /* Now we're up and running we can show the output if needed */
@ -1683,11 +1667,12 @@ meta_compositor_clutter_new (MetaDisplay *display)
MetaCompositorClutter *clc; MetaCompositorClutter *clc;
MetaCompositor *compositor; MetaCompositor *compositor;
Display *xdisplay = meta_display_get_xdisplay (display); Display *xdisplay = meta_display_get_xdisplay (display);
guchar *data;
if (!composite_at_least_version (display, 0, 3)) if (!composite_at_least_version (display, 0, 3))
return NULL; return NULL;
clc = g_new (MetaCompositorClutter, 1); clc = g_new0 (MetaCompositorClutter, 1);
clc->compositor = comp_info; clc->compositor = comp_info;
compositor = (MetaCompositor *) clc; compositor = (MetaCompositor *) clc;
@ -1702,6 +1687,23 @@ meta_compositor_clutter_new (MetaDisplay *display)
clc->atom_x_set_root = atoms[1]; clc->atom_x_set_root = atoms[1];
clc->atom_net_wm_window_opacity = atoms[2]; clc->atom_net_wm_window_opacity = atoms[2];
/* Shadow setup */
data = shadow_gaussian_make_tile ();
clc->shadow_src = clutter_texture_new ();
clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (clc->shadow_src),
data,
TRUE,
TILE_WIDTH,
TILE_HEIGHT,
TILE_WIDTH*4,
4,
0,
NULL);
free (data);
return compositor; return compositor;
#else #else
return NULL; return NULL;