Chromium Code Reviews| Index: tools/viewer/sk_app/android/surface_glue_android.cpp | 
| diff --git a/tools/viewer/sk_app/android/surface_glue_android.cpp b/tools/viewer/sk_app/android/surface_glue_android.cpp | 
| index daf26a3852ed2c6275816f4756829dc2d06a0567..1821a53efe3a25d1b073b65bf012fafa0bebc4f2 100644 | 
| --- a/tools/viewer/sk_app/android/surface_glue_android.cpp | 
| +++ b/tools/viewer/sk_app/android/surface_glue_android.cpp | 
| @@ -22,6 +22,7 @@ | 
| #include "SkTypes.h" | 
| #include "SkUtils.h" | 
| #include "Window_android.h" | 
| +#include "SkTime.h" | 
| namespace sk_app { | 
| @@ -160,6 +161,8 @@ int SkiaAndroidApp::message_callback(int fd, int events, void* data) { | 
| return 1; // continue receiving callbacks | 
| } | 
| +static double now_ms() { return SkTime::GetMSecs(); } | 
| + | 
| void* SkiaAndroidApp::pthread_main(void* arg) { | 
| SkDebugf("pthread_main begins"); | 
| @@ -173,16 +176,24 @@ void* SkiaAndroidApp::pthread_main(void* arg) { | 
| ALooper_addFd(looper, skiaAndroidApp->fPipes[0], LOOPER_ID_MESSAGEPIPE, ALOOPER_EVENT_INPUT, | 
| message_callback, skiaAndroidApp); | 
| - int ident; | 
| - int events; | 
| - struct android_poll_source* source; | 
| - | 
| skiaAndroidApp->fApp = Application::Create(0, nullptr, skiaAndroidApp); | 
| - while ((ident = ALooper_pollAll(-1, nullptr, &events, (void**)&source)) >= 0) { | 
| - SkDebugf("ALooper_pollAll ident=%d", ident); | 
| + double currentTime = 0.0; | 
| + double previousTime = 0.0; | 
| + while (true) { | 
| + const int ident = ALooper_pollAll(0, nullptr, nullptr, nullptr); | 
| 
 
jvanverth1
2016/06/06 14:18:11
I'm surprised a timeout of 0 doesn't cause a busy
 
liyuqian
2016/06/06 14:30:46
I checked the CPU usage on Android and it indeed d
 
 | 
| + | 
| + if (ident >= 0) { | 
| + SkDebugf("Unhandled ALooper_pollAll ident=%d !", ident); | 
| + } else { | 
| + previousTime = currentTime; | 
| + currentTime = now_ms(); | 
| + skiaAndroidApp->fApp->onIdle(currentTime - previousTime); | 
| + } | 
| } | 
| + SkDebugf("pthread_main ends"); | 
| + | 
| return nullptr; | 
| } |