commit 909cc1b

Devine Lu Linvega  ·  2024-01-15 19:18:36 +0000 UTC
parent 93430ae
Housekeeping
1 files changed,  +11, -13
+11, -13
 1@@ -75,12 +75,12 @@ emu_deo(Uxn *u, Uint8 addr, Uint8 value)
 2 int
 3 emu_resize(int w, int h)
 4 {
 5-	int s = uxn_screen.scale;
 6-	static Visual *visual;
 7 	if(window) {
 8+		static Visual *visual;
 9+		w *= uxn_screen.scale, h *= uxn_screen.scale;
10 		visual = DefaultVisual(display, 0);
11-		ximage = XCreateImage(display, visual, DefaultDepth(display, DefaultScreen(display)), ZPixmap, 0, (char *)uxn_screen.pixels, w * s, h * s, 32, 0);
12-		XResizeWindow(display, window, w * s, h * s);
13+		ximage = XCreateImage(display, visual, DefaultDepth(display, DefaultScreen(display)), ZPixmap, 0, (char *)uxn_screen.pixels, w, h, 32, 0);
14+		XResizeWindow(display, window, w, h);
15 		XMapWindow(display, window);
16 	}
17 	return 1;
18@@ -93,7 +93,6 @@ emu_restart(Uxn *u, char *rom, int soft)
19 	screen_rect(uxn_screen.bg, 0, 0, uxn_screen.width, uxn_screen.height, 0);
20 	screen_rect(uxn_screen.fg, 0, 0, uxn_screen.width, uxn_screen.height, 0);
21 	system_reboot(u, rom, soft);
22-	/* set window title */
23 }
24 
25 static int
26@@ -135,11 +134,10 @@ static void
27 emu_event(Uxn *u)
28 {
29 	XEvent ev;
30-	int s = uxn_screen.scale;
31 	XNextEvent(display, &ev);
32 	switch(ev.type) {
33 	case Expose:
34-		XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, PAD, PAD, uxn_screen.width * s, uxn_screen.height * s);
35+		XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, PAD, PAD, uxn_screen.width * uxn_screen.scale, uxn_screen.height * uxn_screen.scale);
36 		break;
37 	case ClientMessage: {
38 		emu_end(u);
39@@ -180,8 +178,8 @@ emu_event(Uxn *u)
40 	} break;
41 	case MotionNotify: {
42 		XMotionEvent *e = (XMotionEvent *)&ev;
43-		int ex = (e->x - PAD) / s;
44-		int ey = (e->y - PAD) / s;
45+		int ex = (e->x - PAD) / uxn_screen.scale;
46+		int ey = (e->y - PAD) / uxn_screen.scale;
47 		int x = clamp(ex, 0, uxn_screen.width - 1);
48 		int y = clamp(ey, 0, uxn_screen.height - 1);
49 		mouse_pos(u, &u->dev[0x90], x, y);
50@@ -201,12 +199,12 @@ display_init(void)
51 	display = XOpenDisplay(NULL);
52 	if(!display)
53 		return system_error("init", "Display failed");
54-	/* default size */
55 	screen_resize(WIDTH, HEIGHT, 1);
56+	/* start window */
57 	visual = DefaultVisual(display, 0);
58-	window = XCreateSimpleWindow(display, RootWindow(display, 0), 0, 0, uxn_screen.width + PAD * 2, uxn_screen.height + PAD * 2, 1, 0, 0);
59 	if(visual->class != TrueColor)
60 		return system_error("init", "True-color visual failed");
61+	window = XCreateSimpleWindow(display, RootWindow(display, 0), 0, 0, uxn_screen.width + PAD * 2, uxn_screen.height + PAD * 2, 1, 0, 0);
62 	XSelectInput(display, window, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ExposureMask | KeyPressMask | KeyReleaseMask);
63 	wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", True);
64 	XSetWMProtocols(display, window, &wmDelete, 1);
65@@ -243,8 +241,8 @@ emu_run(Uxn *u, char *rom)
66 		while(XPending(display))
67 			emu_event(u);
68 		if(poll(&fds[1], 1, 0)) {
69-			read(fds[1].fd, expirations, 8);               /* Indicate we handled the timer */
70-			uxn_eval(u, u->dev[0x20] << 8 | u->dev[0x21]); /* Call the vector once, even if the timer fired multiple times */
71+			read(fds[1].fd, expirations, 8);
72+			uxn_eval(u, u->dev[0x20] << 8 | u->dev[0x21]);
73 			if(uxn_screen.x2) {
74 				int s = uxn_screen.scale;
75 				int x1 = uxn_screen.x1 * s, y1 = uxn_screen.y1 * s, x2 = uxn_screen.x2 * s, y2 = uxn_screen.y2 * s;