X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fimaging%2Fandroid%2Fnative-image-source-impl-android.cpp;h=53fdc8c1f54f3a7f990d4018295d070ef38ff6c5;hb=a6f211ea194a64bda86d9e2237a9a91e8620b208;hp=fcf3ae585bf050510f70f902dbc679237a3285ed;hpb=e2bb9e4692d156e6f05f79d4c02ffd810e95081f;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/imaging/android/native-image-source-impl-android.cpp b/dali/internal/imaging/android/native-image-source-impl-android.cpp old mode 100644 new mode 100755 index fcf3ae5..53fdc8c --- a/dali/internal/imaging/android/native-image-source-impl-android.cpp +++ b/dali/internal/imaging/android/native-image-source-impl-android.cpp @@ -308,12 +308,13 @@ void NativeImageSourceAndroid::GetPixmapDetails() // get the width, height and depth mBlendingRequired = false; - AHardwareBuffer_Desc* bufferDescription = nullptr; - AHardwareBuffer_describe( mPixmap, bufferDescription ); + AHardwareBuffer_Desc bufferDescription; + memset( &bufferDescription, 0, sizeof( AHardwareBuffer_Desc ) ); + AHardwareBuffer_describe( mPixmap, &bufferDescription ); - mWidth = bufferDescription->width; - mHeight = bufferDescription->height; - switch (bufferDescription->format) + mWidth = bufferDescription.width; + mHeight = bufferDescription.height; + switch (bufferDescription.format) { case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: mColorDepth = Dali::NativeImageSource::COLOR_DEPTH_32; @@ -330,6 +331,46 @@ void NativeImageSourceAndroid::GetPixmapDetails() } } +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; +} + } // namespace Adaptor } // namespace internal