mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-31 22:25:21 -04:00
Add wlr_signal_emit_safe
This commit is contained in:
parent
3497e53516
commit
5e58d46cc1
43 changed files with 265 additions and 182 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue