bool NativeImageSourceTizen::CreateResource()
{
+ // If an EGL image exists, use it as it is without creating it.
+ if(mEglImageKHR != NULL)
+ {
+ return true;
+ }
+
// casting from an unsigned int to a void *, which should then be cast back
// to an unsigned int in the driver.
EGLClientBuffer eglBuffer = reinterpret_cast<EGLClientBuffer>(mTbmSurface);
Dali::Mutex::ScopedLock lock(mMutex);
if(mSetSource)
{
- void* eglImage = mEglImageKHR;
+ // Destroy previous eglImage because use for new one.
+ // if mEglImageKHR is not to be NULL here, it will not be updated with a new eglImage.
+ mEglImageExtensions->DestroyImageKHR(mEglImageKHR);
+ mEglImageKHR = NULL;
if(CreateResource())
{
TargetTexture();
}
- mEglImageExtensions->DestroyImageKHR(eglImage);
-
mSetSource = false;
}
}
{
tbm_surface_info_s info;
- if(tbm_surface_map(mTbmSurface, TBM_SURF_OPTION_READ, &info) != TBM_SURFACE_ERROR_NONE)
+ if(tbm_surface_map(mTbmSurface, TBM_SURF_OPTION_READ | TBM_SURF_OPTION_WRITE, &info) != TBM_SURFACE_ERROR_NONE)
{
DALI_LOG_ERROR("Fail to map tbm_surface\n");