diff options
Diffstat (limited to 'plugins/afm-main-plugin/afm-main-plugin.c')
-rw-r--r-- | plugins/afm-main-plugin/afm-main-plugin.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/plugins/afm-main-plugin/afm-main-plugin.c b/plugins/afm-main-plugin/afm-main-plugin.c index b026fd80..418cc508 100644 --- a/plugins/afm-main-plugin/afm-main-plugin.c +++ b/plugins/afm-main-plugin/afm-main-plugin.c @@ -23,7 +23,9 @@ #include "afb-plugin.h" #include "afb-req-itf.h" +#include "afb-poll-itf.h" +#include "utils-sbus.h" #include "utils-jbus.h" static const char _auto_[] = "auto"; @@ -276,14 +278,33 @@ static const struct AFB_plugin plug_desc = { .apis = plug_apis }; +static struct sbus_itf sbusitf; + const struct AFB_plugin *pluginRegister(const struct AFB_interface *itf) { + struct sbus *sbus; + + if (interface != NULL) + return NULL; + interface = itf; + sbusitf.wait = itf->pollitf->wait; + sbusitf.open = itf->pollitf->open; + sbusitf.on_readable = itf->pollitf->on_readable; + sbusitf.on_writable = itf->pollitf->on_writable; + sbusitf.on_hangup = itf->pollitf->on_hangup; + sbusitf.close = itf->pollitf->close; + + sbus = sbus_session(&sbusitf, itf->pollclosure); + if (sbus == NULL) { + fprintf(stderr, "ERROR: %s:%d: can't connect to DBUS session\n", __FILE__, __LINE__); + return NULL; + } - jbus = create_jbus_session("/org/AGL/afm/user"); + jbus = create_jbus(sbus, "/org/AGL/afm/user"); if (jbus) return &plug_desc; - fprintf(stderr, "ERROR: %s:%d: can't connect to DBUS session\n", __FILE__, __LINE__); + sbus_unref(sbus); return NULL; } |