mirror of
https://github.com/brl/mutter.git
synced 2024-11-29 03:20:46 -05:00
Handle _NET_WM_SYNC_REQUEST_COUNTER updates without redraw
It's possible that a client might update the (extended) _NET_WM_SYNC_REQUEST_COUNTER counter twice without actually drawing anything. In that case, we still should send a _NET_WM_FRAME_DRAWN message since it's hard for a client to know every case in which no damage is generated. For now, do it the easy way by forcing a stage repaint. https://bugzilla.gnome.org/show_bug.cgi?id=685463
This commit is contained in:
parent
790bfcad9a
commit
04ef448927
@ -942,6 +942,19 @@ meta_window_actor_thaw (MetaWindowActor *self)
|
|||||||
* don't know what real damage has happened. */
|
* don't know what real damage has happened. */
|
||||||
if (self->priv->needs_damage_all)
|
if (self->priv->needs_damage_all)
|
||||||
meta_window_actor_damage_all (self);
|
meta_window_actor_damage_all (self);
|
||||||
|
else if (self->priv->frame_drawn_serial != 0)
|
||||||
|
{
|
||||||
|
/* A frame was marked by the client without actually doing any damage;
|
||||||
|
* we need to make sure that the pre_paint/post_paint functions
|
||||||
|
* get called, enabling us to send a _NET_WM_FRAME_DRAWN. We do a
|
||||||
|
* 1-pixel redraw to get consistent timing with non-empty frames.
|
||||||
|
*/
|
||||||
|
if (self->priv->mapped && !self->priv->needs_pixmap)
|
||||||
|
{
|
||||||
|
const cairo_rectangle_int_t clip = { 0, 0, 1, 1 };
|
||||||
|
clutter_actor_queue_redraw_with_clip (self->priv->actor, &clip);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
Loading…
Reference in New Issue
Block a user