Browse code

(Screen) Use fast timer if vector short is set

Devine Lu Linvega authored on 04/03/2023 19:07:11
Showing 1 changed files
... ...
@@ -439,6 +439,7 @@ run(Uxn *u)
439 439
 {
440 440
 	Uint64 now = SDL_GetPerformanceCounter(), frame_end, frame_interval = SDL_GetPerformanceFrequency() / 60;
441 441
 	for(;;) {
442
+		Uint16 screen_vector = PEEK16(&u->dev[0x20]);
442 443
 		/* .System/halt */
443 444
 		if(u->dev[0x0f])
444 445
 			return error("Run", "Ended.");
... ...
@@ -446,11 +447,11 @@ run(Uxn *u)
446 447
 		exec_deadline = now + deadline_interval;
447 448
 		if(!handle_events(u))
448 449
 			return 0;
449
-		uxn_eval(u, PEEK16(&u->dev[0x20]));
450
+		uxn_eval(u, screen_vector);
450 451
 		if(uxn_screen.fg.changed || uxn_screen.bg.changed)
451 452
 			redraw();
452 453
 		now = SDL_GetPerformanceCounter();
453
-		if(u->dev[0x20]) {
454
+		if(screen_vector) {
454 455
 			if(!BENCH && ((Sint64)(frame_end - now)) > 0) {
455 456
 				SDL_Delay((frame_end - now) / ms_interval);
456 457
 				now = frame_end;