summaryrefslogtreecommitdiff
path: root/src/til.c
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2022-04-14 16:51:54 -0700
committerVito Caputo <vcaputo@pengaru.com>2022-04-14 16:51:54 -0700
commit95ef32f1a667af567b9d3173fe456154e522dfde (patch)
tree37d01094bb7567d35e8589bbae1fb46f5e32f2b4 /src/til.c
parent2c01f07385db88fa92f3a3789457c68db0d7d49e (diff)
til: seed srand in til_init()
A future commit will remove srand() calls from modules, relying instead on this srand() in til_init(). As mentioned in the comment, if modules actually want reproducible deterministic pseudo-random values they should use rand_r() (or their own PRNG) where they can control the seed.
Diffstat (limited to 'src/til.c')
-rw-r--r--src/til.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/til.c b/src/til.c
index 3cbd294..651a23a 100644
--- a/src/til.c
+++ b/src/til.c
@@ -8,6 +8,7 @@
#include <string.h>
#include <stdint.h>
#include <sys/time.h>
+#include <time.h>
#include <unistd.h>
#include "til.h"
@@ -68,6 +69,14 @@ static const til_module_t *modules[] = {
/* initialize rototiller (create rendering threads) */
int til_init(void)
{
+ /* Various modules seed srand(), just do it here so they don't need to.
+ * At some point in the future this might become undesirable, if reproducible
+ * pseudo-randomized output is actually desirable. But that should probably be
+ * achieved using rand_r() anyways, since modules can't prevent others from playing
+ * with srand().
+ */
+ srand(time(NULL) + getpid());
+
if (!(til_threads = til_threads_create()))
return -errno;
© All Rights Reserved