mRetryState( false ),
mPermanentDelete( false ),
mWatcherHandle( NULL ),
- mRemoteSurface( NULL )
+ mRemoteSurface( NULL ),
+ mWlBuffer( NULL )
{
}
mRetryState( false ),
mPermanentDelete( false ),
mWatcherHandle( NULL ),
- mRemoteSurface( NULL )
+ mRemoteSurface( NULL ),
+ mWlBuffer( NULL )
{
}
{
struct wl_buffer *buffer = static_cast< struct wl_buffer* >(mWlBuffer);
struct tizen_remote_surface *surface = static_cast< struct tizen_remote_surface* >(mRemoteSurface);
- if (tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) {
- tizen_remote_surface_release( surface, buffer );
- tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( buffer );
- tbm_surface_internal_unref( preTbmSurface );
- wl_buffer_destroy( buffer );
+ if (tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION)
+ {
+ tizen_remote_surface_release( surface, buffer );
+ tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( buffer );
+ tbm_surface_internal_unref( preTbmSurface );
+ wl_buffer_destroy( buffer );
}
}
TriggerEventFactory triggerEventFactory;
TriggerEventInterface* notification = triggerEventFactory.CreateTriggerEvent( callback,
TriggerEventInterface::DELETE_AFTER_TRIGGER );
+ mWlBuffer = buffer;
mImageSource = Dali::NativeImageSource::New( source );
Dali::NativeImage image = Dali::NativeImage::New( *mImageSource );
NativeImageInterfacePtr mImageSourcePtr = static_cast< NativeImageInterfacePtr >(mImageSource);
NativeImageInterface::Extension* extension = mImageSourcePtr->GetExtension();
if( extension )
- extension->SetDestructorNotification(notification);
+ {
+ extension->SetDestructorNotification( notification );
+ }
if( mRenderer )
{
tizen_remote_surface_transfer_visibility( mRemoteSurface, TIZEN_REMOTE_SURFACE_VISIBILITY_TYPE_INVISIBLE);
}
+ if(mImageSource)
+ {
+ // Delete trigger
+ NativeImageInterfacePtr mImageSourcePtr = static_cast< NativeImageInterfacePtr >( mImageSource );
+ NativeImageInterface::Extension* extension = mImageSourcePtr->GetExtension();
+ if( extension )
+ {
+ extension->SetDestructorNotification( NULL );
+ }
+ }
+
mImageSource = Dali::NativeImageSource::New( NULL );
if( mRenderer )
if( mWatcherHandle != NULL && mRemoteSurface != NULL )
{
+ // Release tizen remote surface
+ if(mWlBuffer != NULL)
+ {
+ struct wl_buffer *buffer = mWlBuffer;
+ struct tizen_remote_surface *surface = mRemoteSurface;
+ if (tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION)
+ {
+ tizen_remote_surface_release( surface, buffer );
+ tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( buffer );
+ tbm_surface_internal_unref( preTbmSurface );
+ wl_buffer_destroy( buffer );
+ mWlBuffer = NULL;
+ }
+ }
+
screen_connector_toolkit_remove( mWatcherHandle );
mWatcherHandle = NULL;
mRemoteSurface = NULL;