+uint8_t* NativeImageSourceAndroid::AcquireBuffer( uint16_t& width, uint16_t& height, uint16_t& stride )
+{
+ if( mPixmap )
+ {
+ AHardwareBuffer_Desc bufferDescription;
+ memset( &bufferDescription, 0, sizeof( AHardwareBuffer_Desc ) );
+ AHardwareBuffer_describe( mPixmap, &bufferDescription );
+
+ void* buffer = NULL;
+ if( AHardwareBuffer_lock( mPixmap, AHARDWAREBUFFER_USAGE_CPU_READ_RARELY, -1, NULL, &buffer ) != 0 )
+ {
+ DALI_LOG_ERROR( "Failed to AHardwareBuffer_lock\n" );
+ return NULL;
+ }
+
+ stride = bufferDescription.stride;
+ width = bufferDescription.width;
+ height = bufferDescription.height;
+
+ return static_cast< uint8_t* >( buffer );
+ }
+
+ return NULL;
+}
+
+
+bool NativeImageSourceAndroid::ReleaseBuffer()
+{
+ if( mPixmap )
+ {
+ if( AHardwareBuffer_unlock( mPixmap, NULL ) != 0 )
+ {
+ DALI_LOG_ERROR( "failed to AHardwareBuffer_unlock\n" );
+ return false;
+ }
+ return true;
+ }
+ return false;
+}
+