commit f494421
neauoire
·
2022-03-27 03:20:29 +0000 UTC
parent a34ceda
Implemented controller
3 files changed,
+16,
-16
+0,
-0
+0,
-0
+16,
-16
1@@ -67,6 +67,16 @@ load(Uxn *u, char *filepath)
2 return 1;
3 }
4
5+void
6+redraw(Display *display, Visual *visual, Window window)
7+{
8+ XImage *ximage;
9+ screen_redraw(&uxn_screen, uxn_screen.pixels);
10+ ximage = XCreateImage(display, visual, DefaultDepth(display, DefaultScreen(display)), ZPixmap, 0, (char *)uxn_screen.pixels, uxn_screen.width, uxn_screen.height, 32, 0);
11+ XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, 0, 0, uxn_screen.width, uxn_screen.height);
12+ /* XDestroyImage(ximage); */
13+}
14+
15 /* /usr/include/X11/keysymdef.h */
16
17 #define XK_Left 0xff51
18@@ -80,13 +90,13 @@ load(Uxn *u, char *filepath)
19 #define XK_Alt 0xffe9
20
21 void
22-processEvent(Display *display, Window window, XImage *ximage, int width, int height)
23+processEvent(Display *display, Visual *visual, Window window)
24 {
25 XEvent ev;
26 XNextEvent(display, &ev);
27 switch(ev.type) {
28 case Expose:
29- XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, 0, 0, width, height);
30+ redraw(display, visual, window);
31 break;
32 case KeyPress: {
33 XKeyPressedEvent *e = (XKeyPressedEvent *)&ev;
34@@ -113,6 +123,9 @@ processEvent(Display *display, Window window, XImage *ximage, int width, int hei
35 case ButtonPress:
36 exit(0);
37 }
38+ if(uxn_screen.fg.changed || uxn_screen.bg.changed) {
39+ redraw(display, visual, window);
40+ }
41 }
42
43 static int
44@@ -139,11 +152,6 @@ start(Uxn *u)
45 return 1;
46 }
47
48-void
49-redraw(void)
50-{
51-}
52-
53 int
54 main(int argc, char **argv)
55 {
56@@ -161,9 +169,6 @@ main(int argc, char **argv)
57 if(!uxn_eval(&u, PAGE_PROGRAM))
58 return error("Boot", "Failed to start rom.");
59
60- screen_redraw(&uxn_screen, uxn_screen.pixels);
61-
62- XImage *ximage;
63 Display *display = XOpenDisplay(NULL);
64 Visual *visual = DefaultVisual(display, 0);
65 Window window = XCreateSimpleWindow(display, RootWindow(display, 0), 0, 0, uxn_screen.width, uxn_screen.height, 1, 0, 0);
66@@ -172,15 +177,10 @@ main(int argc, char **argv)
67 exit(1);
68 }
69
70- ximage = XCreateImage(display, visual, DefaultDepth(display, DefaultScreen(display)), ZPixmap, 0, (char *)uxn_screen.pixels, uxn_screen.width, uxn_screen.height, 32, 0);
71-
72 XSelectInput(display, window, ButtonPressMask | ExposureMask | KeyPressMask | KeyReleaseMask);
73 XMapWindow(display, window);
74 while(1) {
75- processEvent(display, window, ximage, uxn_screen.width, uxn_screen.height);
76-
77- if(uxn_screen.fg.changed || uxn_screen.bg.changed)
78- redraw();
79+ processEvent(display, visual, window);
80 }
81 return 0;
82 }