aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/present/present.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/present/present.c')
-rw-r--r--xorg-server/present/present.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/xorg-server/present/present.c b/xorg-server/present/present.c
index 4c97ce40c..228d43a20 100644
--- a/xorg-server/present/present.c
+++ b/xorg-server/present/present.c
@@ -184,8 +184,10 @@ present_vblank_notify(present_vblank_ptr vblank, CARD8 kind, CARD8 mode, uint64_
static void
present_pixmap_idle(PixmapPtr pixmap, WindowPtr window, CARD32 serial, struct present_fence *present_fence)
{
- present_fence_set_triggered(present_fence);
- present_send_idle_notify(window, serial, pixmap, present_fence);
+ if (present_fence)
+ present_fence_set_triggered(present_fence);
+ if (window)
+ present_send_idle_notify(window, serial, pixmap, present_fence);
}
RRCrtcPtr
@@ -297,7 +299,8 @@ present_flip_idle(ScreenPtr screen)
if (screen_priv->flip_pixmap) {
present_pixmap_idle(screen_priv->flip_pixmap, screen_priv->flip_window,
screen_priv->flip_serial, screen_priv->flip_idle_fence);
- present_fence_destroy(screen_priv->flip_idle_fence);
+ if (screen_priv->flip_idle_fence)
+ present_fence_destroy(screen_priv->flip_idle_fence);
dixDestroyPixmap(screen_priv->flip_pixmap, screen_priv->flip_pixmap->drawable.id);
screen_priv->flip_crtc = NULL;
screen_priv->flip_window = NULL;
@@ -371,6 +374,7 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
present_vblank_ptr vblank, tmp;
int s;
+ DebugPresent(("\te %lld ust %lld msc %lld\n", event_id, ust, msc));
xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
if (vblank->event_id == event_id) {
xorg_list_del(&vblank->event_queue);
@@ -655,8 +659,10 @@ present_pixmap(WindowPtr window,
}
if (pixmap)
- DebugPresent(("q %p %8lld: %08lx -> %08lx (crtc %d)\n",
- vblank, target_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id, target_crtc ? 1 : 0));
+ DebugPresent(("q %lld %p %8lld: %08lx -> %08lx (crtc %p)\n",
+ vblank->event_id, vblank, target_msc,
+ vblank->pixmap->drawable.id, vblank->window->drawable.id,
+ target_crtc));
xorg_list_add(&vblank->event_queue, &present_exec_queue);
if (target_msc >= crtc_msc) {