#include "wayland.hpp"
#include <algorithm>
+#include <mutex>
+
#include <json.h>
extern "C" {
}
namespace {
+std::mutex binding_m;
+
struct afb_instance {
std::unique_ptr<wl::display> display;
wm::App app;
int display_event_callback(sd_event_source *evs, int /*fd*/, uint32_t events,
void * /*data*/) {
+ std::lock_guard<std::mutex> guard(binding_m);
+
if ((events & EPOLLHUP) != 0) {
logerror("The compositor hung up, dying now.");
delete g_afb_instance;
error:
sd_event_source_unref(evs);
+ exit(1);
return -1;
}
// XXX implement send_event right here...
namespace wm {
-void binding_api::send_event(char const *evname, json_object *payload) {
- logdebug("%s: %s(%s)", __func__, evname, json_object_to_json_string(payload));
- afb_event ev = afb_daemon_make_event(evname);
- int ret = afb_event_broadcast(ev, payload);
+void binding_api::send_event(char const *evname, char const *label) {
+ logdebug("%s: %s(%s)", __func__, evname, label);
+ int ret = afb_daemon_broadcast_event(evname, json_object_new_string(label));
if (ret != 0) {
logdebug("afb_event_broadcast failed: %m");
}