aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorokan2014-09-18 13:56:58 +0000
committerokan2014-09-18 13:56:58 +0000
commit017bbd97a8b753da84f01ac4b854464c5ea5b997 (patch)
treef04cb51beccb2b4bde76aa0ea87fba8d40bb6a70
parent83a14a0e1508598ad1d3c333ee7ae6e06f0454e5 (diff)
downloadcwm-017bbd97a8b753da84f01ac4b854464c5ea5b997.tar.gz
Move motion time check to the top of each MotionNotify block (and
eliminate from ButtonRelease); further limits the amount of work done outside the threshold, notably mousefunc_sweep_calc, screen_find_xinerama and client_snapcalc.
-rw-r--r--mousefunc.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/mousefunc.c b/mousefunc.c
index 7551ca1..5efb180 100644
--- a/mousefunc.c
+++ b/mousefunc.c
@@ -16,7 +16,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: mousefunc.c,v 1.83 2014/09/17 18:09:30 okan Exp $
+ * $OpenBSD: mousefunc.c,v 1.84 2014/09/18 13:56:58 okan Exp $
*/
#include <sys/param.h>
@@ -90,19 +90,18 @@ mousefunc_client_resize(struct client_ctx *cc, union arg *arg)
switch (ev.type) {
case MotionNotify:
+ /* not more than 60 times / second */
+ if ((ev.xmotion.time - ltime) <= (1000 / 60))
+ continue;
+ ltime = ev.xmotion.time;
+
mousefunc_sweep_calc(cc, x, y,
ev.xmotion.x_root, ev.xmotion.y_root);
-
- /* don't resize more than 60 times / second */
- if ((ev.xmotion.time - ltime) > (1000 / 60)) {
- ltime = ev.xmotion.time;
- client_resize(cc, 1);
- mousefunc_sweep_draw(cc);
- }
+ client_resize(cc, 1);
+ mousefunc_sweep_draw(cc);
break;
case ButtonRelease:
- if (ltime)
- client_resize(cc, 1);
+ client_resize(cc, 1);
XUnmapWindow(X_Dpy, sc->menuwin);
XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0);
xu_ptr_ungrab();
@@ -143,6 +142,11 @@ mousefunc_client_move(struct client_ctx *cc, union arg *arg)
switch (ev.type) {
case MotionNotify:
+ /* not more than 60 times / second */
+ if ((ev.xmotion.time - ltime) <= (1000 / 60))
+ continue;
+ ltime = ev.xmotion.time;
+
cc->geom.x = ev.xmotion.x_root - px - cc->bwidth;
cc->geom.y = ev.xmotion.y_root - py - cc->bwidth;
@@ -156,15 +160,10 @@ mousefunc_client_move(struct client_ctx *cc, union arg *arg)
cc->geom.y + cc->geom.h + (cc->bwidth * 2),
xine.y, xine.y + xine.h, sc->snapdist);
- /* don't move more than 60 times / second */
- if ((ev.xmotion.time - ltime) > (1000 / 60)) {
- ltime = ev.xmotion.time;
- client_move(cc);
- }
+ client_move(cc);
break;
case ButtonRelease:
- if (ltime)
- client_move(cc);
+ client_move(cc);
xu_ptr_ungrab();
return;
}