Chromium Code Reviews| Index: ppapi/proxy/plugin_main_nacl.cc |
| diff --git a/ppapi/proxy/plugin_main_nacl.cc b/ppapi/proxy/plugin_main_nacl.cc |
| index f050778227cad4eef35c4f1c26f59fe1a6ccbcbe..368f709bf6800c49f878e2fcbbcc48e8a7119601 100644 |
| --- a/ppapi/proxy/plugin_main_nacl.cc |
| +++ b/ppapi/proxy/plugin_main_nacl.cc |
| @@ -12,6 +12,7 @@ |
| // ViewMsgLog et al. functions. |
| #include "base/command_line.h" |
| +#include "base/debug/trace_event.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/synchronization/waitable_event.h" |
| #include "base/threading/thread.h" |
| @@ -266,6 +267,23 @@ void PpapiPluginRegisterThreadCreator( |
| ppapi::PPB_Audio_Shared::SetThreadFunctions(thread_functions); |
| } |
| +const int checkIntervalInSeconds = 1; |
|
dmichael (off chromium)
2013/11/06 22:39:21
nit: kCheckIntervalInSeconds
Some rationale about
scheib
2013/11/15 01:22:17
Done.
|
| +bool last_was_active = false; |
|
dmichael (off chromium)
2013/11/06 22:39:21
Could this be a parameter to CheckActivity instead
scheib
2013/11/15 01:22:17
Done.
|
| + |
| +void CheckActivity(base::MessageLoop* loop, PpapiDispatcher* dispatcher) { |
|
dmichael (off chromium)
2013/11/06 22:39:21
You're not using dispatcher, and it will become in
scheib
2013/11/15 01:22:17
Done.
|
| + bool was_active = PluginGlobals::Get()->plugin_has_been_active(); |
|
dmichael (off chromium)
2013/11/06 22:39:21
At shutdown, PluginGlobals()::Get() will be NULL.
scheib
2013/11/15 01:22:17
Done.
|
| + PluginGlobals::Get()->set_plugin_has_been_active(false); |
| + |
| + if (last_was_active != was_active) { |
| + PluginGlobals::Get()->GetBrowserSender()->Send( |
| + new PpapiHostMsg_IdleState(!was_active)); |
|
dmichael (off chromium)
2013/11/06 22:39:21
So we're only sending a message if the state chang
scheib
2013/11/07 01:06:42
I think it is what we want. Browser side we are tr
dmichael (off chromium)
2013/11/07 17:11:55
Sounds good. I wrote this comment before I'd read
|
| + } |
| + last_was_active = was_active; |
| + |
| + loop->PostDelayedTask(FROM_HERE, base::Bind(&CheckActivity, loop, dispatcher), |
|
dmichael (off chromium)
2013/11/06 22:39:21
Why not use MessageLoop::current()? I'm not used t
scheib
2013/11/15 01:22:17
Done.
|
| + base::TimeDelta::FromSeconds(checkIntervalInSeconds)); |
| +} |
| + |
| int PpapiPluginMain() { |
| // Though it isn't referenced here, we must instantiate an AtExitManager. |
| base::AtExitManager exit_manager; |
| @@ -289,6 +307,11 @@ int PpapiPluginMain() { |
| PpapiDispatcher ppapi_dispatcher(io_thread.message_loop_proxy()); |
| plugin_globals.set_plugin_proxy_delegate(&ppapi_dispatcher); |
| + io_thread.message_loop()->PostDelayedTask(FROM_HERE, |
| + base::Bind(&CheckActivity, |
|
dmichael (off chromium)
2013/11/06 22:39:21
CheckActivity needs to have the global proxy lock,
scheib
2013/11/15 01:22:17
Done via: ppapi::ProxyAutoLock lock;
|
| + io_thread.message_loop(), |
| + &ppapi_dispatcher), |
| + base::TimeDelta::FromSeconds(checkIntervalInSeconds)); |
|
dmichael (off chromium)
2013/11/06 22:39:21
(nit: all the arguments should just be indented by
scheib
2013/11/15 01:22:17
Done.
|
| loop.Run(); |
| return 0; |