From 0cdfd750ef2fb6f11ab8cb2432eff644371e158b Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sun, 24 Jan 2021 12:05:45 +0000 Subject: [PATCH] dbus: support adding disabled watchers Dbus may add a watcher in a disabled state, don't action it if so on the lws event loop. It'll re-add if it wants it, confusingly. --- lib/roles/dbus/dbus.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/roles/dbus/dbus.c b/lib/roles/dbus/dbus.c index 6e651018d..2452673f7 100644 --- a/lib/roles/dbus/dbus.c +++ b/lib/roles/dbus/dbus.c @@ -179,7 +179,7 @@ lws_dbus_add_watch(DBusWatch *w, void *data) } for (n = 0; n < (int)LWS_ARRAY_SIZE(ctx->w); n++) - if (ctx->w[n]) + if (ctx->w[n] && dbus_watch_get_enabled(ctx->w[n])) flags |= dbus_watch_get_flags(ctx->w[n]); if (flags & DBUS_WATCH_READABLE) @@ -190,7 +190,8 @@ lws_dbus_add_watch(DBusWatch *w, void *data) lwsl_info("%s: w %p, fd %d, data %p, flags %d\n", __func__, w, dbus_watch_get_unix_fd(w), data, lws_flags); - __lws_change_pollfd(wsi, 0, lws_flags); + if (lws_flags) + __lws_change_pollfd(wsi, 0, (int)lws_flags); lws_pt_unlock(pt);