Merge " fix Klocwork warning of unintialized data members, unneeded assignment &...
authorKimmo Hoikka <kimmo.hoikka@samsung.com>
Thu, 6 Nov 2014 11:36:24 +0000 (03:36 -0800)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Thu, 6 Nov 2014 11:36:24 +0000 (03:36 -0800)
1  2 
optional/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp

@@@ -42,11 -42,21 +42,22 @@@ BubbleEmitter::BubbleEmitter( const Vec
    mMovementArea( movementArea ),
    mShapeImage( shapeImage ),
    mTotalNumOfBubble( maximumNumberOfBubble ),
 +  mRenderTaskRunning(false),
    mBubbleSizeRange( bubbleSizeRange ),
    mCurrentUniform( 0 ),
    mDensity( 5 )
  {
+   // Calculate how many BubbleEffect shaders are required
+   if( mTotalNumOfBubble>100 )
+   {
+     mNumBubblePerShader = 100;
+     mNumShader = mTotalNumOfBubble / 100;
+   }
+   else
+   {
+     mNumBubblePerShader = mTotalNumOfBubble;
+     mNumShader = 1;
+   }
  }
  
  BubbleEmitter::~BubbleEmitter()
@@@ -83,18 -93,6 +94,6 @@@ void BubbleEmitter::OnInitialize(
    // Generate the material object, which is used by all meshActors
    GenMaterial();
  
-   // Calculate how many BubbleEffect shaders are required
-   if( mTotalNumOfBubble>100 )
-   {
-     mNumBubblePerShader = 100;
-     mNumShader = mTotalNumOfBubble / 100;
-   }
-   else
-   {
-     mNumBubblePerShader = mTotalNumOfBubble;
-     mNumShader = 1;
-   }
    mMesh.resize( mNumShader );
    mMeshActor.resize( mNumShader );
    mEffect.resize( mNumShader );
    // Create a cameraActor for the off screen render task.
    mCameraActor = CameraActor::New(mMovementArea);
    mCameraActor.SetParentOrigin(ParentOrigin::CENTER);
 -  Stage::GetCurrent().Add(mCameraActor);
 +
 +  Stage stage = Stage::GetCurrent();
 +
 +  stage.Add(mCameraActor);
 +  stage.ContextRegainedSignal().Connect(this, &BubbleEmitter::OnContextRegained);
  }
  
  Actor BubbleEmitter::GetRootActor()
  
  void BubbleEmitter::SetBackground( Image bgImage, const Vector3& hsvDelta )
  {
 +  mBackgroundImage = bgImage;
 +  mHSVDelta = hsvDelta;
 +
    ImageActor sourceActor = ImageActor::New( bgImage );
    sourceActor.SetSize( mMovementArea );
    sourceActor.SetParentOrigin(ParentOrigin::CENTER);
    task.GetCameraActor().SetInvertYAxis(true);
    task.SetTargetFrameBuffer( mEffectImage );
    task.FinishedSignal().Connect(this, &BubbleEmitter::OnRenderFinished);
 +  mRenderTaskRunning = true;
  }
  
  void BubbleEmitter::SetShapeImage( Image shapeImage )
@@@ -213,7 -203,6 +212,7 @@@ void BubbleEmitter::SetBubbleDensity( u
  // clear the resources created for the off screen rendering
  void BubbleEmitter::OnRenderFinished(RenderTask& source)
  {
 +  mRenderTaskRunning = false;
    Actor sourceActor = source.GetSourceActor();
    if( sourceActor )
    {
        renderable.RemoveShaderEffect();
      }
    }
 -  Stage::GetCurrent().Remove(sourceActor);
 -  Stage::GetCurrent().GetRenderTaskList().RemoveTask(source);
 +
 +  Stage stage = Stage::GetCurrent();
 +  stage.Remove(sourceActor);
 +  stage.GetRenderTaskList().RemoveTask(source);
 +}
 +
 +void BubbleEmitter::OnContextRegained()
 +{
 +  // Context was lost, so the framebuffer has been destroyed. Re-create render task
 +  // and trigger re-draw if not already running
 +  if( ! mRenderTaskRunning )
 +  {
 +    SetBackground( mBackgroundImage, mHSVDelta );
 +  }
  }
  
  void BubbleEmitter::SetBlendMode( bool enable )