mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Make session_update_activity more useful and use it in more places.
This commit is contained in:
		@@ -135,7 +135,7 @@ cmd_attach_session(struct cmd_q *cmdq, const char *tflag, int dflag, int rflag,
 | 
				
			|||||||
		c->session = s;
 | 
							c->session = s;
 | 
				
			||||||
		status_timer_start(c);
 | 
							status_timer_start(c);
 | 
				
			||||||
		notify_attached_session_changed(c);
 | 
							notify_attached_session_changed(c);
 | 
				
			||||||
		session_update_activity(s);
 | 
							session_update_activity(s, NULL);
 | 
				
			||||||
		server_redraw_client(c);
 | 
							server_redraw_client(c);
 | 
				
			||||||
		s->curw->flags &= ~WINLINK_ALERTFLAGS;
 | 
							s->curw->flags &= ~WINLINK_ALERTFLAGS;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
@@ -180,7 +180,7 @@ cmd_attach_session(struct cmd_q *cmdq, const char *tflag, int dflag, int rflag,
 | 
				
			|||||||
		c->session = s;
 | 
							c->session = s;
 | 
				
			||||||
		status_timer_start(c);
 | 
							status_timer_start(c);
 | 
				
			||||||
		notify_attached_session_changed(c);
 | 
							notify_attached_session_changed(c);
 | 
				
			||||||
		session_update_activity(s);
 | 
							session_update_activity(s, NULL);
 | 
				
			||||||
		server_redraw_client(c);
 | 
							server_redraw_client(c);
 | 
				
			||||||
		s->curw->flags &= ~WINLINK_ALERTFLAGS;
 | 
							s->curw->flags &= ~WINLINK_ALERTFLAGS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -277,7 +277,7 @@ cmd_new_session_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
				
			|||||||
		c->session = s;
 | 
							c->session = s;
 | 
				
			||||||
		status_timer_start(c);
 | 
							status_timer_start(c);
 | 
				
			||||||
		notify_attached_session_changed(c);
 | 
							notify_attached_session_changed(c);
 | 
				
			||||||
		session_update_activity(s);
 | 
							session_update_activity(s, NULL);
 | 
				
			||||||
		server_redraw_client(c);
 | 
							server_redraw_client(c);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	recalculate_sizes();
 | 
						recalculate_sizes();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,7 +128,7 @@ cmd_switch_client_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
				
			|||||||
		c->last_session = c->session;
 | 
							c->last_session = c->session;
 | 
				
			||||||
	c->session = s;
 | 
						c->session = s;
 | 
				
			||||||
	status_timer_start(c);
 | 
						status_timer_start(c);
 | 
				
			||||||
	session_update_activity(s);
 | 
						session_update_activity(s, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	recalculate_sizes();
 | 
						recalculate_sizes();
 | 
				
			||||||
	server_check_unattached();
 | 
						server_check_unattached();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -561,9 +561,7 @@ server_client_handle_key(struct client *c, int key)
 | 
				
			|||||||
	/* Update the activity timer. */
 | 
						/* Update the activity timer. */
 | 
				
			||||||
	if (gettimeofday(&c->activity_time, NULL) != 0)
 | 
						if (gettimeofday(&c->activity_time, NULL) != 0)
 | 
				
			||||||
		fatal("gettimeofday failed");
 | 
							fatal("gettimeofday failed");
 | 
				
			||||||
	memcpy(&s->last_activity_time, &s->activity_time,
 | 
						session_update_activity(s, &c->activity_time);
 | 
				
			||||||
	    sizeof s->last_activity_time);
 | 
					 | 
				
			||||||
	memcpy(&s->activity_time, &c->activity_time, sizeof s->activity_time);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Number keys jump to pane in identify mode. */
 | 
						/* Number keys jump to pane in identify mode. */
 | 
				
			||||||
	if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
 | 
						if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
 | 
				
			||||||
@@ -981,6 +979,7 @@ server_client_msg_dispatch(struct client *c)
 | 
				
			|||||||
	struct msg_stdin_data	 stdindata;
 | 
						struct msg_stdin_data	 stdindata;
 | 
				
			||||||
	const char		*data;
 | 
						const char		*data;
 | 
				
			||||||
	ssize_t			 n, datalen;
 | 
						ssize_t			 n, datalen;
 | 
				
			||||||
 | 
						struct session		*s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((n = imsg_read(&c->ibuf)) == -1 || n == 0)
 | 
						if ((n = imsg_read(&c->ibuf)) == -1 || n == 0)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
@@ -1064,11 +1063,12 @@ server_client_msg_dispatch(struct client *c)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			if (c->tty.fd == -1) /* exited in the meantime */
 | 
								if (c->tty.fd == -1) /* exited in the meantime */
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
 | 
								s = c->session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (gettimeofday(&c->activity_time, NULL) != 0)
 | 
								if (gettimeofday(&c->activity_time, NULL) != 0)
 | 
				
			||||||
				fatal("gettimeofday");
 | 
									fatal("gettimeofday");
 | 
				
			||||||
			if (c->session != NULL)
 | 
								if (s != NULL)
 | 
				
			||||||
				session_update_activity(c->session);
 | 
									session_update_activity(s, &c->activity_time);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			tty_start_tty(&c->tty);
 | 
								tty_start_tty(&c->tty);
 | 
				
			||||||
			server_redraw_client(c);
 | 
								server_redraw_client(c);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -421,7 +421,7 @@ server_destroy_session(struct session *s)
 | 
				
			|||||||
			c->session = s_new;
 | 
								c->session = s_new;
 | 
				
			||||||
			status_timer_start(c);
 | 
								status_timer_start(c);
 | 
				
			||||||
			notify_attached_session_changed(c);
 | 
								notify_attached_session_changed(c);
 | 
				
			||||||
			session_update_activity(s_new);
 | 
								session_update_activity(s_new, NULL);
 | 
				
			||||||
			server_redraw_client(c);
 | 
								server_redraw_client(c);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								session.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								session.c
									
									
									
									
									
								
							@@ -112,10 +112,6 @@ session_create(const char *name, int argc, char **argv, const char *path,
 | 
				
			|||||||
	s->references = 1;
 | 
						s->references = 1;
 | 
				
			||||||
	s->flags = 0;
 | 
						s->flags = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (gettimeofday(&s->creation_time, NULL) != 0)
 | 
					 | 
				
			||||||
		fatal("gettimeofday failed");
 | 
					 | 
				
			||||||
	session_update_activity(s);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	s->cwd = dup(cwd);
 | 
						s->cwd = dup(cwd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s->curw = NULL;
 | 
						s->curw = NULL;
 | 
				
			||||||
@@ -133,6 +129,10 @@ session_create(const char *name, int argc, char **argv, const char *path,
 | 
				
			|||||||
		memcpy(s->tio, tio, sizeof *s->tio);
 | 
							memcpy(s->tio, tio, sizeof *s->tio);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (gettimeofday(&s->creation_time, NULL) != 0)
 | 
				
			||||||
 | 
							fatal("gettimeofday failed");
 | 
				
			||||||
 | 
						session_update_activity(s, &s->creation_time);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s->sx = sx;
 | 
						s->sx = sx;
 | 
				
			||||||
	s->sy = sy;
 | 
						s->sy = sy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -224,12 +224,17 @@ session_check_name(const char *name)
 | 
				
			|||||||
	return (*name != '\0' && name[strcspn(name, ":.")] == '\0');
 | 
						return (*name != '\0' && name[strcspn(name, ":.")] == '\0');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Update session active time. */
 | 
					/* Update activity time. */
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
session_update_activity(struct session *s)
 | 
					session_update_activity(struct session *s, struct timeval *from)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (gettimeofday(&s->activity_time, NULL) != 0)
 | 
						struct timeval	*last = &s->last_activity_time;
 | 
				
			||||||
		fatal("gettimeofday");
 | 
					
 | 
				
			||||||
 | 
						memcpy(last, &s->activity_time, sizeof *last);
 | 
				
			||||||
 | 
						if (from == NULL)
 | 
				
			||||||
 | 
							gettimeofday(&s->activity_time, NULL);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							memcpy(&s->activity_time, from, sizeof s->activity_time);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Find the next usable session. */
 | 
					/* Find the next usable session. */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							@@ -2248,7 +2248,7 @@ struct session	*session_create(const char *, int, char **, const char *,
 | 
				
			|||||||
void		 session_destroy(struct session *);
 | 
					void		 session_destroy(struct session *);
 | 
				
			||||||
void		 session_unref(struct session *);
 | 
					void		 session_unref(struct session *);
 | 
				
			||||||
int		 session_check_name(const char *);
 | 
					int		 session_check_name(const char *);
 | 
				
			||||||
void		 session_update_activity(struct session *);
 | 
					void		 session_update_activity(struct session *, struct timeval *);
 | 
				
			||||||
struct session	*session_next_session(struct session *);
 | 
					struct session	*session_next_session(struct session *);
 | 
				
			||||||
struct session	*session_previous_session(struct session *);
 | 
					struct session	*session_previous_session(struct session *);
 | 
				
			||||||
struct winlink	*session_new(struct session *, const char *, int, char **,
 | 
					struct winlink	*session_new(struct session *, const char *, int, char **,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user