shithub: 3dee

Download patch

ref: 58984162438c40552bdbf3688fa65058c40c7d1b
parent: 6c3772e7d7e63eede6ffd8a5d289e804ffd3f5e1
author: rodri <rgl@antares-labs.eu>
date: Tue Apr 8 12:58:20 EDT 2025

avoid overdrawing in the renderproc

--- a/med.c
+++ b/med.c
@@ -456,7 +456,7 @@
 		shootcamera(compass.cam, getshader("ident"));
 
 		Δt = nanosec() - t0;
-		if(Δt > HZ2MS(60)*1000000ULL){
+		if(Δt > HZ2NS(60)){
 			lockdisplay(display);
 			draw(screenb, screenb->r, bg, nil, ZP);
 			cam->view->draw(cam->view, screenb, nil);
@@ -464,7 +464,7 @@
 			unlockdisplay(display);
 
 			nbsend(drawc, nil);
-			t0 += Δt;
+			t0 = nanosec();
 		}
 	}
 }
--- a/solar.c
+++ b/solar.c
@@ -559,13 +559,13 @@
 	for(;;){
 		shootcamera(camera, &shader);
 		Δt = nanosec() - t0;
-		if(Δt > HZ2MS(60)*1000000ULL){
+		if(Δt > HZ2NS(60)){
 			lockdisplay(display);
 			draw(screenb, screenb->r, bg, nil, ZP);
 			camera->view->draw(camera->view, screenb, nil);
 			unlockdisplay(display);
 			nbsend(drawc, nil);
-			t0 += Δt;
+			t0 = nanosec();
 		}
 	}
 }
--- a/vis.c
+++ b/vis.c
@@ -240,7 +240,7 @@
 		shootcamera(maincam, shader);
 
 		Δt = nanosec() - t0;
-		if(Δt > HZ2MS(60)*1000000ULL){
+		if(Δt > HZ2NS(60)){
 			lockdisplay(display);
 			draw(screenb, screenb->r, clr, nil, ZP);
 			maincam->view->draw(maincam->view, screenb, curraster);
@@ -247,7 +247,6 @@
 			unlockdisplay(display);
 
 			nbsend(drawc, nil);
-			t0 += Δt;
 
 			if(inception){
 				freememimage(mtl->diffusemap->image);
@@ -255,6 +254,7 @@
 				if((mtl->diffusemap->image = readmemimage(fd)) == nil)
 					sysfatal("readmemimage: %r");
 			}
+			t0 = nanosec();
 		}
 	}
 }