From: sunghyun kim Date: Fri, 9 Aug 2024 09:08:12 +0000 (+0900) Subject: Fix crash issue when widget_instance_create() is failed X-Git-Tag: accepted/tizen/unified/20240812.190059^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8b9196beb72807307e20a30a6ca2a10cdcba7b21;p=platform%2Fcore%2Fuifw%2Fwidget-viewer-dali.git Fix crash issue when widget_instance_create() is failed After refactoring patch, sometimes it can be crashed() when widget_instance_create() is failed. To avoid this issue, i created some patch. Change-Id: I38224df63444ed17224e87a9a22677bd127ef850 --- 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 1da11de..c993ef2 100644 --- a/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp @@ -274,7 +274,7 @@ WidgetView::~WidgetView() { } -void WidgetView::InitializeWidgets() +bool WidgetView::InitializeWidgets() { auto self = Self(); char* instanceId = NULL; @@ -283,7 +283,7 @@ void WidgetView::InitializeWidgets() if( ret < 0 || !instanceId ) { DALI_LOG_ERROR("WidgetView::InitializeWidgets: widget_instance_create is failed [%s].\n", mWidgetId.c_str() ); - return; + return false; } DALI_LOG_RELEASE_INFO("WidgetView::InitializeWidgets: widget_instance_create is called. [widget id = %s, instance id = %s] [%p]\n", @@ -291,11 +291,16 @@ void WidgetView::InitializeWidgets() mInstanceId = instanceId; - SetUpdatePeriod(); + if(!SetUpdatePeriod()) + { + return false; + } + SetPreviewImage(); + return true; } -void WidgetView::SetUpdatePeriod() +bool WidgetView::SetUpdatePeriod() { // Set UpdatePeriod if( mUpdatePeriod > 0.0f) @@ -304,7 +309,7 @@ void WidgetView::SetUpdatePeriod() if( !instance ) { DALI_LOG_ERROR("WidgetView::SetUpdatePeriod: widget_instance_get_instance is failed. [%s]\n", mInstanceId.c_str() ); - return; + return false; } int ret = widget_instance_set_period( instance, mUpdatePeriod ); @@ -312,9 +317,10 @@ void WidgetView::SetUpdatePeriod() if( ret < 0 ) { DALI_LOG_ERROR("WidgetView::SetUpdatePeriod: widget_instance_set_period is failed [%s].\n", mWidgetId.c_str() ); - return; + return false; } } + return true; } void WidgetView::SetPreviewImage() @@ -1119,7 +1125,12 @@ Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetTerminated void WidgetView::OnInitialize() { - InitializeWidgets(); + if(!InitializeWidgets()) + { + DALI_LOG_ERROR("InitializeWidgets() is failed [%s].\n", mWidgetId.c_str() ); + return; + } + InitializeLayout(); LaunchWidget(); InitializeEvents(); 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 c4994a9..3599566 100644 --- a/widget_viewer_dali/internal/widget_view/widget_view_impl.h +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.h @@ -460,12 +460,12 @@ private: /** * @brief Initilize Widget */ - void InitializeWidgets(); + bool InitializeWidgets(); /** * @brief Set the update period of widget */ - void SetUpdatePeriod(); + bool SetUpdatePeriod(); /** * @brief Set the preview image of widget