aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/present
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-10-01 20:12:35 +0200
committermarha <marha@users.sourceforge.net>2014-10-01 20:12:35 +0200
commit19b4b68b35a047a83bd291ee8debac1adb0e946c (patch)
treed4d4520622ecf73fa0d076dc0bf517a1189b7d9f /xorg-server/present
parent4e080e0165d18887e2a0fccd7f30cf20fd04b178 (diff)
parent438af0c7d4bf60b408b259c88205ff2193195466 (diff)
downloadvcxsrv-19b4b68b35a047a83bd291ee8debac1adb0e946c.tar.gz
vcxsrv-19b4b68b35a047a83bd291ee8debac1adb0e946c.tar.bz2
vcxsrv-19b4b68b35a047a83bd291ee8debac1adb0e946c.zip
Merge remote-tracking branch 'origin/released'
Conflicts: mesalib/src/mesa/main/macros.h xorg-server/dix/registry.c xorg-server/hw/kdrive/ephyr/ephyrinit.c xorg-server/hw/xwin/Makefile.am xorg-server/hw/xwin/glx/.gitignore xorg-server/hw/xwin/glx/gen_gl_wrappers.py xorg-server/hw/xwin/glx/indirect.c xorg-server/hw/xwin/glx/winpriv.c xorg-server/hw/xwin/winclipboardthread.c xorg-server/hw/xwin/windisplay.c xorg-server/hw/xwin/winmultiwindowwm.c xorg-server/hw/xwin/winprefs.c
Diffstat (limited to 'xorg-server/present')
-rw-r--r--xorg-server/present/present.c12
-rw-r--r--xorg-server/present/present.h1
-rw-r--r--xorg-server/present/present_event.c2
3 files changed, 10 insertions, 5 deletions
diff --git a/xorg-server/present/present.c b/xorg-server/present/present.c
index c0b83f705..e82cfe656 100644
--- a/xorg-server/present/present.c
+++ b/xorg-server/present/present.c
@@ -837,7 +837,10 @@ present_pixmap(WindowPtr window,
if (!screen_priv->info || !(screen_priv->info->capabilities & PresentCapabilityAsync))
vblank->sync_flip = TRUE;
- if (pixmap && present_check_flip (target_crtc, window, pixmap, vblank->sync_flip, valid, x_off, y_off)) {
+ if (!(options & PresentOptionCopy) &&
+ pixmap != NULL &&
+ present_check_flip (target_crtc, window, pixmap, vblank->sync_flip, valid, x_off, y_off))
+ {
vblank->flip = TRUE;
if (vblank->sync_flip)
target_msc--;
@@ -935,11 +938,12 @@ present_flip_destroy(ScreenPtr screen)
{
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
- /* XXX this needs to be synchronous for server reset */
-
- /* Do the actual cleanup once the flip has been performed by the hardware */
+ /* Reset window pixmaps back to the screen pixmap */
if (screen_priv->flip_pending)
present_set_abort_flip(screen);
+
+ /* Drop reference to any pending flip or unflip pixmaps. */
+ present_flip_idle(screen);
}
void
diff --git a/xorg-server/present/present.h b/xorg-server/present/present.h
index 0e3bdc08e..aab2e168a 100644
--- a/xorg-server/present/present.h
+++ b/xorg-server/present/present.h
@@ -116,6 +116,7 @@ extern _X_EXPORT Bool
present_screen_init(ScreenPtr screen, present_screen_info_ptr info);
typedef void (*present_complete_notify_proc)(WindowPtr window,
+ CARD8 kind,
CARD8 mode,
CARD32 serial,
uint64_t ust,
diff --git a/xorg-server/present/present_event.c b/xorg-server/present/present_event.c
index 5582e51a6..8457a877c 100644
--- a/xorg-server/present/present_event.c
+++ b/xorg-server/present/present_event.c
@@ -172,7 +172,7 @@ present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 se
}
}
if (complete_notify)
- (*complete_notify)(window, mode, serial, ust, msc);
+ (*complete_notify)(window, kind, mode, serial, ust, msc);
}
void