diff options
-rw-r--r-- | source/blender/blenkernel/BKE_brush.h | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/brush.c | 16 | ||||
-rw-r--r-- | source/creator/creator.c | 3 |
4 files changed, 25 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index 4dfc70db952..e0afb1929a5 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -42,6 +42,11 @@ struct Scene; struct wmOperator; // enum CurveMappingPreset; + +/* globals for brush execution */ +void BKE_brush_system_init(void); +void BKE_brush_system_exit(void); + /* datablock functions */ struct Brush *BKE_brush_add(struct Main *bmain, const char *name); struct Brush *BKE_brush_copy(struct Brush *brush); diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index fa6aafabe05..b3c94beba93 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -66,6 +66,7 @@ #include "BKE_blender.h" #include "BKE_bpath.h" +#include "BKE_brush.h" #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_displist.h" @@ -120,6 +121,8 @@ void free_blender(void) IMB_exit(); BKE_images_exit(); + BKE_brush_system_exit(); + BLI_callback_global_finalize(); BKE_sequencer_cache_destruct(); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index c594e19b960..819d20d4770 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -55,6 +55,18 @@ #include "RE_render_ext.h" /* externtex */ #include "RE_shader_ext.h" +static RNG *brush_rng; + +void BKE_brush_system_init(void) { + brush_rng = BLI_rng_new(0); + BLI_rng_srandom(brush_rng, 31415682); +} + +void BKE_brush_system_exit(void) { + BLI_rng_free(brush_rng); +} + + static void brush_defaults(Brush *brush) { brush->blend = 0; @@ -877,8 +889,8 @@ void BKE_brush_jitter_pos(const Scene *scene, Brush *brush, const float pos[2], int diameter; do { - rand_pos[0] = BLI_frand() - 0.5f; - rand_pos[1] = BLI_frand() - 0.5f; + rand_pos[0] = BLI_rng_get_float(brush_rng) - 0.5f; + rand_pos[1] = BLI_rng_get_float(brush_rng) - 0.5f; } while (len_v2(rand_pos) > 0.5f); diff --git a/source/creator/creator.c b/source/creator/creator.c index d7b2d87ffe8..ba6cc728eca 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -84,6 +84,7 @@ #include "BLI_blenlib.h" #include "BKE_blender.h" +#include "BKE_brush.h" #include "BKE_context.h" #include "BKE_depsgraph.h" /* for DAG_on_visible_update */ #include "BKE_font.h" @@ -1486,6 +1487,8 @@ int main(int argc, const char **argv) IMB_init(); BKE_images_init(); + BKE_brush_system_init(); + #ifdef WITH_FFMPEG IMB_ffmpeg_init(); #endif |