From: Sunghyun Kim Date: Wed, 18 Nov 2020 07:28:29 +0000 (+0900) Subject: Fix Widget bug when reloading X-Git-Tag: submit/tizen/20201202.010141~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c00d3ae175de277a843d9caa3f410267ae442ad5;p=platform%2Fcore%2Fuifw%2Fwidget-viewer-dali.git Fix Widget bug when reloading 1.After reload widget, the status of widget need to be resumed if it visible. 2. widget_instance_get_content() need to call with widget_instance_unref(); Change-Id: I999e9e5f9f14c26b58cb275e2258c955fb4620c3 --- diff --git a/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp index f1a49a3..f498c17 100644 --- a/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp @@ -302,7 +302,8 @@ WidgetView::WidgetView() mCreated( false ), mResizeRequired( false ), mPaused( false ), - mPausedManually( false ) + mPausedManually( false ), + mWindowVisible( true ) { } @@ -329,7 +330,8 @@ WidgetView::WidgetView( const std::string& widgetId, const std::string& contentI mCreated( false ), mResizeRequired( false ), mPaused( false ), - mPausedManually( false ) + mPausedManually( false ), + mWindowVisible( true ) { } @@ -449,7 +451,7 @@ const std::string& WidgetView::GetContentInfo() } mContentInfo = reinterpret_cast< char* >( contentInfo ); - + widget_instance_unref( instance ); return mContentInfo; } @@ -1001,6 +1003,7 @@ void WidgetView::OnInitialize() return; } ret = widget_instance_set_period( instance, mUpdatePeriod ); + widget_instance_unref(instance); if( ret < 0 ) { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_set_period is failed [%s].\n", mWidgetId.c_str() ); @@ -1135,15 +1138,16 @@ void WidgetView::OnSceneDisconnection() void WidgetView::OnWindowVisibilityChanged( Window window, bool visible ) { + mWindowVisible = visible; bool needPaused = IsOutOfScreen(); if( mPausedManually ) { - mPaused = ( needPaused || !visible ); + mPaused = ( needPaused || !mWindowVisible ); DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "Do not resume widget, because widget is paued manually \n"); return; } - if( visible ) + if( mWindowVisible ) { if( !needPaused) { @@ -1154,7 +1158,6 @@ void WidgetView::OnWindowVisibilityChanged( Window window, bool visible ) { PauseWidgetInternally(); } - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnWindowVisibilityChanged: visibility is changed (visible: %d)\n", visible ); } @@ -1728,6 +1731,19 @@ void WidgetView::ReloadWidget() DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); ActivateFaultedWidget(); } + mPausedManually = false; + bool needPaused = IsOutOfScreen(); + if( mWindowVisible ) + { + if( !needPaused) + { + ResumeWidgetInternally(); + } + } + else + { + PauseWidgetInternally(); + } } } diff --git a/widget_viewer_dali/internal/widget_view/widget_view_impl.h b/widget_viewer_dali/internal/widget_view/widget_view_impl.h index 12c5a43..641c23b 100644 --- a/widget_viewer_dali/internal/widget_view/widget_view_impl.h +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.h @@ -358,6 +358,7 @@ private: bool mResizeRequired; bool mPaused; bool mPausedManually; + bool mWindowVisible; Dali::Property::Map mEffectPropertyMap; Dali::PropertyNotification mPositionUpdateNotification;