summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2007-10-16 22:42:00 +0000
committerDimitri Sokolyuk <demon@dim13.org>2007-10-16 22:42:00 +0000
commit6d82efc70673205a0b6d07b34bcc32e1bfff853b (patch)
treee2c17a6a759add7d174778ea6737c30d9774d395
parent4cd00ace97e3bbc11d1c90a2d6adb3af53e32919 (diff)
parent908d40a0e7b8f59a2a9492493db16c1055901a11 (diff)
This commit was generated by cvs2svn to track changes on a CVS vendor
branch.
-rw-r--r--stern.c48
1 files changed, 27 insertions, 21 deletions
diff --git a/stern.c b/stern.c
index e104fc3..8f235e3 100644
--- a/stern.c
+++ b/stern.c
@@ -17,8 +17,8 @@ void DrawObject(int);
void MainLoop(void);
#define Usleep 10000
-#define Width 800
-#define Height 600
+#define Width 400
+#define Height 400
#define Pi 3.1415926
#define SECOND
@@ -91,6 +91,7 @@ GC gc;
int main(void)
{
+ XEvent event;
int screen;
int black, white;
int r = 0;
@@ -101,35 +102,40 @@ int main(void)
white = WhitePixel(display, screen);
win = XCreateSimpleWindow(display, DefaultRootWindow(display),
0, 0, Width, Height, 0, black, white);
- XMapWindow(display, win);
+
+ XSelectInput(display, win, StructureNotifyMask
+ | ExposureMask | KeyPressMask);
+
gc = XCreateGC(display, win, 0, NULL);
-
XSetForeground(display, gc, black);
XSetBackground(display, gc, white);
-
XSetLineAttributes(display, gc, 2, LineSolid, CapButt, JoinBevel);
XSetFillStyle(display, gc, FillSolid);
- XSelectInput(display, win, StructureNotifyMask);
- for (;;) {
- XEvent event;
- XNextEvent(display, &event);
- if (event.type == MapNotify)
- break;
- }
+ XMapWindow(display, win);
for (;;) {
- if (r >= 360)
- r = 0;
-
- XClearWindow(display, win);
- DrawObject(++r);
- XFlush(display);
+ if (XPending(display) == 0) {
+ XClearWindow(display, win);
+ if (r >= 360)
+ r = 0;
+ DrawObject(++r);
+ } else
+ XNextEvent(display, &event);
+
+ switch (event.type) {
+ case Expose:
+ break;
+ case MapNotify:
+ break;
+ case KeyPress:
+ XCloseDisplay(display);
+ exit(0);
+ }
usleep(Usleep);
- }
- XCloseDisplay(display);
+ }
return 0;
}
@@ -173,5 +179,5 @@ Calc3D(int *w, int *x, int *y)
*x = 2 * X * (Y + D) / D + Width / 2;
*y = 2 * Z * (Y + D) / D + Height / 2;
- return Y < 0 ? 1 : 0;
+ return Y < 0;
}