diff options
Diffstat (limited to 'xorg-server/present/present.c')
-rw-r--r-- | xorg-server/present/present.c | 16 |
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) { |