Revert "window: Update the shape, input, and opaque regions immediately"
This reverts commit 64a82c8d77
.
This broke everything, and the perf regressions I was seeing went
away after a reboot...
This commit is contained in:
parent
be352c2bf1
commit
fc24552e0e
@ -823,31 +823,7 @@ is_grabbed_event (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_compositor_update_shape_region (MetaCompositor *compositor,
|
meta_compositor_window_shape_changed (MetaCompositor *compositor,
|
||||||
MetaWindow *window)
|
|
||||||
{
|
|
||||||
MetaWindowActor *window_actor;
|
|
||||||
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
|
||||||
if (!window_actor)
|
|
||||||
return;
|
|
||||||
|
|
||||||
meta_window_actor_update_shape_region (window_actor);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_compositor_update_input_region (MetaCompositor *compositor,
|
|
||||||
MetaWindow *window)
|
|
||||||
{
|
|
||||||
MetaWindowActor *window_actor;
|
|
||||||
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
|
||||||
if (!window_actor)
|
|
||||||
return;
|
|
||||||
|
|
||||||
meta_window_actor_update_input_region (window_actor);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_compositor_update_opaque_region (MetaCompositor *compositor,
|
|
||||||
MetaWindow *window)
|
MetaWindow *window)
|
||||||
{
|
{
|
||||||
MetaWindowActor *window_actor;
|
MetaWindowActor *window_actor;
|
||||||
@ -855,7 +831,7 @@ meta_compositor_update_opaque_region (MetaCompositor *compositor,
|
|||||||
if (!window_actor)
|
if (!window_actor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_window_actor_update_opaque_region (window_actor);
|
meta_window_actor_update_shape (window_actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -46,6 +46,7 @@ gboolean meta_window_actor_effect_in_progress (MetaWindowActor *self);
|
|||||||
void meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
|
void meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
|
||||||
gboolean did_placement);
|
gboolean did_placement);
|
||||||
void meta_window_actor_sync_visibility (MetaWindowActor *self);
|
void meta_window_actor_sync_visibility (MetaWindowActor *self);
|
||||||
|
void meta_window_actor_update_shape (MetaWindowActor *self);
|
||||||
void meta_window_actor_update_opacity (MetaWindowActor *self);
|
void meta_window_actor_update_opacity (MetaWindowActor *self);
|
||||||
void meta_window_actor_mapped (MetaWindowActor *self);
|
void meta_window_actor_mapped (MetaWindowActor *self);
|
||||||
void meta_window_actor_unmapped (MetaWindowActor *self);
|
void meta_window_actor_unmapped (MetaWindowActor *self);
|
||||||
@ -57,8 +58,4 @@ void meta_window_actor_queue_frame_drawn (MetaWindowActor *self,
|
|||||||
void meta_window_actor_effect_completed (MetaWindowActor *actor,
|
void meta_window_actor_effect_completed (MetaWindowActor *actor,
|
||||||
gulong event);
|
gulong event);
|
||||||
|
|
||||||
void meta_window_actor_update_shape_region (MetaWindowActor *self);
|
|
||||||
void meta_window_actor_update_input_region (MetaWindowActor *self);
|
|
||||||
void meta_window_actor_update_opaque_region (MetaWindowActor *self);
|
|
||||||
|
|
||||||
#endif /* META_WINDOW_ACTOR_PRIVATE_H */
|
#endif /* META_WINDOW_ACTOR_PRIVATE_H */
|
||||||
|
@ -106,6 +106,7 @@ struct _MetaWindowActorPrivate
|
|||||||
guint needs_frame_drawn : 1;
|
guint needs_frame_drawn : 1;
|
||||||
|
|
||||||
guint needs_pixmap : 1;
|
guint needs_pixmap : 1;
|
||||||
|
guint needs_reshape : 1;
|
||||||
guint recompute_focused_shadow : 1;
|
guint recompute_focused_shadow : 1;
|
||||||
guint recompute_unfocused_shadow : 1;
|
guint recompute_unfocused_shadow : 1;
|
||||||
guint size_changed : 1;
|
guint size_changed : 1;
|
||||||
@ -161,6 +162,8 @@ static gboolean meta_window_actor_has_shadow (MetaWindowActor *self);
|
|||||||
|
|
||||||
static void meta_window_actor_handle_updates (MetaWindowActor *self);
|
static void meta_window_actor_handle_updates (MetaWindowActor *self);
|
||||||
|
|
||||||
|
static void check_needs_reshape (MetaWindowActor *self);
|
||||||
|
|
||||||
static void do_send_frame_drawn (MetaWindowActor *self, FrameData *frame);
|
static void do_send_frame_drawn (MetaWindowActor *self, FrameData *frame);
|
||||||
static void do_send_frame_timings (MetaWindowActor *self,
|
static void do_send_frame_timings (MetaWindowActor *self,
|
||||||
FrameData *frame,
|
FrameData *frame,
|
||||||
@ -1307,7 +1310,10 @@ meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (priv->size_changed)
|
if (priv->size_changed)
|
||||||
meta_window_actor_queue_create_pixmap (self);
|
{
|
||||||
|
meta_window_actor_queue_create_pixmap (self);
|
||||||
|
meta_window_actor_update_shape (self);
|
||||||
|
}
|
||||||
|
|
||||||
if (meta_window_actor_effect_in_progress (self))
|
if (meta_window_actor_effect_in_progress (self))
|
||||||
return;
|
return;
|
||||||
@ -1967,7 +1973,7 @@ build_and_scan_frame_mask (MetaWindowActor *self,
|
|||||||
g_free (mask_data);
|
g_free (mask_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_window_actor_update_shape_region (MetaWindowActor *self)
|
meta_window_actor_update_shape_region (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
@ -2005,7 +2011,7 @@ meta_window_actor_update_shape_region (MetaWindowActor *self)
|
|||||||
meta_window_actor_invalidate_shadow (self);
|
meta_window_actor_invalidate_shadow (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_window_actor_update_input_region (MetaWindowActor *self)
|
meta_window_actor_update_input_region (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
@ -2050,7 +2056,7 @@ meta_window_actor_update_input_region (MetaWindowActor *self)
|
|||||||
cairo_region_destroy (region);
|
cairo_region_destroy (region);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_window_actor_update_opaque_region (MetaWindowActor *self)
|
meta_window_actor_update_opaque_region (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
@ -2085,6 +2091,34 @@ meta_window_actor_update_opaque_region (MetaWindowActor *self)
|
|||||||
cairo_region_destroy (opaque_region);
|
cairo_region_destroy (opaque_region);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
check_needs_reshape (MetaWindowActor *self)
|
||||||
|
{
|
||||||
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
|
|
||||||
|
if (!priv->needs_reshape)
|
||||||
|
return;
|
||||||
|
|
||||||
|
meta_window_actor_update_shape_region (self);
|
||||||
|
meta_window_actor_update_input_region (self);
|
||||||
|
meta_window_actor_update_opaque_region (self);
|
||||||
|
|
||||||
|
priv->needs_reshape = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_window_actor_update_shape (MetaWindowActor *self)
|
||||||
|
{
|
||||||
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
|
|
||||||
|
priv->needs_reshape = TRUE;
|
||||||
|
|
||||||
|
if (is_frozen (self))
|
||||||
|
return;
|
||||||
|
|
||||||
|
clutter_actor_queue_redraw (priv->actor);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_window_actor_handle_updates (MetaWindowActor *self)
|
meta_window_actor_handle_updates (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
@ -2136,6 +2170,7 @@ meta_window_actor_handle_updates (MetaWindowActor *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
check_needs_pixmap (self);
|
check_needs_pixmap (self);
|
||||||
|
check_needs_reshape (self);
|
||||||
check_needs_shadow (self);
|
check_needs_shadow (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7677,7 +7677,7 @@ meta_window_set_opaque_region (MetaWindow *window,
|
|||||||
window->opaque_region = cairo_region_reference (region);
|
window->opaque_region = cairo_region_reference (region);
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
meta_compositor_update_opaque_region (window->display->compositor, window);
|
meta_compositor_window_shape_changed (window->display->compositor, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -7763,7 +7763,7 @@ meta_window_set_input_region (MetaWindow *window,
|
|||||||
window->input_region = cairo_region_reference (region);
|
window->input_region = cairo_region_reference (region);
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
meta_compositor_update_input_region (window->display->compositor, window);
|
meta_compositor_window_shape_changed (window->display->compositor, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -7849,7 +7849,7 @@ meta_window_set_shape_region (MetaWindow *window,
|
|||||||
window->shape_region = cairo_region_reference (region);
|
window->shape_region = cairo_region_reference (region);
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
meta_compositor_update_shape_region (window->display->compositor, window);
|
meta_compositor_window_shape_changed (window->display->compositor, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -62,11 +62,7 @@ void meta_compositor_manage_screen (MetaCompositor *compositor,
|
|||||||
void meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
void meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||||
MetaScreen *screen);
|
MetaScreen *screen);
|
||||||
|
|
||||||
void meta_compositor_update_shape_region (MetaCompositor *compositor,
|
void meta_compositor_window_shape_changed (MetaCompositor *compositor,
|
||||||
MetaWindow *window);
|
|
||||||
void meta_compositor_update_input_region (MetaCompositor *compositor,
|
|
||||||
MetaWindow *window);
|
|
||||||
void meta_compositor_update_opaque_region (MetaCompositor *compositor,
|
|
||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
void meta_compositor_window_opacity_changed (MetaCompositor *compositor,
|
void meta_compositor_window_opacity_changed (MetaCompositor *compositor,
|
||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
|
Loading…
Reference in New Issue
Block a user