URI: 
       Update XIM cursor position only if changed - st - simple terminal
  HTML git clone https://git.parazyd.org/st
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 72e3f6c7c05b4d5b56388508bb20a863aec279f5
   DIR parent 33a9a456644ceb235ea6ce61282f3bdce7a8b547
  HTML Author: Ivan Tham <pickfire@riseup.net>
       Date:   Sun, 19 Apr 2020 19:38:39 +0200
       
       Update XIM cursor position only if changed
       
       Updating XIM cursor position is expensive, so only update it when cursor
       position changed.
       
       Diffstat:
         M st.c                                |       9 ++++++---
       
       1 file changed, 6 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/st.c b/st.c
       @@ -2571,6 +2571,7 @@ void
        drawregion(int x1, int y1, int x2, int y2)
        {
                int y;
       +
                for (y = y1; y < y2; y++) {
                        if (!term.dirty[y])
                                continue;
       @@ -2583,7 +2584,7 @@ drawregion(int x1, int y1, int x2, int y2)
        void
        draw(void)
        {
       -        int cx = term.c.x;
       +        int cx = term.c.x, ocx = term.ocx, ocy = term.ocy;
        
                if (!xstartdraw())
                        return;
       @@ -2599,9 +2600,11 @@ draw(void)
                drawregion(0, 0, term.col, term.row);
                xdrawcursor(cx, term.c.y, term.line[term.c.y][cx],
                                term.ocx, term.ocy, term.line[term.ocy][term.ocx]);
       -        term.ocx = cx, term.ocy = term.c.y;
       +        term.ocx = cx;
       +        term.ocy = term.c.y;
                xfinishdraw();
       -        xximspot(term.ocx, term.ocy);
       +        if (ocx != term.ocx || ocy != term.ocy)
       +                xximspot(term.ocx, term.ocy);
        }
        
        void