Lines Matching refs:vblank

26 present_vblank_notify(present_vblank_ptr vblank, CARD8 kind, CARD8 mode, uint64_t ust, uint64_t crtc_msc)
30 if (vblank->window)
31 present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset);
32 for (n = 0; n < vblank->num_notifies; n++) {
33 WindowPtr window = vblank->notifies[n].window;
34 CARD32 serial = vblank->notifies[n].serial;
37 present_send_complete_notify(window, kind, mode, serial, ust, crtc_msc - vblank->msc_offset);
41 /* The memory vblank points to must be 0-initialized before calling this function.
47 present_vblank_init(present_vblank_ptr vblank,
74 xorg_list_append(&vblank->window_list, &window_priv->vblank);
75 xorg_list_init(&vblank->event_queue);
77 vblank->screen = screen;
78 vblank->window = window;
79 vblank->pixmap = pixmap;
82 vblank->kind = PresentCompleteKindPixmap;
85 vblank->kind = PresentCompleteKindNotifyMSC;
87 vblank->serial = serial;
90 vblank->valid = RegionDuplicate(valid);
91 if (!vblank->valid)
95 vblank->update = RegionDuplicate(update);
96 if (!vblank->update)
100 vblank->x_off = x_off;
101 vblank->y_off = y_off;
102 vblank->target_msc = target_msc;
103 vblank->exec_msc = target_msc;
104 vblank->crtc = target_crtc;
105 vblank->msc_offset = window_priv->msc_offset;
106 vblank->notifies = notifies;
107 vblank->num_notifies = num_notifies;
108 vblank->has_suboptimal = (options & PresentOptionSuboptimal);
116 vblank->flip = TRUE;
117 vblank->sync_flip = TRUE;
121 vblank->flip = TRUE;
124 vblank->reason = reason;
127 vblank->wait_fence = present_fence_create(wait_fence);
128 if (!vblank->wait_fence)
133 vblank->idle_fence = present_fence_create(idle_fence);
134 if (!vblank->idle_fence)
140 vblank->event_id, vblank, target_msc,
141 vblank->pixmap->drawable.id, vblank->window->drawable.id,
142 target_crtc, vblank->flip, vblank->sync_flip, vblank->serial));
146 vblank->notifies = NULL;
168 present_vblank_ptr vblank = calloc(1, sizeof(present_vblank_rec));
170 if (!vblank)
173 if (present_vblank_init(vblank, window, pixmap, serial, valid, update,
177 return vblank;
179 present_vblank_destroy(vblank);
184 present_vblank_scrap(present_vblank_ptr vblank)
187 vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc,
188 vblank->pixmap->drawable.id, vblank->window->drawable.id,
189 vblank->crtc));
191 present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
192 present_fence_destroy(vblank->idle_fence);
193 dixDestroyPixmap(vblank->pixmap, vblank->pixmap->drawable.id);
195 vblank->pixmap = NULL;
196 vblank->idle_fence = NULL;
197 vblank->flip = FALSE;
201 present_vblank_destroy(present_vblank_ptr vblank)
203 /* Remove vblank from window and screen lists */
204 xorg_list_del(&vblank->window_list);
205 /* Also make sure vblank is removed from event queue (wnmd) */
206 xorg_list_del(&vblank->event_queue);
209 vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc,
210 vblank->pixmap ? vblank->pixmap->drawable.id : 0,
211 vblank->window ? vblank->window->drawable.id : 0));
214 if (vblank->pixmap)
215 dixDestroyPixmap(vblank->pixmap, vblank->pixmap->drawable.id);
218 if (vblank->valid)
219 RegionDestroy(vblank->valid);
220 if (vblank->update)
221 RegionDestroy(vblank->update);
223 if (vblank->wait_fence)
224 present_fence_destroy(vblank->wait_fence);
226 if (vblank->idle_fence)
227 present_fence_destroy(vblank->idle_fence);
229 if (vblank->notifies)
230 present_destroy_notifies(vblank->notifies, vblank->num_notifies);
232 free(vblank);