static FILE *input_f;
static struct stat input_stab;
static const char *input_filename;
+static int pause_updates;
static void read_input(void) {
int r;
* orientable so it shouldn't matter). Picking the parallelogram
* to our right avoids getting it wrong at the join.
*/
+//if ((vb & YMASK) > Y1) continue;
+//if ((vb & XMASK) > 2) continue;
for (e=0; e<V6; e++) ve[e]= EDGE_END2(vb,e);
assert(ve[0]>=0);
if (ve[5]>=0) addtriangle(vb,ve[0],ve[5]);
+//continue;
if (ve[1]>=0) addtriangle(vb,ve[1],ve[0]);
}
if (vertex_in_triangles[v] != expd) {
fprintf(stderr,"vertex %02x used for %d triangles, expected %d\n",
v, vertex_in_triangles[v], expd);
- abort();
+// abort();
}
}
vertex_in_triangles_checked= 1;
static const unsigned long core_event_mask=
ButtonPressMask|ButtonReleaseMask|StructureNotifyMask|ButtonMotionMask|
- KeyPressMask;
+ KeyPressMask|SubstructureNotifyMask;
static void mkpixmaps(void) {
for (currentbuffer=0; currentbuffer<2; currentbuffer++) {
return;
}
- if (!strcmp(buf,"q")) exit(0);
- if (!strcmp(buf,"w")) {
+ if (!strcmp(buf,"q"))
+ exit(0);
+ else if (!strcmp(buf,"p"))
+ pause_updates= !pause_updates;
+ else if (!strcmp(buf,"w")) {
wireframe= !wireframe;
show();
return;
- }
- if (!strcmp(buf,"d")) {
+ } else if (!strcmp(buf,"d")) {
eyes_apart= eyes_apart>0 ? eyes_apart_min : eyes_apart_preferred;
show();
return;
+ } else {
+ printf("unknown key keycode=%d state=0x%x char=%c 0x%02x\n",
+ e->keycode, e->state, buf[0]>' ' && buf[0]<127 ? buf[0] : '?',
+ buf[0]);
}
}
polls[i].fd= ConnectionNumber(display);
polls[i].events= wantedevents;
- r= poll(polls, nxfds+1, motion_deferred ? 0 : 200);
- if (r<0) diee("poll");
+ r= poll(polls, nxfds+1, motion_deferred ? 0 : pause_updates ? -1 : 200);
+ if (r<0) {
+ if (errno==EINTR) continue;
+ diee("poll");
+ }
for (i=0; i<nxfds; i++)
if (polls[i].revents)
event_motion(motion_x, motion_y);
motion_deferred=0;
}
- check_input();
+ if (!pause_updates)
+ check_input();
continue;
}