aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server-client.c8
-rw-r--r--status.c18
-rw-r--r--tmux.h1
3 files changed, 19 insertions, 8 deletions
diff --git a/server-client.c b/server-client.c
index ba24034b..b436267d 100644
--- a/server-client.c
+++ b/server-client.c
@@ -281,13 +281,7 @@ server_client_lost(struct client *c)
if (c->stderr_data != c->stdout_data)
evbuffer_free(c->stderr_data);
- if (event_initialized(&c->status.timer))
- evtimer_del(&c->status.timer);
- screen_free(&c->status.status);
- if (c->status.old_status != NULL) {
- screen_free(c->status.old_status);
- free(c->status.old_status);
- }
+ status_free(c);
free(c->title);
free((void *)c->cwd);
diff --git a/status.c b/status.c
index bd639d79..65579a26 100644
--- a/status.c
+++ b/status.c
@@ -296,7 +296,23 @@ status_get_window_at(struct client *c, u_int x)
return (NULL);
}
-/* Draw status for client on the last lines of given context. */
+/* Free status line. */
+void
+status_free(struct client *c)
+{
+ struct status_line *sl = &c->status;
+
+ if (event_initialized(&sl->timer))
+ evtimer_del(&sl->timer);
+
+ screen_free(&sl->status);
+ if (sl->old_status != NULL) {
+ screen_free(sl->old_status);
+ free(sl->old_status);
+ }
+}
+
+/* Draw status line for client. */
int
status_redraw(struct client *c)
{
diff --git a/tmux.h b/tmux.h
index eb55a588..26f11e23 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1970,6 +1970,7 @@ void status_update_saved(struct session *);
int status_at_line(struct client *);
u_int status_line_size(struct client *);
struct window *status_get_window_at(struct client *, u_int);
+void status_free(struct client *);
int status_redraw(struct client *);
void printflike(2, 3) status_message_set(struct client *, const char *, ...);
void status_message_clear(struct client *);