DALI_TYPE_REGISTRATION_END()
-struct wl_buffer* preBuffer;
-struct tizen_remote_surface* remoteSurface;
-
const char* const STATE_TEXT( "stateText" );
const char* const FONT_STYLE( "fontStyle" );
const char* const TEXT_POINT_SIZE( "textPointSize" );
widgetView->UpdateImageSource( tbmSurface, buffer, surface);
}
- remoteSurface = surface;
- preBuffer = buffer;
-
close( img_file_fd );
}
if( widgetView && !widgetView->IsWidgetFaulted() )
{
- widgetView->CloseRemoteSurface();
- widgetView->RemoveWidgetRenderer();
+ widgetView->RemoveWidget();
+ widgetView->EmitDeletedWidgetSignal();
}
}
DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::CreateWidgetRenderer: Widget image is added.\n" );
}
-void WidgetView::RemoveWidgetRenderer()
-{
- if( mRenderer )
- {
- Self().RemoveRenderer( mRenderer );
-
- ShowRetryState( true );
-
- Dali::WidgetView::WidgetView handle( GetOwner() );
- mWidgetDeletedSignal.Emit( handle );
- }
-
- DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::RemoveWidgetRenderer: Widget image is removed.\n" );
-}
-
bool WidgetView::TerminateWidget()
{
if( !mWidgetId.empty() && !mInstanceId.empty() )
{
+ RemoveWidget();
+
int ret = 0;
ret = widget_instance_terminate( mInstanceId.c_str() );
Dali::WidgetView::WidgetView handle( GetOwner() );
mWidgetTerminatedSignal.Emit( handle );
- mWidgetDeletedSignal.Emit( handle );
+
+ EmitDeletedWidgetSignal();
mWidgetId.clear();
mInstanceId.clear();
- CloseRemoteSurface();
-
- if( mImageSource )
- {
- Any source;
- mImageSource->SetSource( source );
- }
return true;
}
case WIDGET_INSTANCE_EVENT_FAULT:
{
mWidgetFaultedSignal.Emit( handle );
- CloseRemoteSurface();
- RemoveWidgetRenderer();
+ RemoveWidget();
+ ShowRetryState( true );
break;
}
case WIDGET_INSTANCE_EVENT_CREATE_ABORTED:
{
mWidgetCreationAbortedSignal.Emit( handle );
+ ShowRetryState( true );
break;
}
default:
}
}
-void WidgetView::CloseRemoteSurface()
+void WidgetView::RemoveWidget()
{
- if( mWatcherHandle != NULL )
+ if( mRemoteSurface != NULL )
{
- if( remoteSurface != NULL && preBuffer != NULL && tizen_remote_surface_get_version( remoteSurface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION )
- {
- tizen_remote_surface_release( remoteSurface, preBuffer );
- tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer );
- tbm_surface_internal_unref( preTbmSurface );
- wl_buffer_destroy( preBuffer );
- preBuffer = NULL;
- }
+ tizen_remote_surface_transfer_visibility( mRemoteSurface, TIZEN_REMOTE_SURFACE_VISIBILITY_TYPE_INVISIBLE);
+ }
+
+ mImageSource = Dali::NativeImageSource::New( NULL );
+
+ if( mRenderer )
+ {
+ mImageSource = NULL;
+ Self().RemoveRenderer( mRenderer );
+ mRenderer.Reset();
+ }
+ if( mWatcherHandle != NULL && mRemoteSurface != NULL )
+ {
screen_connector_toolkit_remove( mWatcherHandle );
mWatcherHandle = NULL;
mRemoteSurface = NULL;
return extracted;
}
+void WidgetView::EmitDeletedWidgetSignal()
+{
+ if( !mWidgetId.empty() )
+ {
+ Dali::WidgetView::WidgetView handle( GetOwner() );
+ mWidgetDeletedSignal.Emit( handle );
+ }
+}
+
} // namespace Internal
} // namespace WidgetView