mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Use timeout events for the identify and message timers.
This commit is contained in:
		| @@ -120,8 +120,11 @@ server_client_lost(struct client *c) | ||||
| 	if (c->title != NULL) | ||||
| 		xfree(c->title); | ||||
|  | ||||
| 	evtimer_del(&c->identify_timer); | ||||
|  | ||||
| 	if (c->message_string != NULL) | ||||
| 		xfree(c->message_string); | ||||
| 	evtimer_del(&c->message_timer); | ||||
|  | ||||
| 	if (c->prompt_string != NULL) | ||||
| 		xfree(c->prompt_string); | ||||
| @@ -448,12 +451,6 @@ server_client_check_timers(struct client *c) | ||||
| 	if (gettimeofday(&tv, NULL) != 0) | ||||
| 		fatal("gettimeofday failed"); | ||||
|  | ||||
| 	if (c->flags & CLIENT_IDENTIFY && timercmp(&tv, &c->identify_timer, >)) | ||||
| 		server_clear_identify(c); | ||||
|  | ||||
| 	if (c->message_string != NULL && timercmp(&tv, &c->message_timer, >)) | ||||
| 		status_message_clear(c); | ||||
|  | ||||
| 	if (c->message_string != NULL || c->prompt_string != NULL) { | ||||
| 		/* | ||||
| 		 * Don't need timed redraw for messages/prompts so bail now. | ||||
|   | ||||
							
								
								
									
										16
									
								
								server-fn.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								server-fn.c
									
									
									
									
									
								
							| @@ -24,6 +24,8 @@ | ||||
|  | ||||
| #include "tmux.h" | ||||
|  | ||||
| void	server_callback_identify(int, short, void *); | ||||
|  | ||||
| void | ||||
| server_fill_environ(struct session *s, struct environ *env) | ||||
| { | ||||
| @@ -354,9 +356,9 @@ server_set_identify(struct client *c) | ||||
| 	tv.tv_sec = delay / 1000; | ||||
| 	tv.tv_usec = (delay % 1000) * 1000L; | ||||
| 	 | ||||
| 	if (gettimeofday(&c->identify_timer, NULL) != 0) | ||||
| 		fatal("gettimeofday failed"); | ||||
| 	timeradd(&c->identify_timer, &tv, &c->identify_timer); | ||||
| 	evtimer_del(&c->identify_timer); | ||||
| 	evtimer_set(&c->identify_timer, server_callback_identify, c); | ||||
| 	evtimer_add(&c->identify_timer, &tv); | ||||
|  | ||||
| 	c->flags |= CLIENT_IDENTIFY; | ||||
| 	c->tty.flags |= (TTY_FREEZE|TTY_NOCURSOR); | ||||
| @@ -373,6 +375,14 @@ server_clear_identify(struct client *c) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
| server_callback_identify(unused int fd, unused short events, void *data) | ||||
| { | ||||
| 	struct client	*c = data; | ||||
|  | ||||
| 	server_clear_identify(c); | ||||
| } | ||||
|  | ||||
| void | ||||
| server_update_event(struct client *c) | ||||
| { | ||||
|   | ||||
							
								
								
									
										15
									
								
								status.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								status.c
									
									
									
									
									
								
							| @@ -33,6 +33,7 @@ char   *status_job(struct client *, char **); | ||||
| void	status_job_callback(struct job *); | ||||
| size_t	status_width(struct winlink *); | ||||
| char   *status_print(struct session *, struct winlink *, struct grid_cell *); | ||||
| void	status_message_callback(int, short, void *); | ||||
|  | ||||
| void	status_prompt_add_history(struct client *); | ||||
| char   *status_prompt_complete(const char *); | ||||
| @@ -580,9 +581,9 @@ status_message_set(struct client *c, const char *fmt, ...) | ||||
| 	tv.tv_sec = delay / 1000; | ||||
| 	tv.tv_usec = (delay % 1000) * 1000L; | ||||
| 	 | ||||
| 	if (gettimeofday(&c->message_timer, NULL) != 0) | ||||
| 		fatal("gettimeofday failed"); | ||||
| 	timeradd(&c->message_timer, &tv, &c->message_timer); | ||||
| 	evtimer_del(&c->message_timer); | ||||
| 	evtimer_set(&c->message_timer, status_message_callback, c); | ||||
| 	evtimer_add(&c->message_timer, &tv); | ||||
|  | ||||
| 	c->tty.flags |= (TTY_NOCURSOR|TTY_FREEZE); | ||||
| 	c->flags |= CLIENT_STATUS; | ||||
| @@ -603,6 +604,14 @@ status_message_clear(struct client *c) | ||||
| 	screen_reinit(&c->status); | ||||
| } | ||||
|  | ||||
| void | ||||
| status_message_callback(unused int fd, unused short event, void *data) | ||||
| { | ||||
| 	struct client	*c = data; | ||||
|  | ||||
| 	status_message_clear(c); | ||||
| } | ||||
|  | ||||
| /* Draw client message on status line of present else on last line. */ | ||||
| int | ||||
| status_message_redraw(struct client *c) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Nicholas Marriott
					Nicholas Marriott