Fix crash issue when widget_instance_create() is failed 12/315912/1 accepted/tizen/unified/20240812.190059 accepted/tizen/unified/dev/20240813.035958 accepted/tizen/unified/x/20240813.112350
authorsunghyun kim <scholb.kim@samsung.com>
Fri, 9 Aug 2024 09:08:12 +0000 (18:08 +0900)
committersunghyun kim <scholb.kim@samsung.com>
Fri, 9 Aug 2024 09:08:12 +0000 (18:08 +0900)
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

widget_viewer_dali/internal/widget_view/widget_view_impl.cpp
widget_viewer_dali/internal/widget_view/widget_view_impl.h

index 1da11dea203303f18c4fb1abbe5b658e20a38079..c993ef2540ddcf0a54fa17f9556b271235931849 100644 (file)
@@ -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();
index c4994a9c2fd0f3892236123d786742a628ea47f0..3599566c6bebfaf0a4eb7e4f3c01da3d64f40101 100644 (file)
@@ -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