summaryrefslogtreecommitdiff
path: root/common/Jackdmp.cpp
diff options
context:
space:
mode:
authorKimJeongYeon <see2002@gmail.com>2014-02-05 00:38:12 +0900
committerKimJeongYeon <see2002@gmail.com>2014-02-05 00:38:12 +0900
commit4a94e12986b7f4925b0d457af8c3464ffbef2e2b (patch)
treeedc75c222bd44a92170e6a0c12932266061c5b84 /common/Jackdmp.cpp
parent0742159cfa0cf403d5ba118fbf73bd089e6f10c2 (diff)
downloadjack2-4a94e12986b7f4925b0d457af8c3464ffbef2e2b.tar.gz
jack2 supports android devices & rebase current changes to master
Diffstat (limited to 'common/Jackdmp.cpp')
-rw-r--r--common/Jackdmp.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/common/Jackdmp.cpp b/common/Jackdmp.cpp
index 5b16e0de..6d8db0d0 100644
--- a/common/Jackdmp.cpp
+++ b/common/Jackdmp.cpp
@@ -33,6 +33,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "control.h"
#include "JackConstants.h"
#include "JackPlatformPlug.h"
+#ifdef __ANDROID__
+#include "JackControlAPIAndroid.h"
+#endif
#if defined(JACK_DBUS) && defined(__linux__)
#include <dbus/dbus.h>
@@ -192,6 +195,25 @@ static void usage(FILE* file, jackctl_server_t *server)
}
}
+#ifdef __ANDROID__
+static void jackctl_server_switch_master_dummy(jackctl_server_t * server_ctl, char * master_driver_name)
+{
+ static bool is_dummy_driver = false;
+ if(!strcmp(master_driver_name, "dummy")) {
+ return;
+ }
+ jackctl_driver_t * driver_ctr;
+ if(is_dummy_driver) {
+ is_dummy_driver = false;
+ driver_ctr = jackctl_server_get_driver(server_ctl, master_driver_name);
+ } else {
+ is_dummy_driver = true;
+ driver_ctr = jackctl_server_get_driver(server_ctl, "dummy");
+ }
+ jackctl_server_switch_master(server_ctl, driver_ctr);
+}
+#endif
+
// Prototype to be found in libjackserver
extern "C" void silent_jack_error_callback(const char *desc);
@@ -556,7 +578,19 @@ int main(int argc, char** argv)
return_value = 0;
// Waits for signal
+#ifdef __ANDROID__
+ //reserve SIGUSR2 signal for switching master driver
+ while(1) {
+ int signal = jackctl_wait_signals_and_return(sigmask);
+ if (signal == SIGUSR2) {
+ jackctl_server_switch_master_dummy(server_ctl, master_driver_name);
+ } else {
+ break;
+ }
+ }
+#else
jackctl_wait_signals(sigmask);
+#endif
stop_server:
if (!jackctl_server_stop(server_ctl)) {