diff options
author | rodri <rgl@antares-labs.eu> | 2024-09-10 14:26:35 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-09-10 14:26:35 +0000 |
commit | 8806aad87f7be2d2e82c7db2b9f0978246e5a747 (patch) | |
tree | ec1e040177c0e352331911664bba862bd50fddf3 /render.c | |
parent | 6d137698282ca2c04eff4b52ac8e69ac10164a90 (diff) | |
download | libgraphics-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.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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); |