summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/android
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2011-03-14 12:25:48 +0000
committerBjörn Stenberg <bjorn@haxx.se>2011-03-14 12:25:48 +0000
commite50cc0e3d760d4fdb99f971070a6943ee15a9a98 (patch)
tree9d22cde7d39a2aefbc75cd970916fbc161f53cac /firmware/target/hosted/android
parent606bed035ed898df1d1bf4a8c7be904f76b118ff (diff)
downloadrockbox-e50cc0e3d760d4fdb99f971070a6943ee15a9a98.zip
rockbox-e50cc0e3d760d4fdb99f971070a6943ee15a9a98.tar.gz
rockbox-e50cc0e3d760d4fdb99f971070a6943ee15a9a98.tar.bz2
rockbox-e50cc0e3d760d4fdb99f971070a6943ee15a9a98.tar.xz
Listen to and follow external Android volume changes. (Based on FS#11914 by Maurus Cuelenaere)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29586 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/hosted/android')
-rw-r--r--firmware/target/hosted/android/pcm-android.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/firmware/target/hosted/android/pcm-android.c b/firmware/target/hosted/android/pcm-android.c
index 4c34e3c..24881bd 100644
--- a/firmware/target/hosted/android/pcm-android.c
+++ b/firmware/target/hosted/android/pcm-android.c
@@ -179,3 +179,28 @@ void pcm_set_mixer_volume(int volume)
(*env_ptr)->CallVoidMethod(env_ptr, RockboxPCM_instance, set_volume_method, volume);
}
+
+/* Due to limitations of default_event_handler(), parameters gets swallowed when
+ * being posted with queue_broadcast(), so workaround this by caching the last
+ * value.
+ */
+static int lastPostedVolume = -1;
+int hosted_get_volume(void)
+{
+ return lastPostedVolume;
+}
+
+JNIEXPORT void JNICALL
+Java_org_rockbox_RockboxPCM_postVolumeChangedEvent(JNIEnv *env,
+ jobject this,
+ jint volume)
+{
+ (void) env;
+ (void) this;
+
+ if (volume != lastPostedVolume)
+ {
+ lastPostedVolume = volume;
+ queue_broadcast(SYS_VOLUME_CHANGED, 0);
+ }
+}