-int main(int argc, char **argv) {
- lognotice("WinMan ver. %s", WINMAN_VERSION_STRING);
+struct afb_instance *g_afb_instance;
+
+int afb_instance::init() {
+ if (!this->display->ok()) {
+ return -1;
+ }
+
+ return this->app.init();
+}
+
+int display_event_callback(sd_event_source *evs, int /*fd*/, uint32_t events,
+ void * /*data*/) {
+ ST();
+
+ if ((events & EPOLLHUP) != 0) {
+ logerror("The compositor hung up, dying now.");
+ delete g_afb_instance;
+ g_afb_instance = nullptr;
+ goto error;
+ }
+
+ if ((events & EPOLLIN) != 0u) {
+ {
+ STN(display_read_events);
+ g_afb_instance->app.display->read_events();
+ g_afb_instance->app.set_pending_events();
+ }
+ {
+ // We want do dispatch pending wayland events from within
+ // the API context
+ STN(winman_ping_api_call);
+ afb_service_call("winman", "ping", json_object_new_object(),
+ [](void *c, int st, json_object *j) {
+ STN(winman_ping_api_call_return);
+ },
+ nullptr);
+ }
+ }