Destroy callback should be called also for G_IO_ERR | G_IO_NVAL condition. --- src/shared/io-glib.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/io-glib.c b/src/shared/io-glib.c index af2ba4e..e9578e1 100644 --- a/src/shared/io-glib.c +++ b/src/shared/io-glib.c @@ -159,9 +159,11 @@ static gboolean watch_callback(GIOChannel *channel, GIOCondition cond, gpointer user_data) { struct io_watch *watch = user_data; - bool result; + bool result, destroy; - if (cond & (G_IO_ERR | G_IO_NVAL)) + destroy = watch == watch->io->disconnect_watch; + + if (!destroy && (cond & (G_IO_ERR | G_IO_NVAL))) return FALSE; if (watch->callback) -- 1.9.3 -- 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