Committed to OpenBSD, should be in SF later sometime, not sure exactly
when.

Thanks for report/testing.


On Fri, Jun 04, 2010 at 01:48:58AM +0530, Raghavendra D Prabhu wrote:
> Hi,
> The patches work fine. The issue is fixed with it. Thanks for the patch.
> 
> On Wed, Jun 02, 2010 at 11:01:30PM +0100, Nicholas Marriott wrote:
> >Please try this which should fix it (includes the part I already sent to
> >you so start from a clean tree).
> >
> >I'm not sure sending a resize message after the client attaches is the
> >best solution, and I can't actually hit the race there, although I'm
> >pretty certain it exists. Can't see anywhere else to put it though, the
> >server is entirely dependent on the client for SIGWINCH and there will
> >always be a potential gap between tty_start_tty() in the server and the
> >client changing the SIGWINCH handler.
> >
> >
> >Index: client.c
> >===================================================================
> >RCS file: /cvs/src/usr.bin/tmux/client.c,v
> >retrieving revision 1.39
> >diff -u -p -r1.39 client.c
> >--- client.c 12 May 2010 15:05:39 -0000      1.39
> >+++ client.c 2 Jun 2010 21:58:43 -0000
> >@@ -180,6 +180,13 @@ client_main(void)
> >     set_signals(client_signal);
> >
> >     /*
> >+     * Send a resize message immediately in case the terminal size has
> >+     * changed between the identify message to the server and the MSG_READY
> >+     * telling us to move into the client code.
> >+     */
> >+     client_write_server(MSG_RESIZE, NULL, 0);
> >+
> >+    /*
> >      * imsg_read in the first client poll loop (before the terminal has
> >      * been initialised) may have read messages into the buffer after the
> >      * MSG_READY switched to here. Process anything outstanding now to
> >Index: server-client.c
> >===================================================================
> >RCS file: /cvs/src/usr.bin/tmux/server-client.c,v
> >retrieving revision 1.31
> >diff -u -p -r1.31 server-client.c
> >--- server-client.c  23 May 2010 19:42:19 -0000      1.31
> >+++ server-client.c  2 Jun 2010 21:58:44 -0000
> >@@ -561,9 +561,10 @@ server_client_msg_dispatch(struct client
> >                     if (datalen != 0)
> >                             fatalx("bad MSG_RESIZE size");
> >
> >-                    tty_resize(&c->tty);
> >-                    recalculate_sizes();
> >-                    server_redraw_client(c);
> >+                    if (tty_resize(&c->tty)) {
> >+                            recalculate_sizes();
> >+                            server_redraw_client(c);
> >+                    }
> >                     break;
> >             case MSG_EXITING:
> >                     if (datalen != 0)
> >Index: tmux.h
> >===================================================================
> >RCS file: /cvs/src/usr.bin/tmux/tmux.h,v
> >retrieving revision 1.223
> >diff -u -p -r1.223 tmux.h
> >--- tmux.h   31 May 2010 19:51:29 -0000      1.223
> >+++ tmux.h   2 Jun 2010 21:58:45 -0000
> >@@ -1351,7 +1351,7 @@ void   tty_puts(struct tty *, const char *
> >void tty_putc(struct tty *, u_char);
> >void tty_pututf8(struct tty *, const struct grid_utf8 *);
> >void tty_init(struct tty *, int, char *);
> >-void        tty_resize(struct tty *);
> >+int tty_resize(struct tty *);
> >void tty_start_tty(struct tty *);
> >void tty_stop_tty(struct tty *);
> >void tty_set_title(struct tty *, const char *);
> >Index: tty.c
> >===================================================================
> >RCS file: /cvs/src/usr.bin/tmux/tty.c,v
> >retrieving revision 1.86
> >diff -u -p -r1.86 tty.c
> >--- tty.c    31 May 2010 19:51:29 -0000      1.86
> >+++ tty.c    2 Jun 2010 21:58:45 -0000
> >@@ -73,34 +73,55 @@ tty_init(struct tty *tty, int fd, char *
> >     tty->term_flags = 0;
> >}
> >
> >-void
> >+int
> >tty_resize(struct tty *tty)
> >{
> >     struct winsize  ws;
> >+    u_int           sx, sy;
> >
> >     if (ioctl(tty->fd, TIOCGWINSZ, &ws) != -1) {
> >-            tty->sx = ws.ws_col;
> >-            tty->sy = ws.ws_row;
> >+            sx = ws.ws_col;
> >+            if (sx == 0)
> >+                    sx = 80;
> >+            sy = ws.ws_row;
> >+            if (sy == 0)
> >+                    sy = 24;
> >+    } else {
> >+            sx = 80;
> >+            sy = 24;
> >     }
> >-    if (tty->sx == 0)
> >-            tty->sx = 80;
> >-    if (tty->sy == 0)
> >-            tty->sy = 24;
> >+    if (sx == tty->sx && sy == tty->sy)
> >+            return (0);
> >+    tty->sx = sx;
> >+    tty->sy = sy;
> >
> >     tty->cx = UINT_MAX;
> >     tty->cy = UINT_MAX;
> >
> >     tty->rupper = UINT_MAX;
> >     tty->rlower = UINT_MAX;
> >+
> >+    /*
> >+     * If the terminal has been started, reset the actual scroll region and
> >+     * cursor position, as this may not have happened.
> >+     */
> >+    if (tty->flags & TTY_STARTED) {
> >+            tty_cursor(tty, 0, 0);
> >+            tty_region(tty, 0, tty->sy - 1);
> >+    }
> >+
> >+    return (1);
> >}
> >
> >int
> >tty_open(struct tty *tty, const char *overrides, char **cause)
> >{
> >+    char    out[MAXPATHLEN];
> >     int     fd;
> >
> >     if (debug_level > 3) {
> >-            fd = open("tmux.out", O_WRONLY|O_CREAT|O_TRUNC, 0644);
> >+            xsnprintf(out, sizeof out, "tmux-out-%ld.log", (long) getpid());
> >+            fd = open(out, O_WRONLY|O_CREAT|O_TRUNC, 0644);
> >             if (fd != -1 && fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
> >                     fatal("fcntl failed");
> >             tty->log_fd = fd;
> >
> >
> >
> >
> >
> >On Thu, Jun 03, 2010 at 02:29:22AM +0530, Raghavendra D Prabhu wrote:
> >>Hi,
> >>I faced a issue of tmux not recognising the window dimensions correctly in
> >>xterm.
> >>Nicholas suggested in #tmux to add
> >>
> >>client_write_server(MSG_RESIZE, NULL, 0);
> >>
> >>in client.c(CVS head) .. That seemed to have solved the dimensions
> >>problem. But the window still does not get redrawn. Only doing
> >>prefix-r or running any
> >>other command like ls overwrites it.
> >>
> >>I have tested this with xmonad and dwm. In both this issue persists. I am
> >>attaching tmux info for reference.
> >>
> >>
> >>-------------------
> >>Raghavendra D Prabhu
> >
> >>tmux 1.3, pid 19021, started Thu Jun  3 01:56:05 2010
> >>socket path /tmp//tmux-1000/default, debug level 0
> >>system is Linux 2.6.34-rc6-zen1-EIL #7 ZEN SMP PREEMPT Fri May 14 20:04:42 
> >>IST 2010 x86_64
> >>configuration file is /home/raghavendra/.tmux.conf
> >>protocol version is 5
> >>3 clients, 2 sessions
> >>
> >>Clients:
> >> 0: /dev/pts/0 (9, 10): term [141x43 xterm-color] [flags=0x1/0x38, 
> >> references=0]
> >> 1: /dev/pts/2 (12, 13): uake [125x21 xterm-color] [flags=0x1/0x38, 
> >> references=0]
> >>
> >>Sessions: [5/10]
> >> 0: term: 2 windows (created Thu Jun  3 02:05:00 2010) [141x42] [flags=0x0, 
> >> references=0]
> >>   1: bash [141x42] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/1 20527 11 36/42, 12020 bytes; UTF-8 0/42, 0 bytes
> >>   2: mutt [141x42] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/9 21582 20 42/42, 16635 bytes; UTF-8 0/42, 0 bytes
> >> 1: uake: 6 windows (created Thu Jun  3 01:56:05 2010) [125x20] [flags=0x0, 
> >> references=0]
> >>   1: weechat-curses [125x20] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/3 19031 14 20/20, 10665 bytes; UTF-8 1/20, 550 bytes
> >>   2: bash [125x20] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/4 19033 15 40/40, 13290 bytes; UTF-8 0/40, 0 bytes
> >>   3: less [125x20] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/5 19036 16 192/199, 28850 bytes; UTF-8 0/199, 0 bytes
> >>   4: bash [125x20] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/6 19041 17 1/20, 55 bytes; UTF-8 0/20, 0 bytes
> >>   5: bash [125x20] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/7 19048 18 1/20, 55 bytes; UTF-8 0/20, 0 bytes
> >>   6: bash [125x20] [flags=0x0, references=1, last layout=-1]
> >>     0: /dev/pts/8 19054 19 36/54, 12230 bytes; UTF-8 0/54, 0 bytes
> >>
> >>Terminals:
> >>xterm-color [references=2, flags=0x0]:
> >> 1: acsc: (string) ``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
> >> 0: AX: [missing]
> >> 2: bel: (string) \007
> >> 3: blink: [missing]
> >> 4: bold: (string) \033[1m
> >> 5: civis: [missing]
> >> 6: clear: (string) \033[H\033[2J
> >> 7: cnorm: [missing]
> >> 8: colors: (number) 8
> >> 9: csr: (string) \033[%i%p1%d;%p2%dr
> >>10: cub: (string) \033[%p1%dD
> >>11: cub1: (string) \010
> >>12: cud: (string) \033[%p1%dB
> >>13: cud1: (string) \012
> >>14: cuf: (string) \033[%p1%dC
> >>15: cuf1: (string) \033[C
> >>16: cup: (string) \033[%i%p1%d;%p2%dH
> >>17: cuu: (string) \033[%p1%dA
> >>18: cuu1: (string) \033[A
> >>19: dch: (string) \033[%p1%dP
> >>20: dch1: (string) \033[P
> >>21: dim: [missing]
> >>22: dl: (string) \033[%p1%dM
> >>23: dl1: (string) \033[M
> >>24: el: (string) \033[K
> >>25: el1: [missing]
> >>26: enacs: (string) \033)0
> >>27: home: (string) \033[H
> >>28: hpa: [missing]
> >>29: ich: [missing]
> >>30: ich1: [missing]
> >>31: il: (string) \033[%p1%dL
> >>32: il1: (string) \033[L
> >>33: invis: [missing]
> >>34: is1: [missing]
> >>35: is2: (string) \033[m\033[?7h\033[4l\033>\0337\033[r\033[?1;3;4;6l\0338
> >>36: is3: [missing]
> >>37: kcbt: [missing]
> >>38: kcub1: (string) \033OD
> >>39: kcud1: (string) \033OB
> >>40: kcuf1: (string) \033OC
> >>41: kcuu1: (string) \033OA
> >>42: kDC: [missing]
> >>43: kDC3: [missing]
> >>44: kDC4: [missing]
> >>45: kDC5: [missing]
> >>46: kDC6: [missing]
> >>47: kDC7: [missing]
> >>48: kdch1: (string) \033[3~
> >>49: kDN: [missing]
> >>50: kDN3: [missing]
> >>51: kDN4: [missing]
> >>52: kDN5: [missing]
> >>53: kDN6: [missing]
> >>54: kDN7: [missing]
> >>55: kend: [missing]
> >>56: kEND: [missing]
> >>57: kEND3: [missing]
> >>58: kEND4: [missing]
> >>59: kEND5: [missing]
> >>60: kEND6: [missing]
> >>61: kEND7: [missing]
> >>62: kf1: (string) \033[11~
> >>63: kf10: (string) \033[21~
> >>64: kf11: (string) \033[23~
> >>65: kf12: (string) \033[24~
> >>66: kf13: (string) \033[25~
> >>67: kf14: (string) \033[26~
> >>68: kf15: (string) \033[28~
> >>69: kf16: (string) \033[29~
> >>70: kf17: (string) \033[31~
> >>71: kf18: (string) \033[32~
> >>72: kf19: (string) \033[33~
> >>73: kf2: (string) \033[12~
> >>74: kf20: (string) \033[34~
> >>75: kf3: (string) \033[13~
> >>76: kf4: (string) \033[14~
> >>77: kf5: (string) \033[15~
> >>78: kf6: (string) \033[17~
> >>79: kf7: (string) \033[18~
> >>80: kf8: (string) \033[19~
> >>81: kf9: (string) \033[20~
> >>82: kHOM: [missing]
> >>83: kHOM3: [missing]
> >>84: kHOM4: [missing]
> >>85: kHOM5: [missing]
> >>86: kHOM6: [missing]
> >>87: kHOM7: [missing]
> >>88: khome: [missing]
> >>89: kIC: [missing]
> >>90: kIC3: [missing]
> >>91: kIC4: [missing]
> >>92: kIC5: [missing]
> >>93: kIC6: [missing]
> >>94: kIC7: [missing]
> >>95: kich1: (string) \033[2~
> >>96: kLFT: [missing]
> >>97: kLFT3: [missing]
> >>98: kLFT4: [missing]
> >>99: kLFT5: [missing]
> >>100: kLFT6: [missing]
> >>101: kLFT7: [missing]
> >>102: kmous: (string) \033[M
> >>103: knp: (string) \033[6~
> >>104: kNXT: [missing]
> >>105: kNXT3: [missing]
> >>106: kNXT4: [missing]
> >>107: kNXT5: [missing]
> >>108: kNXT6: [missing]
> >>109: kNXT7: [missing]
> >>110: kpp: (string) \033[5~
> >>111: kPRV: [missing]
> >>112: kPRV3: [missing]
> >>113: kPRV4: [missing]
> >>114: kPRV5: [missing]
> >>115: kPRV6: [missing]
> >>116: kPRV7: [missing]
> >>117: kRIT: [missing]
> >>118: kRIT3: [missing]
> >>119: kRIT4: [missing]
> >>120: kRIT5: [missing]
> >>121: kRIT6: [missing]
> >>122: kRIT7: [missing]
> >>123: kUP: [missing]
> >>124: kUP3: [missing]
> >>125: kUP4: [missing]
> >>126: kUP5: [missing]
> >>127: kUP6: [missing]
> >>128: kUP7: [missing]
> >>129: op: (string) \033[m
> >>130: rev: (string) \033[7m
> >>131: ri: (string) \033M
> >>132: rmacs: (string) \017
> >>133: rmcup: (string) \033[2J\033[?47l\0338
> >>134: rmir: (string) \033[4l
> >>135: rmkx: (string) \033[?1l\033>
> >>136: setab: (string) \033[4%p1%dm
> >>137: setaf: (string) \033[3%p1%dm
> >>138: sgr0: (string) \033[m
> >>139: smacs: (string) \016
> >>140: smcup: (string) \0337\033[?47h
> >>141: smir: (string) \033[4h
> >>142: smkx: (string) \033[?1h\033=
> >>143: smso: (string) \033[7m
> >>144: smul: (string) \033[4m
> >>145: vpa: [missing]
> >>146: xenl: (flag) true
> >>
> >>Jobs:
> >
> >
> >
> -------------------
> Raghavendra D Prabhu

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to