Hi Marcin, On Wednesday 15 of January 2014 20:12:27 Marcin Kraglak wrote: > Remove sources while cleanup. It will avoid receiving > events after cleanup. > --- > android/ipc.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/android/ipc.c b/android/ipc.c > index ed3ef3c..4277bfe 100644 > --- a/android/ipc.c > +++ b/android/ipc.c > @@ -45,6 +45,9 @@ static struct service_handler services[HAL_SERVICE_ID_MAX + 1]; > static GIOChannel *cmd_io = NULL; > static GIOChannel *notif_io = NULL; > > +static guint cmd_id; > +static guint notif_id; Please name it cmd_watch and notif_watch. Also explicitly initialize them to 0 here. > + > int ipc_handle_msg(struct service_handler *handlers, size_t max_index, > const void *buf, ssize_t len) > { > @@ -192,11 +195,11 @@ static gboolean notif_connect_cb(GIOChannel *io, GIOCondition cond, > > cond = G_IO_ERR | G_IO_HUP | G_IO_NVAL; > > - g_io_add_watch(io, cond, notif_watch_cb, NULL); > + notif_id = 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_id = g_io_add_watch(cmd_io, cond, cmd_watch_cb, NULL); > > info("IPC: successfully connected"); > > @@ -232,12 +235,22 @@ void ipc_init(void) > > void ipc_cleanup(void) > { > + if (cmd_id) { > + g_source_remove(cmd_id); > + cmd_id = 0; > + } > + > if (cmd_io) { > g_io_channel_shutdown(cmd_io, TRUE, NULL); > g_io_channel_unref(cmd_io); > cmd_io = NULL; > } > > + if (notif_id) { > + g_source_remove(notif_id); > + notif_id = 0; > + } > + > if (notif_io) { > g_io_channel_shutdown(notif_io, TRUE, NULL); > g_io_channel_unref(notif_io); > -- Best regards, Szymon Janc -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html