The branch, master has been updated
       via  3d9fd1c7f2724b887ec6d2ea07edf3bf70385d75 (commit)
      from  d1e8fb33dab9d2ed2888263d98da1e8d12a4e4e5 (commit)

- Log -----------------------------------------------------------------
commit 3d9fd1c7f2724b887ec6d2ea07edf3bf70385d75
Author: Nicholas Marriott <nicholas.marri...@gmail.com>
Commit: Nicholas Marriott <nicholas.marri...@gmail.com>

    Add various checks to turn off bits that can't work in control mode (such as
    lock).
---
 server-client.c |   13 ++++++++++---
 server-fn.c     |    3 +++
 server-window.c |    4 ++--
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/server-client.c b/server-client.c
index e683a20..e7c117f 100644
--- a/server-client.c
+++ b/server-client.c
@@ -355,6 +355,7 @@ server_client_handle_key(struct client *c, int key)
        /* Check the client is good to accept input. */
        if ((c->flags & (CLIENT_DEAD|CLIENT_SUSPENDED)) != 0)
                return;
+
        if (c->session == NULL)
                return;
        s = c->session;
@@ -528,6 +529,9 @@ server_client_reset_state(struct client *c)
        if (c->flags & CLIENT_SUSPENDED)
                return;
 
+       if (c->flags & CLIENT_CONTROL)
+               return;
+
        tty_region(&c->tty, 0, c->tty.sy - 1);
 
        status = options_get_number(oo, "status");
@@ -625,7 +629,7 @@ server_client_check_redraw(struct client *c)
        struct window_pane      *wp;
        int                      flags, redraw;
 
-       if (c->flags & CLIENT_SUSPENDED)
+       if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED))
                return;
 
        flags = c->tty.flags & TTY_FREEZE;
@@ -755,6 +759,8 @@ server_client_msg_dispatch(struct client *c)
                        if (datalen != 0)
                                fatalx("bad MSG_RESIZE size");
 
+                       if (c->flags & CLIENT_CONTROL)
+                               break;
                        if (tty_resize(&c->tty)) {
                                recalculate_sizes();
                                server_redraw_client(c);
@@ -924,7 +930,7 @@ server_client_msg_identify(
 
        if (data->flags & IDENTIFY_CONTROL) {
                c->stdin_callback = control_callback;
-               c->flags |= (CLIENT_CONTROL|CLIENT_SUSPENDED);
+               c->flags |= CLIENT_CONTROL;
                server_write_client(c, MSG_STDIN, NULL, 0);
 
                c->tty.fd = -1;
@@ -949,7 +955,8 @@ server_client_msg_identify(
 
        tty_resize(&c->tty);
 
-       c->flags |= CLIENT_TERMINAL;
+       if (!(data->flags & IDENTIFY_CONTROL))
+               c->flags |= CLIENT_TERMINAL;
 }
 
 /* Handle shell message. */
diff --git a/server-fn.c b/server-fn.c
index b21d94a..87811c1 100644
--- a/server-fn.c
+++ b/server-fn.c
@@ -239,6 +239,9 @@ server_lock_client(struct client *c)
        size_t                   cmdlen;
        struct msg_lock_data     lockdata;
 
+       if (!(c->flags & CLIENT_CONTROL))
+               return;
+
        if (c->flags & CLIENT_SUSPENDED)
                return;
 
diff --git a/server-window.c b/server-window.c
index fce6439..4f5a550 100644
--- a/server-window.c
+++ b/server-window.c
@@ -85,7 +85,7 @@ server_window_check_bell(struct session *s, struct winlink 
*wl)
                return (0);
        for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
                c = ARRAY_ITEM(&clients, i);
-               if (c == NULL || c->session != s)
+               if (c == NULL || c->session != s || (c->flags & CLIENT_CONTROL))
                        continue;
                if (!visual) {
                        tty_bell(&c->tty);
@@ -242,7 +242,7 @@ ring_bell(struct session *s)
 
        for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
                c = ARRAY_ITEM(&clients, i);
-               if (c != NULL && c->session == s)
+               if (c != NULL && c->session == s && !(c->flags & 
CLIENT_CONTROL))
                        tty_bell(&c->tty);
        }
 }


-----------------------------------------------------------------------

Summary of changes:
 server-client.c |   13 ++++++++++---
 server-fn.c     |    3 +++
 server-window.c |    4 ++--
 3 files changed, 15 insertions(+), 5 deletions(-)


hooks/post-receive
-- 
tmux

------------------------------------------------------------------------------
The Go Parallel Website, sponsored by Intel - in partnership with Geeknet, 
is your hub for all things parallel software development, from weekly thought 
leadership blogs to news, videos, case studies, tutorials, tech docs, 
whitepapers, evaluation guides, and opinion stories. Check out the most 
recent posts - join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
tmux-cvs mailing list
tmux-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to