[Tizen] Do not keep update when only FrameUpdateCallback execute for PROFILE_TV 61/303961/3
authorEunki, Hong <eunkiki.hong@samsung.com>
Mon, 8 Jan 2024 11:02:39 +0000 (20:02 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Mon, 8 Jan 2024 11:46:40 +0000 (20:46 +0900)
For TV usecase, FrameUpdateCallback don't have any effort since NUI didn't bind it.
But there was some rendering issue during app paused.
To resolve it. let we don't run update/render thread only if FrameUpdateCallback
Executed case.

Change-Id: If35eb139fb629d8b67f64374aab535b83d510e77
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali/internal/adaptor/common/combined-update-render-controller.cpp
dali/internal/system/common/update-status-logger.cpp

index 7373ed893012a8b7d2efef95be7d72ea69ef5234..c1995c1a303a91397df07a9cce03c703f47153a8 100644 (file)
@@ -733,8 +733,8 @@ void CombinedUpdateRenderController::UpdateRenderThread()
       mNotificationTrigger.Trigger();
       LOG_UPDATE_RENDER("Notification Triggered");
     }
-  
-    if(uploadOnly && (keepUpdatingStatus & Dali::Integration::KeepUpdating::STAGE_KEEP_RENDERING))
+
+    if(uploadOnly && (keepUpdatingStatus & (Dali::Integration::KeepUpdating::STAGE_KEEP_RENDERING | Dali::Integration::KeepUpdating::FRAME_UPDATE_CALLBACK)))
     {
       // Render forcely if there exist some keep rendering required.
       uploadOnly = false;
@@ -872,7 +872,14 @@ void CombinedUpdateRenderController::UpdateRenderThread()
     mForceClear = false;
 
     // Trigger event thread to request Update/Render thread to sleep if update not required
-    if((Integration::KeepUpdating::NOT_REQUESTED == keepUpdatingStatus) && !renderStatus.NeedsUpdate())
+    // or, only FrameUpdateCallback return true.
+    // TODO : This logic only required for PROFILE_TV case. We should consider other profile in future.
+    if((Integration::KeepUpdating::NOT_REQUESTED == keepUpdatingStatus
+#ifdef PROFILE_TV
+        || Integration::KeepUpdating::FRAME_UPDATE_CALLBACK == keepUpdatingStatus
+#endif
+       )
+       && !renderStatus.NeedsUpdate())
     {
       mSleepTrigger->Trigger();
       updateRequired = false;
index c2abeba253d9ec26343f322210bb3fe0b1da73ef..925ede2841a9769548e8dd3b2832d5cd26f876a6 100644 (file)
@@ -77,6 +77,15 @@ void UpdateStatusLogger::Log(unsigned int keepUpdatingStatus)
         oss += "<Render task waiting for completion> ";
       }
 
+      if(keepUpdatingStatus & Integration::KeepUpdating::FRAME_UPDATE_CALLBACK)
+      {
+        oss += "<FrameUpdateCallback::return true";
+#ifdef PROFILE_TV
+        oss += "(NOTE : We don't keep update for this version)"
+#endif
+        oss += "> ";
+      }
+
       DALI_LOG_UPDATE_STATUS("%s\n", oss.c_str());
     }
   }