Merge "Bluetooth event loop dispatches dbus data on wakeup"
This commit is contained in:
@@ -428,6 +428,7 @@ static void tearDownEventLoop(native_data_t *nat) {
|
|||||||
#define EVENT_LOOP_EXIT 1
|
#define EVENT_LOOP_EXIT 1
|
||||||
#define EVENT_LOOP_ADD 2
|
#define EVENT_LOOP_ADD 2
|
||||||
#define EVENT_LOOP_REMOVE 3
|
#define EVENT_LOOP_REMOVE 3
|
||||||
|
#define EVENT_LOOP_WAKEUP 4
|
||||||
|
|
||||||
dbus_bool_t dbusAddWatch(DBusWatch *watch, void *data) {
|
dbus_bool_t dbusAddWatch(DBusWatch *watch, void *data) {
|
||||||
native_data_t *nat = (native_data_t *)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) {
|
static void handleWatchAdd(native_data_t *nat) {
|
||||||
DBusWatch *watch;
|
DBusWatch *watch;
|
||||||
int newFD;
|
int newFD;
|
||||||
@@ -555,6 +563,7 @@ static void *eventLoopMain(void *ptr) {
|
|||||||
|
|
||||||
dbus_connection_set_watch_functions(nat->conn, dbusAddWatch,
|
dbus_connection_set_watch_functions(nat->conn, dbusAddWatch,
|
||||||
dbusRemoveWatch, dbusToggleWatch, ptr, NULL);
|
dbusRemoveWatch, dbusToggleWatch, ptr, NULL);
|
||||||
|
dbus_connection_set_wakeup_main_function(nat->conn, dbusWakeup, ptr, NULL);
|
||||||
|
|
||||||
nat->running = true;
|
nat->running = true;
|
||||||
|
|
||||||
@@ -590,6 +599,11 @@ static void *eventLoopMain(void *ptr) {
|
|||||||
handleWatchRemove(nat);
|
handleWatchRemove(nat);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EVENT_LOOP_WAKEUP:
|
||||||
|
{
|
||||||
|
// noop
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user