[BACK]Return to window.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/window.c between version 1.157 and 1.158

version 1.157, 2016/03/01 12:05:15 version 1.158, 2016/04/29 13:36:11
Line 777 
Line 777 
 {  {
         window_pane_reset_mode(wp);          window_pane_reset_mode(wp);
   
         if (event_initialized(&wp->timer))  
                 evtimer_del(&wp->timer);  
   
         if (wp->fd != -1) {          if (wp->fd != -1) {
                 bufferevent_free(wp->event);                  bufferevent_free(wp->event);
                 close(wp->fd);                  close(wp->fd);
Line 917 
Line 914 
 }  }
   
 void  void
 window_pane_timer_callback(__unused int fd, __unused short events, void *data)  
 {  
         window_pane_read_callback(NULL, data);  
 }  
   
 void  
 window_pane_read_callback(__unused struct bufferevent *bufev, void *data)  window_pane_read_callback(__unused struct bufferevent *bufev, void *data)
 {  {
         struct window_pane      *wp = data;          struct window_pane      *wp = data;
         struct evbuffer         *evb = wp->event->input;          struct evbuffer         *evb = wp->event->input;
         char                    *new_data;          char                    *new_data;
         size_t                   new_size, available;          size_t                   new_size;
         struct client           *c;  
         struct timeval           tv;  
   
         if (event_initialized(&wp->timer))          log_debug("%%%u has %zu bytes (of %zu)", wp->id, EVBUFFER_LENGTH(evb),
                 evtimer_del(&wp->timer);              (size_t)READ_SIZE);
   
         log_debug("%%%u has %zu bytes", wp->id, EVBUFFER_LENGTH(evb));  
   
         TAILQ_FOREACH(c, &clients, entry) {  
                 if (!tty_client_ready(c, wp))  
                         continue;  
   
                 available = EVBUFFER_LENGTH(c->tty.event->output);  
                 if (available > READ_BACKOFF)  
                         goto start_timer;  
         }  
   
         new_size = EVBUFFER_LENGTH(evb) - wp->pipe_off;          new_size = EVBUFFER_LENGTH(evb) - wp->pipe_off;
         if (wp->pipe_fd != -1 && new_size > 0) {          if (wp->pipe_fd != -1 && new_size > 0) {
                 new_data = EVBUFFER_DATA(evb) + wp->pipe_off;                  new_data = EVBUFFER_DATA(evb) + wp->pipe_off;
Line 955 
Line 933 
         input_parse(wp);          input_parse(wp);
   
         wp->pipe_off = EVBUFFER_LENGTH(evb);          wp->pipe_off = EVBUFFER_LENGTH(evb);
         return;  
   
 start_timer:  
         log_debug("%%%u backing off (%s %zu > %d)", wp->id, c->ttyname,  
             available, READ_BACKOFF);  
   
         tv.tv_sec = 0;  
         tv.tv_usec = READ_TIME;  
   
         evtimer_set(&wp->timer, window_pane_timer_callback, wp);  
         evtimer_add(&wp->timer, &tv);  
 }  }
   
 void  void

Legend:
Removed from v.1.157  
changed lines
  Added in v.1.158