present: Only call restore_screen_pixmap once from set_abort_flip

present_restore_screen_pixmap's work doesn't need to be done several
times for the same pending flip.

Fixes a crash if the X server quits while a flip is pending, in which
case present_set_abort_flip may be called several times, including when
screen->root is already cleared to NULL.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Michel Dänzer 2016-07-26 17:28:33 +09:00 committed by Michel Dänzer
parent b4e46c0444
commit 0924ac014d

View File

@ -455,9 +455,10 @@ present_set_abort_flip(ScreenPtr screen)
{
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
present_restore_screen_pixmap(screen);
screen_priv->flip_pending->abort_flip = TRUE;
if (!screen_priv->flip_pending->abort_flip) {
present_restore_screen_pixmap(screen);
screen_priv->flip_pending->abort_flip = TRUE;
}
}
static void