chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2c8d1e1
)
sd-event: drop pending events when we turn off/on an event source
author
Lennart Poettering
<lennart@poettering.net>
Fri, 25 May 2018 15:06:39 +0000
(17:06 +0200)
committer
Sven Eden
<yamakuzure@gmx.net>
Fri, 24 Aug 2018 14:47:08 +0000
(16:47 +0200)
src/libelogind/sd-event/sd-event.c
patch
|
blob
|
history
diff --git
a/src/libelogind/sd-event/sd-event.c
b/src/libelogind/sd-event/sd-event.c
index 7d6096261bb69c0f2f5d706efbdf75ba4ca2e64c..3dc0cdb9576a69611d73ee7a2d1c20c1ea8f29d7 100644
(file)
--- a/
src/libelogind/sd-event/sd-event.c
+++ b/
src/libelogind/sd-event/sd-event.c
@@
-1638,6
+1638,13
@@
_public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
if (m == SD_EVENT_OFF) {
if (m == SD_EVENT_OFF) {
+ /* Unset the pending flag when this event source is disabled */
+ if (!IN_SET(s->type, SOURCE_DEFER, SOURCE_EXIT)) {
+ r = source_set_pending(s, false);
+ if (r < 0)
+ return r;
+ }
+
switch (s->type) {
case SOURCE_IO:
switch (s->type) {
case SOURCE_IO:
@@
-1692,6
+1699,14
@@
_public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
}
} else {
}
} else {
+
+ /* Unset the pending flag when this event source is enabled */
+ if (s->enabled == SD_EVENT_OFF && !IN_SET(s->type, SOURCE_DEFER, SOURCE_EXIT)) {
+ r = source_set_pending(s, false);
+ if (r < 0)
+ return r;
+ }
+
switch (s->type) {
case SOURCE_IO:
switch (s->type) {
case SOURCE_IO: