diff --git a/android/ipc.c b/android/ipc.c
index deeeafb..ab0f1a4 100644
--- a/android/ipc.c
+++ b/android/ipc.c
static GIOChannel *cmd_io = NULL;
static GIOChannel *notif_io = NULL;
+static guint cmd_watch = 0;
+static guint notif_watch = 0;
+
int ipc_handle_msg(struct service_handler *handlers, size_t max_index,
const void *buf, ssize_t len)
{
cond = G_IO_ERR | G_IO_HUP | G_IO_NVAL;
- g_io_add_watch(io, cond, notif_watch_cb, NULL);
+ notif_watch = g_io_add_watch(io, cond, notif_watch_cb, NULL);
cond = G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL;
- g_io_add_watch(cmd_io, cond, cmd_watch_cb, NULL);
+ cmd_watch = g_io_add_watch(cmd_io, cond, cmd_watch_cb, NULL);
info("IPC: successfully connected");
void ipc_cleanup(void)
{
+ if (cmd_watch) {
+ g_source_remove(cmd_watch);
+ cmd_watch = 0;
+ }
+
if (cmd_io) {
g_io_channel_shutdown(cmd_io, TRUE, NULL);
g_io_channel_unref(cmd_io);
cmd_io = NULL;
}
+ if (notif_watch) {
+ g_source_remove(notif_watch);
+ notif_watch = 0;
+ }
+
if (notif_io) {
g_io_channel_shutdown(notif_io, TRUE, NULL);
g_io_channel_unref(notif_io);