Your mailer has mangled this patch, can you send it as an attachment please?

Also please just remove the old_x argument if you don't need it (or mark
it "unused", but I'd just remove it). And there seems no need to use
temporaries for data->c[xy].


On Mon, Dec 08, 2014 at 05:25:29PM -0800, Michael Graczyk wrote:
>    On large displays, mouse selection performance was poor.** Tmux was
>    redrawing the entire screen for every mouse coordinate update when it only
>    needed to update those lines where the selection might have changed.
>    This patch makes mouse selection buttery-smooth by only updating those
>    lines that need updating.
>    From aedcc3e976ad3df4037b479ac5b789160ab94a51 Mon Sep 17 00:00:00 2001
>    From: Michael Graczyk <[1]mich...@mgraczyk.com>
>    Date: Mon, 8 Dec 2014 16:57:49 -0800
>    Subject: [PATCH] Fix poor performance during mouse mode selection.
>    ---
>    **window-copy.c | 29 ++++++++++++++++++++++++++++-
>    **1 file changed, 28 insertions(+), 1 deletion(-)
>    diff --git a/window-copy.c b/window-copy.c
>    index f597332..e7fbd32 100644
>    --- a/window-copy.c
>    +++ b/window-copy.c
>    @@ -868,12 +868,37 @@ window_copy_key_numeric_prefix(struct window_pane
>    *wp, int key)
>    **      return (0);
>    **}
>    **
>    +static void
>    +window_copy_for_selection(
>    +               struct window_pane *wp,
>    +               u_int old_x,
>    +               u_int old_y
>    +) {
>    +       struct window_copy_mode_data    *data = wp->modedata;
>    +       const u_int new_y = data->cy;
>    +       u_int start, end, lines;
>    +
>    +       (void)old_x;
>    +       if (old_y <= new_y) {
>    +               start = old_y;
>    +               end = new_y;
>    +       } else {
>    +               start = new_y;
>    +               end = old_y;
>    +       }
>    +
>    +       lines = end - start + 1;
>    +       window_copy_redraw_lines(wp, start, lines);
>    +}
>    +
>    **void
>    **window_copy_mouse(struct window_pane *wp, struct session *sess,
>    ** ** **struct mouse_event *m)
>    **{
>    **      struct window_copy_mode_data    *data = wp->modedata;
>    **      struct screen                   *s = &data->screen;
>    +       u_int old_cx;
>    +       u_int old_cy;
>    **      u_int                            i;
>    **
>    **      if (m->x >= screen_size_x(s))
>    @@ -907,9 +932,11 @@ window_copy_mouse(struct window_pane *wp, struct
>    session *sess,
>    **       */
>    **      if (s->mode & MODE_MOUSE_BUTTON) {
>    **              if (~m->event & MOUSE_EVENT_UP) {
>    +                       old_cx = data->cx;
>    +                       old_cy = data->cy;
>    **                      window_copy_update_cursor(wp, m->x, m->y);
>    **                      if (window_copy_update_selection(wp, 1))
>    -                               window_copy_redraw_screen(wp);
>    +                               window_copy_for_selection(wp, old_cx,
>    old_cy);
>    **                      return;
>    **              }
>    **              goto reset_mode;
>    --**
>    2.2.0.rc0.207.ga3a616c
> 
> References
> 
>    Visible links
>    1. mailto:mich...@mgraczyk.com

> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk

> _______________________________________________
> tmux-users mailing list
> tmux-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tmux-users


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to