Add wlr_signal_emit_safe

This commit is contained in:
emersion 2018-02-12 09:12:31 +01:00
parent 3497e53516
commit 5e58d46cc1
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
43 changed files with 265 additions and 182 deletions

View file

@ -15,6 +15,7 @@
#include <wayland-server.h>
#include <wlr/backend/session/interface.h>
#include <wlr/util/log.h>
#include <wlr/util/signal.h>
#include "backend/session/direct-ipc.h"
const struct session_impl session_direct;
@ -95,12 +96,12 @@ static int vt_handler(int signo, void *data) {
if (session->base.active) {
session->base.active = false;
wl_signal_emit(&session->base.session_signal, session);
wlr_signal_emit_safe(&session->base.session_signal, session);
ioctl(session->tty_fd, VT_RELDISP, 1);
} else {
ioctl(session->tty_fd, VT_RELDISP, VT_ACKACQ);
session->base.active = true;
wl_signal_emit(&session->base.session_signal, session);
wlr_signal_emit_safe(&session->base.session_signal, session);
}
return 1;

View file

@ -15,6 +15,7 @@
#include <wayland-server.h>
#include <wlr/backend/session/interface.h>
#include <wlr/util/log.h>
#include <wlr/util/signal.h>
#include "backend/session/direct-ipc.h"
enum { DRM_MAJOR = 226 };
@ -107,7 +108,7 @@ static int vt_handler(int signo, void *data) {
if (session->base.active) {
session->base.active = false;
wl_signal_emit(&session->base.session_signal, session);
wlr_signal_emit_safe(&session->base.session_signal, session);
struct wlr_device *dev;
wl_list_for_each(dev, &session->base.devices, link) {
@ -130,7 +131,7 @@ static int vt_handler(int signo, void *data) {
}
session->base.active = true;
wl_signal_emit(&session->base.session_signal, session);
wlr_signal_emit_safe(&session->base.session_signal, session);
}
return 1;

View file

@ -13,13 +13,14 @@
#include <wlr/config.h>
#include <wlr/backend/session/interface.h>
#include <wlr/util/log.h>
#include <wlr/util/signal.h>
#ifdef WLR_HAS_SYSTEMD
#include <systemd/sd-bus.h>
#include <systemd/sd-login.h>
#elif defined(WLR_HAS_ELOGIND)
#include <elogind/sd-bus.h>
#include <elogind/sd-login.h>
#include <elogind/sd-login.h>
#endif
enum { DRM_MAJOR = 226 };
@ -250,7 +251,7 @@ static int pause_device(sd_bus_message *msg, void *userdata, sd_bus_error *ret_e
if (major == DRM_MAJOR) {
session->base.active = false;
wl_signal_emit(&session->base.session_signal, session);
wlr_signal_emit_safe(&session->base.session_signal, session);
}
if (strcmp(type, "pause") == 0) {
@ -286,7 +287,7 @@ static int resume_device(sd_bus_message *msg, void *userdata, sd_bus_error *ret_
if (!session->base.active) {
session->base.active = true;
wl_signal_emit(&session->base.session_signal, session);
wlr_signal_emit_safe(&session->base.session_signal, session);
}
}

View file

@ -13,6 +13,7 @@
#include <wlr/backend/session.h>
#include <wlr/backend/session/interface.h>
#include <wlr/util/log.h>
#include <wlr/util/signal.h>
extern const struct session_impl session_logind;
extern const struct session_impl session_direct;
@ -49,7 +50,7 @@ static int udev_event(int fd, uint32_t mask, void *data) {
wl_list_for_each(dev, &session->devices, link) {
if (dev->dev == devnum) {
wl_signal_emit(&dev->signal, session);
wlr_signal_emit_safe(&dev->signal, session);
break;
}
}