mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	x11 backend: Expose events mean "needs swap"
When the X11 server sends an expose event, that means that "this rectangle here (the event contains x,y,width,height) has undefined contents on your window; please redraw that". This means that we need a swap. However, so far the code does not actually enforce that a swap happens. For example, start rootston, switch to another workspace and then switch back. The rootston window will not be redrawn (before commit52b058c2a3, it would just be fully white; after that commit it will show whatever was visible on the old workspace). This is because the drawing code concludes that nothing needs to be done. However, in fact a swap is necessary. This reverts commite79d924588, because its optimisation is already done now: wlr_output_update_needs_swap() emits a signal, which is handled by wlr_output_damage with a call to wlr_output_schedule_frame(). This function does nothing if a frame is already pending. Thus, the optimisation from commite79d924588now happens implicitly. Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
		
							parent
							
								
									1db8667cea
								
							
						
					
					
						commit
						e5ab12339f
					
				
					 1 changed files with 2 additions and 2 deletions
				
			
		| 
						 | 
					@ -74,8 +74,8 @@ static void handle_x11_event(struct wlr_x11_backend *x11,
 | 
				
			||||||
		xcb_expose_event_t *ev = (xcb_expose_event_t *)event;
 | 
							xcb_expose_event_t *ev = (xcb_expose_event_t *)event;
 | 
				
			||||||
		struct wlr_x11_output *output =
 | 
							struct wlr_x11_output *output =
 | 
				
			||||||
			x11_output_from_window_id(x11, ev->window);
 | 
								x11_output_from_window_id(x11, ev->window);
 | 
				
			||||||
		if (output != NULL && !output->wlr_output.frame_pending) {
 | 
							if (output != NULL) {
 | 
				
			||||||
			wlr_output_send_frame(&output->wlr_output);
 | 
								wlr_output_update_needs_swap(&output->wlr_output);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue