xwayland/present: Drop list member from struct xwl_present_event
Use present_vblank_rec::event_queue instead. The changes in xwl_present_execute shouldn't really be needed, since we should never hit queue_vblank in present_execute_wait. But let's be safe rather than sorry, plus this simplifies the code. Acked-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
		
							parent
							
								
									aac31d2758
								
							
						
					
					
						commit
						f73340445f
					
				| 
						 | 
					@ -213,7 +213,7 @@ static void
 | 
				
			||||||
xwl_present_release_event(struct xwl_present_event *event)
 | 
					xwl_present_release_event(struct xwl_present_event *event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    xwl_present_release_pixmap(event);
 | 
					    xwl_present_release_pixmap(event);
 | 
				
			||||||
    xorg_list_del(&event->list);
 | 
					    xorg_list_del(&event->vblank.event_queue);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					@ -407,10 +407,8 @@ xwl_present_msc_bump(struct xwl_present_window *xwl_present_window)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xorg_list_for_each_entry_safe(event, tmp,
 | 
					    xorg_list_for_each_entry_safe(event, tmp,
 | 
				
			||||||
                                  &xwl_present_window->wait_list,
 | 
					                                  &xwl_present_window->wait_list,
 | 
				
			||||||
                                  list) {
 | 
					                                  vblank.event_queue) {
 | 
				
			||||||
        if (event->target_msc <= msc) {
 | 
					        if (event->target_msc <= msc) {
 | 
				
			||||||
            xorg_list_del(&event->list);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            DebugPresent(("\te %" PRIu64 " ust %" PRIu64 " msc %" PRIu64 "\n",
 | 
					            DebugPresent(("\te %" PRIu64 " ust %" PRIu64 " msc %" PRIu64 "\n",
 | 
				
			||||||
                          event->vblank.event_id, xwl_present_window->ust, msc));
 | 
					                          event->vblank.event_id, xwl_present_window->ust, msc));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -506,8 +504,8 @@ xwl_present_queue_vblank(ScreenPtr screen,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    event->target_msc = msc;
 | 
					    event->target_msc = msc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xorg_list_del(&event->list);
 | 
					    xorg_list_del(&event->vblank.event_queue);
 | 
				
			||||||
    xorg_list_append(&event->list, &xwl_present_window->wait_list);
 | 
					    xorg_list_append(&event->vblank.event_queue, &xwl_present_window->wait_list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* If there's a pending frame callback, use that */
 | 
					    /* If there's a pending frame callback, use that */
 | 
				
			||||||
    if (xwl_window && xwl_window->frame_callback &&
 | 
					    if (xwl_window && xwl_window->frame_callback &&
 | 
				
			||||||
| 
						 | 
					@ -702,8 +700,6 @@ xwl_present_flip(WindowPtr present_window,
 | 
				
			||||||
    event->target_msc = target_msc;
 | 
					    event->target_msc = target_msc;
 | 
				
			||||||
    event->pending = TRUE;
 | 
					    event->pending = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xorg_list_init(&event->list);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    xwl_pixmap_set_buffer_release_cb(pixmap, xwl_present_buffer_release, event);
 | 
					    xwl_pixmap_set_buffer_release_cb(pixmap, xwl_present_buffer_release, event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* We can flip directly to the main surface (full screen window without clips) */
 | 
					    /* We can flip directly to the main surface (full screen window without clips) */
 | 
				
			||||||
| 
						 | 
					@ -757,19 +753,19 @@ xwl_present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 | 
				
			||||||
    struct xwl_present_window *xwl_present_window = xwl_present_window_get_priv(window);
 | 
					    struct xwl_present_window *xwl_present_window = xwl_present_window_get_priv(window);
 | 
				
			||||||
    present_vblank_ptr flip_pending = xwl_present_get_pending_flip(xwl_present_window);
 | 
					    present_vblank_ptr flip_pending = xwl_present_get_pending_flip(xwl_present_window);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    xorg_list_del(&vblank->event_queue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (present_execute_wait(vblank, crtc_msc))
 | 
					    if (present_execute_wait(vblank, crtc_msc))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (flip_pending && vblank->flip && vblank->pixmap && vblank->window) {
 | 
					    if (flip_pending && vblank->flip && vblank->pixmap && vblank->window) {
 | 
				
			||||||
        DebugPresent(("\tr %" PRIu64 " %p (pending %p)\n",
 | 
					        DebugPresent(("\tr %" PRIu64 " %p (pending %p)\n",
 | 
				
			||||||
                      vblank->event_id, vblank, flip_pending));
 | 
					                      vblank->event_id, vblank, flip_pending));
 | 
				
			||||||
        xorg_list_del(&vblank->event_queue);
 | 
					 | 
				
			||||||
        xorg_list_append(&vblank->event_queue, &xwl_present_window->flip_queue);
 | 
					        xorg_list_append(&vblank->event_queue, &xwl_present_window->flip_queue);
 | 
				
			||||||
        vblank->flip_ready = TRUE;
 | 
					        vblank->flip_ready = TRUE;
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xorg_list_del(&vblank->event_queue);
 | 
					 | 
				
			||||||
    vblank->queued = FALSE;
 | 
					    vblank->queued = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (vblank->pixmap && vblank->window) {
 | 
					    if (vblank->pixmap && vblank->window) {
 | 
				
			||||||
| 
						 | 
					@ -926,8 +922,6 @@ xwl_present_pixmap(WindowPtr window,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    vblank->event_id = (uintptr_t)event;
 | 
					    vblank->event_id = (uintptr_t)event;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xorg_list_init(&event->list);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* Xwayland presentations always complete (at least) one frame after they
 | 
					    /* Xwayland presentations always complete (at least) one frame after they
 | 
				
			||||||
     * are executed
 | 
					     * are executed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,8 +58,6 @@ struct xwl_present_event {
 | 
				
			||||||
    Bool pending;
 | 
					    Bool pending;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PixmapPtr pixmap;
 | 
					    PixmapPtr pixmap;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    struct xorg_list list;
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void xwl_present_frame_callback(struct xwl_present_window *xwl_present_window);
 | 
					void xwl_present_frame_callback(struct xwl_present_window *xwl_present_window);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue