xwayland: Plug leaks in xwl_present_sync_callback
xwl_present_window->sync_callback was leaked.
The event memory was leaked if the corresponding buffer had already been
released.
(cherry picked from commit cb0de153bf)
			
			
This commit is contained in:
		
							parent
							
								
									971d418113
								
							
						
					
					
						commit
						64f5e6ec2d
					
				| 
						 | 
					@ -274,6 +274,9 @@ xwl_present_sync_callback(void *data,
 | 
				
			||||||
    struct xwl_present_event *event = data;
 | 
					    struct xwl_present_event *event = data;
 | 
				
			||||||
    struct xwl_present_window *xwl_present_window = event->xwl_present_window;
 | 
					    struct xwl_present_window *xwl_present_window = event->xwl_present_window;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wl_callback_destroy(xwl_present_window->sync_callback);
 | 
				
			||||||
 | 
					    xwl_present_window->sync_callback = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    event->pending = FALSE;
 | 
					    event->pending = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (event->abort) {
 | 
					    if (event->abort) {
 | 
				
			||||||
| 
						 | 
					@ -289,12 +292,14 @@ xwl_present_sync_callback(void *data,
 | 
				
			||||||
                              xwl_present_window->ust,
 | 
					                              xwl_present_window->ust,
 | 
				
			||||||
                              xwl_present_window->msc);
 | 
					                              xwl_present_window->msc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (event->buffer_released)
 | 
					    if (event->buffer_released) {
 | 
				
			||||||
        /* If the buffer was already released, send the event now again */
 | 
					        /* If the buffer was already released, send the event now again */
 | 
				
			||||||
        present_wnmd_event_notify(xwl_present_window->window,
 | 
					        present_wnmd_event_notify(xwl_present_window->window,
 | 
				
			||||||
                                  event->event_id,
 | 
					                                  event->event_id,
 | 
				
			||||||
                                  xwl_present_window->ust,
 | 
					                                  xwl_present_window->ust,
 | 
				
			||||||
                                  xwl_present_window->msc);
 | 
					                                  xwl_present_window->msc);
 | 
				
			||||||
 | 
					        xwl_present_free_event(event);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct wl_callback_listener xwl_present_sync_listener = {
 | 
					static const struct wl_callback_listener xwl_present_sync_listener = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue