--- ray/src/rt/rvmain.c 2009/12/12 19:01:00 2.10 +++ ray/src/rt/rvmain.c 2015/04/23 17:42:04 2.13 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rvmain.c,v 2.10 2009/12/12 19:01:00 greg Exp $"; +static const char RCSid[] = "$Id: rvmain.c,v 2.13 2015/04/23 17:42:04 greg Exp $"; #endif /* * rvmain.c - main for rview interactive viewer @@ -18,6 +18,7 @@ static const char RCSid[] = "$Id: rvmain.c,v 2.10 2009 #include "random.h" #include "paths.h" #include "view.h" +#include "pmapray.h" extern char *progname; /* global argv[0] */ @@ -196,10 +197,12 @@ main(int argc, char *argv[]) error(USER, err); /* set up signal handling */ sigdie(SIGINT, "Interrupt"); - sigdie(SIGHUP, "Hangup"); sigdie(SIGTERM, "Terminate"); +#ifndef _WIN32 + sigdie(SIGHUP, "Hangup"); sigdie(SIGPIPE, "Broken pipe"); sigdie(SIGALRM, "Alarm clock"); +#endif /* open error file */ if (errfile != NULL) { if (freopen(errfile, "a", stderr) == NULL) @@ -225,12 +228,15 @@ main(int argc, char *argv[]) /* set up output & start process(es) */ SET_FILE_BINARY(stdout); - ray_init(octnm); - + ray_init(octnm); /* also calls ray_init_pmap() */ + rview(); /* run interactive viewer */ devclose(); /* close output device */ + /* PMAP: free photon maps */ + ray_done_pmap(); + quit(0); badopt: @@ -285,8 +291,10 @@ onsig( /* fatal signal */ if (gotsig++) /* two signals and we're gone! */ _exit(signo); +#ifndef _WIN32 alarm(15); /* allow 15 seconds to clean up */ signal(SIGALRM, SIG_DFL); /* make certain we do die */ +#endif eputs("signal - "); eputs(sigerr[signo]); eputs("\n");