present/wnmd: Free flip_queue entries in present_wnmd_clear_window_flip
When present_wnmd_clear_window_flip is done, present_destroy_window frees struct present_window_priv, and the events in the flip queue become unreachable. So if we don't free them first, they're leaked. Also drop the call to present_wnmd_set_abort_flip, which just sets a flag in struct present_window_priv and thus can't have any observable effect after present_destroy_window. Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1042 Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
		
							parent
							
								
									bc9dd1c71c
								
							
						
					
					
						commit
						1bdedc8dbb
					
				| 
						 | 
				
			
			@ -115,9 +115,9 @@ present_wnmd_clear_window_flip(WindowPtr window)
 | 
			
		|||
    present_window_priv_ptr     window_priv = present_window_priv(window);
 | 
			
		||||
    present_vblank_ptr          vblank, tmp;
 | 
			
		||||
 | 
			
		||||
    if (window_priv->flip_pending) {
 | 
			
		||||
        present_wnmd_set_abort_flip(window);
 | 
			
		||||
        window_priv->flip_pending->window = NULL;
 | 
			
		||||
    xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->flip_queue, event_queue) {
 | 
			
		||||
        present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
 | 
			
		||||
        present_vblank_destroy(vblank);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue