mirror of
				https://github.com/cage-kiosk/cage.git
				synced 2025-10-29 05:40:19 -04:00 
			
		
		
		
	Suppport output transforms
This commit is contained in:
		
							parent
							
								
									7379226bbe
								
							
						
					
					
						commit
						8db6b82c59
					
				
					 3 changed files with 22 additions and 7 deletions
				
			
		
							
								
								
									
										24
									
								
								output.c
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								output.c
									
										
									
									
									
								
							|  | @ -113,7 +113,7 @@ handle_output_frame(struct wl_listener *listener, void *data) | ||||||
| 	clock_gettime(CLOCK_MONOTONIC, &now); | 	clock_gettime(CLOCK_MONOTONIC, &now); | ||||||
| 
 | 
 | ||||||
| 	int width, height; | 	int width, height; | ||||||
| 	wlr_output_effective_resolution(output->wlr_output, &width, &height); | 	wlr_output_transformed_resolution(output->wlr_output, &width, &height); | ||||||
| 
 | 
 | ||||||
| 	wlr_renderer_begin(renderer, width, height); | 	wlr_renderer_begin(renderer, width, height); | ||||||
| 
 | 
 | ||||||
|  | @ -151,6 +151,17 @@ handle_output_frame(struct wl_listener *listener, void *data) | ||||||
| 	wlr_output_swap_buffers(output->wlr_output, NULL, NULL); | 	wlr_output_swap_buffers(output->wlr_output, NULL, NULL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
|  | handle_output_transform(struct wl_listener *listener, void *data) | ||||||
|  | { | ||||||
|  | 	struct cg_output *output = wl_container_of(listener, output, transform); | ||||||
|  | 
 | ||||||
|  | 	struct cg_view *view; | ||||||
|  | 	wl_list_for_each(view, &output->server->views, link) { | ||||||
|  | 		view_position(view); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void | static void | ||||||
| handle_output_mode(struct wl_listener *listener, void *data) | handle_output_mode(struct wl_listener *listener, void *data) | ||||||
| { | { | ||||||
|  | @ -165,12 +176,13 @@ handle_output_mode(struct wl_listener *listener, void *data) | ||||||
| static void | static void | ||||||
| handle_output_destroy(struct wl_listener *listener, void *data) | handle_output_destroy(struct wl_listener *listener, void *data) | ||||||
| { | { | ||||||
|         struct cg_output *output = wl_container_of(listener, output, destroy); | 	struct cg_output *output = wl_container_of(listener, output, destroy); | ||||||
| 	struct cg_server *server = output->server; | 	struct cg_server *server = output->server; | ||||||
| 
 | 
 | ||||||
|         wl_list_remove(&output->destroy.link); | 	wl_list_remove(&output->destroy.link); | ||||||
|         wl_list_remove(&output->frame.link); | 	wl_list_remove(&output->transform.link); | ||||||
|         free(output); | 	wl_list_remove(&output->frame.link); | ||||||
|  | 	free(output); | ||||||
| 	server->output = NULL; | 	server->output = NULL; | ||||||
| 
 | 
 | ||||||
| 	/* Since there is no use in continuing without our (single)
 | 	/* Since there is no use in continuing without our (single)
 | ||||||
|  | @ -201,6 +213,8 @@ handle_new_output(struct wl_listener *listener, void *data) | ||||||
| 	wl_signal_add(&wlr_output->events.frame, &server->output->frame); | 	wl_signal_add(&wlr_output->events.frame, &server->output->frame); | ||||||
| 	server->output->mode.notify = handle_output_mode; | 	server->output->mode.notify = handle_output_mode; | ||||||
| 	wl_signal_add(&wlr_output->events.mode, &server->output->mode); | 	wl_signal_add(&wlr_output->events.mode, &server->output->mode); | ||||||
|  | 	server->output->transform.notify = handle_output_transform; | ||||||
|  | 	wl_signal_add(&wlr_output->events.transform, &server->output->transform); | ||||||
| 	server->output->destroy.notify = handle_output_destroy; | 	server->output->destroy.notify = handle_output_destroy; | ||||||
| 	wl_signal_add(&wlr_output->events.destroy, &server->output->destroy); | 	wl_signal_add(&wlr_output->events.destroy, &server->output->destroy); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								output.h
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								output.h
									
										
									
									
									
								
							|  | @ -12,6 +12,7 @@ struct cg_output { | ||||||
| 
 | 
 | ||||||
| 	struct wl_listener frame; | 	struct wl_listener frame; | ||||||
| 	struct wl_listener mode; | 	struct wl_listener mode; | ||||||
|  | 	struct wl_listener transform; | ||||||
| 	struct wl_listener destroy; | 	struct wl_listener destroy; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								view.c
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								view.c
									
										
									
									
									
								
							|  | @ -40,7 +40,7 @@ view_maximize(struct cg_view *view) | ||||||
| 	struct cg_output *output = view->server->output; | 	struct cg_output *output = view->server->output; | ||||||
| 	int output_width, output_height; | 	int output_width, output_height; | ||||||
| 
 | 
 | ||||||
| 	wlr_output_effective_resolution(output->wlr_output, &output_width, &output_height); | 	wlr_output_transformed_resolution(output->wlr_output, &output_width, &output_height); | ||||||
| 	view->maximize(view, output_width, output_height); | 	view->maximize(view, output_width, output_height); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -50,7 +50,7 @@ view_center(struct cg_view *view) | ||||||
| 	struct wlr_output *output = view->server->output->wlr_output; | 	struct wlr_output *output = view->server->output->wlr_output; | ||||||
| 
 | 
 | ||||||
| 	int output_width, output_height; | 	int output_width, output_height; | ||||||
| 	wlr_output_effective_resolution(output, &output_width, &output_height); | 	wlr_output_transformed_resolution(output, &output_width, &output_height); | ||||||
| 
 | 
 | ||||||
| 	int width, height; | 	int width, height; | ||||||
| 	view->get_geometry(view, &width, &height); | 	view->get_geometry(view, &width, &height); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jente Hidskes
						Jente Hidskes