pass on Pause/Resume event to Adaptor 61/227361/10
authorCheng-Shiun Tsai <cheng.tsai@samsung.com>
Wed, 11 Mar 2020 10:58:39 +0000 (10:58 +0000)
committerCheng-Shiun Tsai <cheng.tsai@samsung.com>
Wed, 25 Nov 2020 17:41:42 +0000 (17:41 +0000)
so that RenderThread can fall into sleep when application fade into background
Also when an application lost foreground status, OS will destroy current window
but currently adaptor does not pause and continue to render on a destroyed window and cause crash

Change-Id: Idba56610ec3444e4affe58a0b819df8fc870619e

dali/internal/adaptor/android/framework-android.cpp
dali/internal/adaptor/androidjni/framework-androidjni.cpp

index 3212f4d..9a73795 100644 (file)
@@ -663,6 +663,7 @@ void Framework::AbortCallback( )
 
 bool Framework::AppStatusHandler(int type, void* data)
 {
+  Dali::Adaptor* adaptor = nullptr;
   switch (type)
   {
     case APP_WINDOW_CREATED:
@@ -681,6 +682,8 @@ bool Framework::AppStatusHandler(int type, void* data)
 
     case APP_RESUME:
       mObserver.OnResume();
+      adaptor = &Dali::Adaptor::Get();
+      adaptor->Resume();
       break;
 
     case APP_WINDOW_DESTROYED:
@@ -688,6 +691,8 @@ bool Framework::AppStatusHandler(int type, void* data)
       break;
 
     case APP_PAUSE:
+      adaptor = &Dali::Adaptor::Get();
+      adaptor->Pause();
       mObserver.OnPause();
       break;
 
index 7e932c6..c411174 100644 (file)
@@ -20,6 +20,7 @@
 
 // EXTERNAL INCLUDES
 #include <dali/integration-api/debug.h>
+#include <dali/integration-api/adaptor-framework/adaptor.h>
 #include <dali/integration-api/adaptor-framework/android/android-framework.h>
 #include <dali/public-api/adaptor-framework/application.h>
 #include <dali/devel-api/adaptor-framework/application-devel.h>
@@ -233,6 +234,7 @@ void Framework::AbortCallback( )
 
 bool Framework::AppStatusHandler(int type, void* data)
 {
+  Dali::Adaptor* adaptor = nullptr;
   switch (type)
   {
     case APP_WINDOW_CREATED:
@@ -255,9 +257,13 @@ bool Framework::AppStatusHandler(int type, void* data)
 
     case APP_RESUME:
       mObserver.OnResume();
+      adaptor = &Dali::Adaptor::Get();
+      adaptor->Resume();
       break;
 
     case APP_PAUSE:
+      adaptor = &Dali::Adaptor::Get();
+      adaptor->Pause();
       mObserver.OnPause();
       break;