100 |
|
XSizeHints oursizhints; |
101 |
|
/* set quadtree globals */ |
102 |
|
qtDepthEps = 0.02; |
103 |
< |
qtMinNodesiz = 1; |
103 |
> |
qtMinNodesiz = 2; |
104 |
|
/* open display server */ |
105 |
|
ourdisplay = XOpenDisplay(NULL); |
106 |
|
if (ourdisplay == NULL) |
212 |
|
dev_input() /* get X11 input */ |
213 |
|
{ |
214 |
|
inpresflags = 0; |
215 |
+ |
|
216 |
|
do |
217 |
|
getevent(); |
218 |
|
|
385 |
|
{ |
386 |
|
VIEW nv; |
387 |
|
double d; |
388 |
< |
register int i; |
388 |
> |
register int i, li; |
389 |
|
/* start with old view */ |
390 |
|
copystruct(&nv, &odev.v); |
391 |
|
/* change view direction */ |
392 |
|
if (move) { |
393 |
< |
register RLEAF *lp; |
393 |
< |
if ((lp = qtFindLeaf(dx, dy)) == NULL) |
393 |
> |
if ((li = qtFindLeaf(dx, dy)) < 0) |
394 |
|
return(0); /* not on window */ |
395 |
|
for (i = 0; i < 3; i++) |
396 |
< |
nv.vdir[i] = lp->wp[i] - nv.vp[i]; |
396 |
> |
nv.vdir[i] = qtL.wp[li][i] - nv.vp[i]; |
397 |
|
} else { |
398 |
|
if (viewray(nv.vp, nv.vdir, &odev.v, |
399 |
|
(dx+.5)/odev.hres, (dy+.5)/odev.vres) < -FTINY) |
432 |
|
unsigned int statemask; |
433 |
|
|
434 |
|
qtMinNodesiz = 16; /* for quicker update */ |
435 |
+ |
qtCompost(50); |
436 |
|
|
437 |
|
do { |
438 |
|
if (!XQueryPointer(ourdisplay, gwind, &rootw, &childw, |
441 |
|
|
442 |
|
if (!moveview(wx, odev.vres-1-wy, MOVDIR(whichbutton))) |
443 |
|
sleep(1); |
444 |
+ |
else |
445 |
+ |
qtUpdate(); |
446 |
|
|
447 |
|
} while (!XCheckMaskEvent(ourdisplay, |
448 |
|
ButtonReleaseMask, levptr(XEvent))); |
475 |
|
case 'H': /* turn off height motion lock */ |
476 |
|
headlocked = 0; |
477 |
|
return; |
478 |
< |
case CTRL('Z'): |
478 |
> |
case CTRL('S'): |
479 |
|
case 'p': /* pause computation */ |
480 |
|
inpresflags |= DEV_WAIT; |
481 |
|
return; |
482 |
+ |
case CTRL('Q'): |
483 |
|
case '\n': |
484 |
< |
case '\r': /* release */ |
484 |
> |
case '\r': /* resume computation */ |
485 |
> |
inpresflags |= DEV_RESUME; |
486 |
|
return; |
487 |
|
case CTRL('R'): /* redraw */ |
488 |
|
if (ncolors > 0) |