chiark / gitweb /
sd-event: simplify sd_event_run()
authorLennart Poettering <lennart@poettering.net>
Fri, 10 Apr 2015 16:45:39 +0000 (18:45 +0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 07:01:30 +0000 (08:01 +0100)
src/libelogind/sd-event/sd-event.c

index 376477f275b90ffa6e9c310cd24e704c7dbbe170..0dc468037689639f74149f30f771fe7f59d4a2ef 100644 (file)
@@ -2490,24 +2490,20 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
         assert_return(e->state == SD_EVENT_INITIAL, -EBUSY);
 
         r = sd_event_prepare(e);
-        if (r > 0) {
-                r = sd_event_dispatch(e);
-                if (r < 0)
-                        return r;
-                else
-                        return 1;
-        } else if (r < 0)
-                return r;
+        if (r == 0)
+                /* There was nothing? Then wait... */
+                r = sd_event_wait(e, timeout);
 
-        r = sd_event_wait(e, timeout);
         if (r > 0) {
+                /* There's something now, then let's dispatch it */
                 r = sd_event_dispatch(e);
                 if (r < 0)
                         return r;
-                else
-                        return 1;
-        } else
-                return r;
+
+                return 1;
+        }
+
+        return r;
 }
 
 _public_ int sd_event_loop(sd_event *e) {