mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	Merge pull request #1298 from emersion/output-dangling-idle-frame
output: remove idle_frame event source when destroying output
This commit is contained in:
		
						commit
						8488ed2997
					
				
					 2 changed files with 12 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -1347,6 +1347,13 @@ static void drm_connector_cleanup(struct wlr_drm_connector *conn) {
 | 
			
		|||
		memset(&conn->output.model, 0, sizeof(conn->output.model));
 | 
			
		||||
		memset(&conn->output.serial, 0, sizeof(conn->output.serial));
 | 
			
		||||
 | 
			
		||||
		if (conn->output.idle_frame != NULL) {
 | 
			
		||||
			wl_event_source_remove(conn->output.idle_frame);
 | 
			
		||||
			conn->output.idle_frame = NULL;
 | 
			
		||||
		}
 | 
			
		||||
		conn->output.needs_swap = false;
 | 
			
		||||
		conn->output.frame_pending = false;
 | 
			
		||||
 | 
			
		||||
		conn->pageflip_pending = false;
 | 
			
		||||
		/* Fallthrough */
 | 
			
		||||
	case WLR_DRM_CONN_NEEDS_MODESET:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -298,17 +298,17 @@ void wlr_output_destroy(struct wlr_output *output) {
 | 
			
		|||
 | 
			
		||||
	wlr_signal_emit_safe(&output->events.destroy, output);
 | 
			
		||||
 | 
			
		||||
	struct wlr_output_mode *mode, *tmp_mode;
 | 
			
		||||
	wl_list_for_each_safe(mode, tmp_mode, &output->modes, link) {
 | 
			
		||||
		wl_list_remove(&mode->link);
 | 
			
		||||
		free(mode);
 | 
			
		||||
	}
 | 
			
		||||
	// The backend is responsible for free-ing the list of modes
 | 
			
		||||
 | 
			
		||||
	struct wlr_output_cursor *cursor, *tmp_cursor;
 | 
			
		||||
	wl_list_for_each_safe(cursor, tmp_cursor, &output->cursors, link) {
 | 
			
		||||
		wlr_output_cursor_destroy(cursor);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (output->idle_frame != NULL) {
 | 
			
		||||
		wl_event_source_remove(output->idle_frame);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pixman_region32_fini(&output->damage);
 | 
			
		||||
 | 
			
		||||
	if (output->impl && output->impl->destroy) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue