Merge "fix buffer GpuBuffer" into devel/master
[platform/core/uifw/dali-core.git] / dali / internal / event / images / frame-buffer-image-impl.cpp
index 8735abb..b7fda19 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -34,54 +34,44 @@ namespace
 TypeRegistration mType( typeid( Dali::FrameBufferImage ), typeid( Dali::Image ), NULL );
 } // unnamed namespace
 
-FrameBufferImage::~FrameBufferImage()
-{
-}
-
-FrameBufferImagePtr  FrameBufferImage::New(unsigned int width, unsigned int height, Pixel::Format pixelFormat, ReleasePolicy releasePolicy)
+FrameBufferImagePtr FrameBufferImage::New( unsigned int width,
+                                           unsigned int height,
+                                           Pixel::Format pixelFormat,
+                                           RenderBuffer::Format bufferformat )
 {
-  FrameBufferImagePtr image = new FrameBufferImage(width, height, pixelFormat, releasePolicy);
+  FrameBufferImagePtr image = new FrameBufferImage( width, height, pixelFormat, bufferformat );
   image->Initialize();
   return image;
 }
 
-FrameBufferImagePtr  FrameBufferImage::New( NativeImage& nativeImage )
+FrameBufferImagePtr FrameBufferImage::New( NativeImageInterface& nativeImage )
 {
-  FrameBufferImagePtr image = new FrameBufferImage(nativeImage);
+  FrameBufferImagePtr image = new FrameBufferImage( nativeImage );
   image->Initialize();
   return image;
 }
 
-FrameBufferImagePtr  FrameBufferImage::New( NativeImage& nativeImage, ReleasePolicy releasePolicy )
-{
-  FrameBufferImagePtr image = new FrameBufferImage(nativeImage, releasePolicy);
-  image->Initialize();
-  return image;
-}
 
-FrameBufferImage::FrameBufferImage(unsigned int width, unsigned int height, Pixel::Format pixelFormat, ReleasePolicy releasePolicy)
-: Image(Dali::Image::Immediate, releasePolicy),
-  mPixelFormat(pixelFormat)
+FrameBufferImage::FrameBufferImage( unsigned int width,
+                                    unsigned int height,
+                                    Pixel::Format pixelFormat,
+                                    RenderBuffer::Format bufferformat )
+: Image(),
+  mNativeImage(0),
+  mPixelFormat( pixelFormat ),
+  mBufferFormat( bufferformat ),
+  mIsNativeFbo( false )
 {
   mWidth  = width;
   mHeight = height;
 }
 
-
-FrameBufferImage::FrameBufferImage( NativeImage& nativeImage )
-: Image(Dali::Image::Immediate),
-  mNativeImage(&nativeImage),
-  mPixelFormat(nativeImage.GetPixelFormat())
-{
-  mWidth = nativeImage.GetWidth();
-  mHeight = nativeImage.GetHeight();
-}
-
-
-FrameBufferImage::FrameBufferImage( NativeImage& nativeImage, ReleasePolicy releasePolicy )
-: Image(Dali::Image::Immediate, releasePolicy),
-  mNativeImage(&nativeImage),
-  mPixelFormat(nativeImage.GetPixelFormat())
+FrameBufferImage::FrameBufferImage( NativeImageInterface& nativeImage )
+: Image(),
+  mNativeImage( &nativeImage ),
+  mPixelFormat( Pixel::FIRST_VALID_PIXEL_FORMAT ),
+  mBufferFormat( RenderBuffer::COLOR ),
+  mIsNativeFbo( true )
 {
   mWidth = nativeImage.GetWidth();
   mHeight = nativeImage.GetHeight();
@@ -104,7 +94,7 @@ void FrameBufferImage::Connect()
       }
       else
       {
-        mTicket = resourceClient.AddFrameBufferImage(mWidth, mHeight, mPixelFormat);
+        mTicket = resourceClient.AddFrameBufferImage(mWidth, mHeight, mPixelFormat, mBufferFormat);
         mTicket->AddObserver(*this);
       }
     }
@@ -120,7 +110,7 @@ void FrameBufferImage::Disconnect()
 
   DALI_ASSERT_DEBUG(mConnectionCount > 0);
   --mConnectionCount;
-  if (mConnectionCount == 0 && mReleasePolicy == Dali::Image::Unused)
+  if (mConnectionCount == 0 && mReleasePolicy == Dali::Image::UNUSED)
   {
     // release image memory when it's not visible anymore (decrease ref. count of texture)
     mTicket->RemoveObserver(*this);
@@ -128,6 +118,14 @@ void FrameBufferImage::Disconnect()
   }
 }
 
+bool FrameBufferImage::IsNativeFbo() const
+{
+  return mIsNativeFbo;
+}
+FrameBufferImage::~FrameBufferImage()
+{
+}
+
 } // namespace Internal
 
 } // namespace Dali