-void FrameBufferImage::Connect()
-{
- ++mConnectionCount;
-
- if (mConnectionCount == 1)
- {
- // ticket was thrown away when related actors went offstage
- if (!mTicket)
- {
- ResourceClient& resourceClient = ThreadLocalStorage::Get().GetResourceClient();
- if (mNativeImage)
- {
- mTicket = resourceClient.AddFrameBufferImage(*mNativeImage);
- mTicket->AddObserver(*this);
- }
- else
- {
- mTicket = resourceClient.AddFrameBufferImage(mWidth, mHeight, mPixelFormat, mBufferFormat);
- mTicket->AddObserver(*this);
- }
- }
- }
-}
-
-void FrameBufferImage::Disconnect()
-{
- if(!mTicket)
- {
- return;
- }
-
- DALI_ASSERT_DEBUG(mConnectionCount > 0);
- --mConnectionCount;
- if (mConnectionCount == 0 && mReleasePolicy == Dali::Image::UNUSED)
- {
- // release image memory when it's not visible anymore (decrease ref. count of texture)
- mTicket->RemoveObserver(*this);
- mTicket.Reset();
- }
-}