mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-10-29 05:40:12 -04:00 
			
		
		
		
	Fix various bugs
This commit is contained in:
		
							parent
							
								
									5f4c64fbeb
								
							
						
					
					
						commit
						09c8a048da
					
				
					 1 changed files with 16 additions and 6 deletions
				
			
		|  | @ -220,6 +220,9 @@ static struct tinywl_view *desktop_view_at( | |||
| } | ||||
| 
 | ||||
| static void focus_view(struct tinywl_view *view, struct wlr_surface *surface) { | ||||
| 	if (view == NULL) { | ||||
| 		return; | ||||
| 	} | ||||
| 	struct tinywl_server *server = view->server; | ||||
| 	struct wlr_seat *seat = server->seat; | ||||
| 	struct wlr_surface *prev_surface = seat->keyboard_state.focused_surface; | ||||
|  | @ -286,15 +289,13 @@ static void process_cursor_motion(struct tinywl_server *server, uint32_t time) { | |||
| 
 | ||||
| 	double sx, sy; | ||||
| 	struct wlr_seat *seat = server->seat; | ||||
| 	struct wlr_surface *surface; | ||||
| 	struct wlr_surface *surface = NULL; | ||||
| 	struct tinywl_view *view = desktop_view_at(server, | ||||
| 			server->cursor->x, server->cursor->y, &surface, &sx, &sy); | ||||
| 	if (!view) { | ||||
| 		wlr_xcursor_manager_set_cursor_image( | ||||
| 				server->cursor_mgr, "left_ptr", server->cursor); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	if (surface) { | ||||
| 		bool focus_changed = seat->pointer_state.focused_surface != surface; | ||||
| 		wlr_seat_pointer_notify_enter(seat, surface, sx, sy); | ||||
|  | @ -308,7 +309,7 @@ static void process_cursor_motion(struct tinywl_server *server, uint32_t time) { | |||
| 
 | ||||
| static void server_cursor_motion(struct wl_listener *listener, void *data) { | ||||
| 	struct tinywl_server *server = | ||||
| 		wl_container_of(listener, server, cursor_motion_absolute); | ||||
| 		wl_container_of(listener, server, cursor_motion); | ||||
| 	struct wlr_event_pointer_motion *event = data; | ||||
| 	wlr_cursor_move(server->cursor, event->device, | ||||
| 			event->delta_x, event->delta_y); | ||||
|  | @ -400,7 +401,9 @@ static void output_frame(struct wl_listener *listener, void *data) { | |||
| 	struct timespec now; | ||||
| 	clock_gettime(CLOCK_MONOTONIC, &now); | ||||
| 
 | ||||
| 	wlr_output_make_current(output->wlr_output, NULL); | ||||
| 	if (!wlr_output_make_current(output->wlr_output, NULL)) { | ||||
| 		return; | ||||
| 	} | ||||
| 	int width, height; | ||||
| 	wlr_output_effective_resolution(output->wlr_output, &width, &height); | ||||
| 	wlr_renderer_begin(renderer, width, height); | ||||
|  | @ -423,8 +426,8 @@ static void output_frame(struct wl_listener *listener, void *data) { | |||
| 				render_surface, &rdata); | ||||
| 	} | ||||
| 
 | ||||
| 	wlr_output_swap_buffers(output->wlr_output, NULL, NULL); | ||||
| 	wlr_renderer_end(renderer); | ||||
| 	wlr_output_swap_buffers(output->wlr_output, NULL, NULL); | ||||
| } | ||||
| 
 | ||||
| static void server_new_output(struct wl_listener *listener, void *data) { | ||||
|  | @ -432,6 +435,12 @@ static void server_new_output(struct wl_listener *listener, void *data) { | |||
| 		wl_container_of(listener, server, new_output); | ||||
| 	struct wlr_output *wlr_output = data; | ||||
| 
 | ||||
| 	if (!wl_list_empty(&wlr_output->modes)) { | ||||
| 		struct wlr_output_mode *mode = | ||||
| 			wl_container_of(wlr_output->modes.prev, mode, link); | ||||
| 		wlr_output_set_mode(wlr_output, mode); | ||||
| 	} | ||||
| 
 | ||||
| 	struct tinywl_output *output = | ||||
| 		calloc(1, sizeof(struct tinywl_output)); | ||||
| 	output->wlr_output = wlr_output; | ||||
|  | @ -529,6 +538,7 @@ static void server_new_xdg_surface(struct wl_listener *listener, void *data) { | |||
| } | ||||
| 
 | ||||
| int main(int argc, char *argv[]) { | ||||
| 	wlr_log_init(WLR_DEBUG, NULL); | ||||
| 	char *startup_cmd = NULL; | ||||
| 
 | ||||
| 	int c; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Drew DeVault
						Drew DeVault