[SteamOS compositor] Fix overlay flickering problem.
This commit is contained in:
parent
acbd2c8d7c
commit
8ae95f1f37
2 changed files with 15 additions and 1 deletions
6
debian/changelog
vendored
6
debian/changelog
vendored
|
@ -1,3 +1,9 @@
|
||||||
|
steamos-compositor (1.21) alchemist; urgency=medium
|
||||||
|
|
||||||
|
* Fix issue with 1.20 where overlay would appear flickery.
|
||||||
|
|
||||||
|
-- Pierre-Loup A. Griffais <pgriffais@valvesoftware.com> Wed, 23 Jul 2014 18:02:07 -0700
|
||||||
|
|
||||||
steamos-compositor (1.20) alchemist; urgency=medium
|
steamos-compositor (1.20) alchemist; urgency=medium
|
||||||
|
|
||||||
* Fix cases where notifications/overlays would start getting presented before
|
* Fix cases where notifications/overlays would start getting presented before
|
||||||
|
|
|
@ -103,6 +103,7 @@ typedef struct _win {
|
||||||
unsigned int requestedHeight;
|
unsigned int requestedHeight;
|
||||||
Bool nudged;
|
Bool nudged;
|
||||||
Bool ignoreOverrideRedirect;
|
Bool ignoreOverrideRedirect;
|
||||||
|
Bool validContents;
|
||||||
|
|
||||||
Bool mouseMoved;
|
Bool mouseMoved;
|
||||||
} win;
|
} win;
|
||||||
|
@ -483,6 +484,7 @@ teardown_win_resources (Display *dpy, win *w)
|
||||||
}
|
}
|
||||||
|
|
||||||
w->damaged = 0;
|
w->damaged = 0;
|
||||||
|
w->validContents = False;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -606,7 +608,7 @@ paint_window (Display *dpy, win *w, Bool doBlend, Bool notificationMode)
|
||||||
if (!w)
|
if (!w)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (w->isOverlay && !w->damaged)
|
if (w->isOverlay && !w->validContents)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
win *mainOverlayWindow = find_win(dpy, currentOverlayWindow);
|
win *mainOverlayWindow = find_win(dpy, currentOverlayWindow);
|
||||||
|
@ -1329,6 +1331,8 @@ map_win (Display *dpy, Window id, unsigned long sequence)
|
||||||
w->damage_sequence = 0;
|
w->damage_sequence = 0;
|
||||||
w->map_sequence = sequence;
|
w->map_sequence = sequence;
|
||||||
|
|
||||||
|
w->validContents = False;
|
||||||
|
|
||||||
determine_and_apply_focus(dpy);
|
determine_and_apply_focus(dpy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1336,6 +1340,7 @@ static void
|
||||||
finish_unmap_win (Display *dpy, win *w)
|
finish_unmap_win (Display *dpy, win *w)
|
||||||
{
|
{
|
||||||
w->damaged = 0;
|
w->damaged = 0;
|
||||||
|
w->validContents = False;
|
||||||
|
|
||||||
if (w->pixmap && fadeOutWindow.id != w->id)
|
if (w->pixmap && fadeOutWindow.id != w->id)
|
||||||
{
|
{
|
||||||
|
@ -1391,6 +1396,7 @@ add_win (Display *dpy, Window id, Window prev, unsigned long sequence)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new->damaged = 0;
|
new->damaged = 0;
|
||||||
|
new->validContents = False;
|
||||||
new->pixmap = None;
|
new->pixmap = None;
|
||||||
new->fbConfig = win_fbconfig(dpy, new->id);
|
new->fbConfig = win_fbconfig(dpy, new->id);
|
||||||
if (new->fbConfig == None)
|
if (new->fbConfig == None)
|
||||||
|
@ -1564,6 +1570,8 @@ damage_win (Display *dpy, XDamageNotifyEvent *de)
|
||||||
if (!w)
|
if (!w)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
w->validContents = True;
|
||||||
|
|
||||||
if (w->isOverlay && !w->opacity)
|
if (w->isOverlay && !w->opacity)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue