mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
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.
This commit is contained in:
parent
8fd0f43ec2
commit
cbc7f76074
31
mousefunc.c
31
mousefunc.c
@ -90,19 +90,18 @@ mousefunc_client_resize(struct client_ctx *cc, union arg *arg)
|
|||||||
|
|
||||||
switch (ev.type) {
|
switch (ev.type) {
|
||||||
case MotionNotify:
|
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,
|
mousefunc_sweep_calc(cc, x, y,
|
||||||
ev.xmotion.x_root, ev.xmotion.y_root);
|
ev.xmotion.x_root, ev.xmotion.y_root);
|
||||||
|
client_resize(cc, 1);
|
||||||
/* don't resize more than 60 times / second */
|
mousefunc_sweep_draw(cc);
|
||||||
if ((ev.xmotion.time - ltime) > (1000 / 60)) {
|
|
||||||
ltime = ev.xmotion.time;
|
|
||||||
client_resize(cc, 1);
|
|
||||||
mousefunc_sweep_draw(cc);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
if (ltime)
|
client_resize(cc, 1);
|
||||||
client_resize(cc, 1);
|
|
||||||
XUnmapWindow(X_Dpy, sc->menuwin);
|
XUnmapWindow(X_Dpy, sc->menuwin);
|
||||||
XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0);
|
XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0);
|
||||||
xu_ptr_ungrab();
|
xu_ptr_ungrab();
|
||||||
@ -143,6 +142,11 @@ mousefunc_client_move(struct client_ctx *cc, union arg *arg)
|
|||||||
|
|
||||||
switch (ev.type) {
|
switch (ev.type) {
|
||||||
case MotionNotify:
|
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.x = ev.xmotion.x_root - px - cc->bwidth;
|
||||||
cc->geom.y = ev.xmotion.y_root - py - 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),
|
cc->geom.y + cc->geom.h + (cc->bwidth * 2),
|
||||||
xine.y, xine.y + xine.h, sc->snapdist);
|
xine.y, xine.y + xine.h, sc->snapdist);
|
||||||
|
|
||||||
/* don't move more than 60 times / second */
|
client_move(cc);
|
||||||
if ((ev.xmotion.time - ltime) > (1000 / 60)) {
|
|
||||||
ltime = ev.xmotion.time;
|
|
||||||
client_move(cc);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
if (ltime)
|
client_move(cc);
|
||||||
client_move(cc);
|
|
||||||
xu_ptr_ungrab();
|
xu_ptr_ungrab();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user