[Tizen] fixed SVACE issue about Windows Backend 07/179507/1
authorJoogab Yun <joogab.yun@samsung.com>
Fri, 18 May 2018 08:32:40 +0000 (17:32 +0900)
committerJoogab Yun <joogab.yun@samsung.com>
Fri, 18 May 2018 08:32:40 +0000 (17:32 +0900)
Change-Id: If05f02d138511dc00219d21400268029c759c391

dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp
dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.h

index efac274..c1844f6 100755 (executable)
@@ -24,8 +24,6 @@
 #include <dali/public-api/rendering/texture.h>
 #include <dali/public-api/rendering/shader.h>
 
-#include <dali/public-api/math/random.h>
-
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/bubble-effect/bubble-effect.h>
 #include <dali-toolkit/internal/controls/bubble-effect/bubble-renderer.h>
@@ -49,6 +47,19 @@ struct Vertex
   Dali::Vector2 textureCoord;
 };
 
+
+/**
+* Return a random value between the given interval.
+* @param[in] f0 The low bound
+* @param[in] f1 The up bound
+* @param[in] seed The seed to genergate random number
+* @return A random value between the given interval
+*/
+float RandomRange(float f0, float f1, unsigned int& seed)
+{
+    return f0 + (rand_r(&seed) & 0xfff) * (f1 - f0) * (1.0f / 4095.0f);
+}
+
 const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
   attribute mediump vec2 aPosition;\n
   attribute mediump vec2 aTexCoord;\n
@@ -151,6 +162,7 @@ BubbleEmitter::BubbleEmitter( const Vector2& movementArea,
   mDensity( 5 ),
   mTotalNumOfBubble( maximumNumberOfBubble ),
   mCurrentBubble( 0 ),
+  mRandomSeed( 0 ),
   mRenderTaskRunning(false)
 {
   // Calculate how many shaders are required
@@ -170,6 +182,8 @@ BubbleEmitter::BubbleEmitter( const Vector2& movementArea,
     mNumBubblePerRenderer = mTotalNumOfBubble;
     mNumRenderer = 1;
   }
+
+  mRandomSeed = time(NULL);
 }
 
 BubbleEmitter::~BubbleEmitter()
@@ -354,7 +368,7 @@ Geometry BubbleEmitter::CreateGeometry( unsigned int numOfPatch )
 
   for(unsigned int i = 0; i < numOfPatch; i++)
   {
-    float halfSize = Random::Range( mBubbleSizeRange.x, mBubbleSizeRange.y ) * 0.5f;
+    float halfSize = RandomRange(mBubbleSizeRange.x, mBubbleSizeRange.y, mRandomSeed) * 0.5f;
 
     float index = static_cast<float>( i );
     vertexData.PushBack( Vertex( index, Vector2(-halfSize,-halfSize),Vector2(0.f,0.f) ) );
@@ -392,7 +406,7 @@ void BubbleEmitter::SetBubbleParameter( BubbleRenderer& bubbleRenderer, unsigned
 
   int halfRange = displacement.x / 2;
   // for the y coordinate, always negative, so bubbles always go upwards
-  Vector2 randomVec( rand() % static_cast<int>( displacement.x ) - halfRange, -rand() % static_cast<int>( displacement.y ) );
+  Vector2 randomVec(rand_r(&mRandomSeed) % static_cast<int>(displacement.x) - halfRange, -rand_r(&mRandomSeed) % static_cast<int>(displacement.y));
   dir.Normalize();
   randomVec.x -= dir.x*halfRange;
   randomVec.y *= 1.0f - fabsf(dir.x)*0.33f;
index 8c04c6e..e6879ae 100755 (executable)
@@ -170,6 +170,7 @@ private:
   unsigned int                mDensity;             ///< How many bubbles will emit at each time, they are controlled by same uniforms in the shader.
   unsigned int                mTotalNumOfBubble;    ///< mNumBubblePerShader*mNumShader.
   unsigned int                mCurrentBubble;       ///< Keep track of the index for the newly emitted bubble
+  unsigned int                mRandomSeed;          ///< Seed to generate random number.
 
   bool                        mRenderTaskRunning;   ///< If the background render task is currently running