[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.262 and 1.263

version 1.262, 2020/05/16 16:50:55 version 1.263, 2020/05/21 07:24:13
Line 881 
Line 881 
         wp->sy = wp->osx = sy;          wp->sy = wp->osx = sy;
   
         wp->pipe_fd = -1;          wp->pipe_fd = -1;
         wp->pipe_off = 0;  
         wp->pipe_event = NULL;          wp->pipe_event = NULL;
   
         screen_init(&wp->base, sx, sy, hlimit);          screen_init(&wp->base, sx, sy, hlimit);
Line 933 
Line 932 
 static void  static 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;
         size_t                   size = EVBUFFER_LENGTH(evb);          struct window_pane_offset       *wpo = &wp->pipe_offset;
         char                    *new_data;          size_t                           size = EVBUFFER_LENGTH(evb);
         size_t                   new_size;          char                            *new_data;
           size_t                           new_size;
           struct client                   *c;
   
         new_size = size - wp->pipe_off;          if (wp->pipe_fd != -1) {
         if (wp->pipe_fd != -1 && new_size > 0) {                  new_data = window_pane_get_new_data(wp, wpo, &new_size);
                 new_data = EVBUFFER_DATA(evb) + wp->pipe_off;                  if (new_size > 0) {
                 bufferevent_write(wp->pipe_event, new_data, new_size);                          bufferevent_write(wp->pipe_event, new_data, new_size);
                           window_pane_update_used_data(wp, wpo, new_size, 1);
                   }
         }          }
   
         log_debug("%%%u has %zu bytes", wp->id, size);          log_debug("%%%u has %zu bytes", wp->id, size);
           TAILQ_FOREACH(c, &clients, entry) {
                   if (c->session != NULL && c->flags & CLIENT_CONTROL)
                           control_write_output(c, wp);
           }
         input_parse_pane(wp);          input_parse_pane(wp);
   
         wp->pipe_off = EVBUFFER_LENGTH(evb);  
 }  }
   
 static void  static void
Line 1540 
Line 1545 
         file_read(c, "-", window_pane_input_callback, cdata);          file_read(c, "-", window_pane_input_callback, cdata);
   
         return (0);          return (0);
   }
   
   void *
   window_pane_get_new_data(struct window_pane *wp,
       struct window_pane_offset *wpo, size_t *size)
   {
           size_t  used = wpo->used - wp->base_offset;
   
           *size = EVBUFFER_LENGTH(wp->event->input) - used;
           return (EVBUFFER_DATA(wp->event->input) + used);
   }
   
   void
   window_pane_update_used_data(struct window_pane *wp,
       struct window_pane_offset *wpo, size_t size, int acknowledge)
   {
           size_t  used = wpo->used - wp->base_offset;
   
           if (size > EVBUFFER_LENGTH(wp->event->input) - used)
                   size = EVBUFFER_LENGTH(wp->event->input) - used;
           wpo->used += size;
   
           if (acknowledge)
                   window_pane_acknowledge_data(wp, wpo, size);
   }
   
   void
   window_pane_acknowledge_data(struct window_pane *wp,
       struct window_pane_offset *wpo, size_t size)
   {
           size_t  acknowledged = wpo->acknowledged - wp->base_offset;
   
           if (size > EVBUFFER_LENGTH(wp->event->input) - acknowledged)
                   size = EVBUFFER_LENGTH(wp->event->input) - acknowledged;
           wpo->acknowledged += size;
           if (wpo->acknowledged > wpo->used)
                   wpo->acknowledged = wpo->used;
 }  }

Legend:
Removed from v.1.262  
changed lines
  Added in v.1.263