forked from len0rd/rockbox
Android: Change how detecting call state (introduced in r27746) works, from polling to event based.
* For some reason, the polling methid is much more inefficient than I thought. According to htop it caused up to 15% CPU load on some phones (e.g. Galaxy S). The event based causes no CPU load. Rockbox' idle CPU load is now back to 0%, while it was previously dominated by polling the call state. * Also stop on outgoing calls (no need to explicitely pause for making a call anymore). * Factor out the detection mechanism to separate files. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28564 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
bb56bc4ba0
commit
0cf2cc1607
7 changed files with 174 additions and 56 deletions
|
@ -52,22 +52,6 @@ Java_org_rockbox_RockboxTimer_timerTask(JNIEnv *env, jobject this)
|
|||
call_tick_tasks();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_rockbox_RockboxTimer_postCallIncoming(JNIEnv *env, jobject this)
|
||||
{
|
||||
(void)env;
|
||||
(void)this;
|
||||
queue_broadcast(SYS_CALL_INCOMING, 0);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_rockbox_RockboxTimer_postCallHungUp(JNIEnv *env, jobject this)
|
||||
{
|
||||
(void)env;
|
||||
(void)this;
|
||||
queue_broadcast(SYS_CALL_HUNG_UP, 0);
|
||||
}
|
||||
|
||||
void tick_start(unsigned int interval_in_ms)
|
||||
{
|
||||
JNIEnv e = *env_ptr;
|
||||
|
@ -76,7 +60,7 @@ void tick_start(unsigned int interval_in_ms)
|
|||
jmethodID constructor = e->GetMethodID(env_ptr,
|
||||
RockboxTimer_class,
|
||||
"<init>",
|
||||
"(Lorg/rockbox/RockboxService;J)V");
|
||||
"(Landroid/content/Context;J)V");
|
||||
/* the constructor will do the tick_start */
|
||||
RockboxTimer_instance = e->NewObject(env_ptr,
|
||||
RockboxTimer_class,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue