diff options
| -rw-r--r-- | core/jni/android_server_BluetoothEventLoop.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/jni/android_server_BluetoothEventLoop.cpp b/core/jni/android_server_BluetoothEventLoop.cpp index 73dfdbe1d8e9..ed2233b9b05b 100644 --- a/core/jni/android_server_BluetoothEventLoop.cpp +++ b/core/jni/android_server_BluetoothEventLoop.cpp @@ -428,6 +428,7 @@ static void tearDownEventLoop(native_data_t *nat) { #define EVENT_LOOP_EXIT 1 #define EVENT_LOOP_ADD 2 #define EVENT_LOOP_REMOVE 3 +#define EVENT_LOOP_WAKEUP 4 dbus_bool_t dbusAddWatch(DBusWatch *watch, void *data) { native_data_t *nat = (native_data_t *)data; @@ -472,6 +473,13 @@ void dbusToggleWatch(DBusWatch *watch, void *data) { } } +void dbusWakeup(void *data) { + native_data_t *nat = (native_data_t *)data; + + char control = EVENT_LOOP_WAKEUP; + write(nat->controlFdW, &control, sizeof(char)); +} + static void handleWatchAdd(native_data_t *nat) { DBusWatch *watch; int newFD; @@ -555,6 +563,7 @@ static void *eventLoopMain(void *ptr) { dbus_connection_set_watch_functions(nat->conn, dbusAddWatch, dbusRemoveWatch, dbusToggleWatch, ptr, NULL); + dbus_connection_set_wakeup_main_function(nat->conn, dbusWakeup, ptr, NULL); nat->running = true; @@ -590,6 +599,11 @@ static void *eventLoopMain(void *ptr) { handleWatchRemove(nat); break; } + case EVENT_LOOP_WAKEUP: + { + // noop + break; + } } } } else { |