aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c45
1 files changed, 15 insertions, 30 deletions
diff --git a/main.c b/main.c
index 72112d0..14468fa 100644
--- a/main.c
+++ b/main.c
@@ -41,7 +41,6 @@ Rune keys[Ke] = {
char stats[Se][256];
Mousectl *mctl;
-Channel *drawc;
int kdown;
vlong t0, t;
double Δt;
@@ -70,30 +69,6 @@ Camcfg camcfgs[4] = {
120*DEG, 0.1, 100, Ppersp
};
-void *
-emalloc(ulong n)
-{
- void *p;
-
- p = malloc(n);
- if(p == nil)
- sysfatal("malloc: %r");
- setmalloctag(p, getcallerpc(&n));
- return p;
-}
-
-void *
-erealloc(void *p, ulong n)
-{
- void *np;
-
- np = realloc(p, n);
- if(np == nil)
- sysfatal("realloc: %r");
- setrealloctag(np, getcallerpc(&p));
- return np;
-}
-
int
depthcmp(void *a, void *b)
{
@@ -203,11 +178,15 @@ redraw(void)
}
void
-drawproc(void *)
+drawproc(void *drawc)
{
+ Channel *c;
+
threadsetname("drawproc");
+
+ c = drawc;
for(;;){
- send(drawc, nil);
+ send(c, nil);
sleep(MS2FR);
}
}
@@ -352,6 +331,7 @@ void
threadmain(int argc, char *argv[])
{
OBJ *objmesh;
+ Channel *drawc;
int i;
GEOMfmtinstall();
@@ -363,10 +343,12 @@ threadmain(int argc, char *argv[])
}ARGEND;
if(argc != 0)
usage();
+
if(initdraw(nil, nil, "3d") < 0)
sysfatal("initdraw: %r");
if((mctl = initmouse(nil, screen)) == nil)
sysfatal("initmouse: %r");
+
for(i = 0; i < nelem(cams); i++){
placecamera(&cams[i], camcfgs[i].p, camcfgs[i].lookat, camcfgs[i].up);
configcamera(&cams[i], screen, camcfgs[i].fov, camcfgs[i].clipn, camcfgs[i].clipf, camcfgs[i].ptype);
@@ -374,11 +356,14 @@ threadmain(int argc, char *argv[])
maincam = &cams[0];
if((objmesh = objparse(mdlpath)) == nil)
sysfatal("objparse: %r");
- drawc = chancreate(1, 0);
+
display->locking = 1;
unlockdisplay(display);
- proccreate(drawproc, nil, mainstacksize);
- proccreate(kbdproc, nil, mainstacksize);
+
+ drawc = chancreate(1, 0);
+ proccreate(drawproc, drawc, 1024);
+ proccreate(kbdproc, nil, 4096);
+
t0 = nsec();
for(;;){
enum {MOUSE, RESIZE, DRAW};