[hackers] [dwm] applied Hiltjo's resize/move limitation || Anselm R Garbe

From: <git_AT_suckless.org>
Date: Mon, 11 Aug 2014 07:25:21 +0200

commit 3d1090ba896319368c4771b88d325fcee368a608
Author: Anselm R Garbe <garbeam_AT_gmail.com>
Date: Mon Aug 11 07:24:29 2014 +0200

    applied Hiltjo's resize/move limitation
    
    "Limit the amount of updates when resizing or moving a window in floating
    mode to 60 times per second. This makes resizing and moving alot smoother
    and by limiting it it also uses alot less resources on my machine.

diff --git a/LICENSE b/LICENSE
index dc2326a..4fbb67e 100644
--- a/LICENSE
+++ b/LICENSE
_AT_@ -1,6 +1,7 @@
 MIT/X Consortium License
 
 © 2006-2014 Anselm R Garbe <anselm_AT_garbe.us>
+© 2010-2014 Hiltjo Posthuma <hiltjo_AT_codemadness.org>
 © 2007-2011 Peter Hartlich <sgkkr at hartlich dot com>
 © 2010-2011 Connor Lane Smith <cls_AT_lubutu.com>
 © 2006-2009 Jukka Salmi <jukka at salmi dot ch>
diff --git a/dwm.c b/dwm.c
index ffc8864..f896170 100644
--- a/dwm.c
+++ b/dwm.c
_AT_@ -1123,6 +1123,7 @@ movemouse(const Arg *arg) {
         Client *c;
         Monitor *m;
         XEvent ev;
+ Time lasttime = 0;
 
         if(!(c = selmon->sel))
                 return;
_AT_@ -1145,6 +1146,10 @@ movemouse(const Arg *arg) {
                         handler[ev.type](&ev);
                         break;
                 case MotionNotify:
+ if ((ev.xmotion.time - lasttime) <= (1000 / 60))
+ continue;
+ lasttime = ev.xmotion.time;
+
                         nx = ocx + (ev.xmotion.x - x);
                         ny = ocy + (ev.xmotion.y - y);
                         if(nx >= selmon->wx && nx <= selmon->wx + selmon->ww
_AT_@ -1264,11 +1269,11 @@ resizeclient(Client *c, int x, int y, int w, int h) {
 
 void
 resizemouse(const Arg *arg) {
- int ocx, ocy;
- int nw, nh;
+ int ocx, ocy, nw, nh;
         Client *c;
         Monitor *m;
         XEvent ev;
+ Time lasttime = 0;
 
         if(!(c = selmon->sel))
                 return;
_AT_@ -1290,6 +1295,10 @@ resizemouse(const Arg *arg) {
                         handler[ev.type](&ev);
                         break;
                 case MotionNotify:
+ if ((ev.xmotion.time - lasttime) <= (1000 / 60))
+ continue;
+ lasttime = ev.xmotion.time;
+
                         nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
                         nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
                         if(c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww
Received on Mon Aug 11 2014 - 07:25:21 CEST

This archive was generated by hypermail 2.3.0 : Mon Aug 11 2014 - 07:36:12 CEST