summaryrefslogtreecommitdiff
path: root/render.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-09-10 14:26:35 +0000
committerrodri <rgl@antares-labs.eu>2024-09-10 14:26:35 +0000
commit8806aad87f7be2d2e82c7db2b9f0978246e5a747 (patch)
treeec1e040177c0e352331911664bba862bd50fddf3 /render.c
parent6d137698282ca2c04eff4b52ac8e69ac10164a90 (diff)
downloadlibgraphics-8806aad87f7be2d2e82c7db2b9f0978246e5a747.tar.gz
libgraphics-8806aad87f7be2d2e82c7db2b9f0978246e5a747.tar.bz2
libgraphics-8806aad87f7be2d2e82c7db2b9f0978246e5a747.zip
fix a use-after-free when profiling rasterizer times.
this commit also includes the turbo drawing pool. the experiment was successful in getting reasonable drawing times to a fullhd image, but the process causes glitches when moving the objects around, which is unacceptable. it's been commented out for now.
Diffstat (limited to 'render.c')
-rw-r--r--render.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/render.c b/render.c
index 1a858e4..c86c3d8 100644
--- a/render.c
+++ b/render.c
@@ -9,6 +9,7 @@
#include "internal.h"
Rectangle UR = {0,0,1,1};
+//Procpool *turbodrawingpool;
static ulong col2ul(Color);
@@ -368,10 +369,11 @@ rasterizer(void *arg)
if(decref(job) < 1){
if(job->camera->enableAbuff)
squashAbuf(job->fb, job->camera->enableblend);
+ if(job->rctl->doprof)
+ job->times.Rn[rp->id].t1 = nanosec();
nbsend(job->donec, nil);
free(params);
- }
- if(job->rctl->doprof)
+ }else if(job->rctl->doprof)
job->times.Rn[rp->id].t1 = nanosec();
free(task);
continue;
@@ -749,6 +751,8 @@ initgraphics(void)
nproc = 1;
free(nprocs);
+// turbodrawingpool = mkprocpool(nproc);
+
r = emalloc(sizeof *r);
memset(r, 0, sizeof *r);
r->jobq = chancreate(sizeof(Renderjob*), 8);