summaryrefslogtreecommitdiffstats
path: root/libdimension/scene.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-02-23 14:21:48 -0500
committerTavian Barnes <tavianator@gmail.com>2010-02-23 14:22:52 -0500
commitc76c0f017fa884c4b9a04ff7fa3b43d331c82d84 (patch)
tree96927779db344699486933474a48cbb51d61416c /libdimension/scene.c
parent6260a22ea7a9f08564483ea0beb76b6bdac34bb5 (diff)
downloaddimension-c76c0f017fa884c4b9a04ff7fa3b43d331c82d84.tar.xz
Determine nthreads in dmnsn_new_scene().
Diffstat (limited to 'libdimension/scene.c')
-rw-r--r--libdimension/scene.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libdimension/scene.c b/libdimension/scene.c
index 8973005..8ebf706 100644
--- a/libdimension/scene.c
+++ b/libdimension/scene.c
@@ -20,6 +20,7 @@
#include "dimension.h"
#include <stdlib.h> /* For malloc */
+#include <unistd.h> /* For sysconf */
/* Allocate an empty scene */
dmnsn_scene *
@@ -39,7 +40,12 @@ dmnsn_new_scene()
scene->lights = dmnsn_new_array(sizeof(dmnsn_light *));
scene->quality = DMNSN_RENDER_FULL;
scene->reclimit = 5;
- scene->nthreads = 0;
+
+ /* Find the number of processors/cores running (TODO: do this portably) */
+ int nprocs = sysconf(_SC_NPROCESSORS_ONLN);
+ if (nprocs < 1)
+ nprocs = 1;
+ scene->nthreads = nprocs;
}
return scene;
}