]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-event: drop unnecessary call of sd_event_now() when requested relative time is...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 20 Sep 2023 02:32:27 +0000 (11:32 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 21 Sep 2023 09:03:37 +0000 (11:03 +0200)
src/libsystemd/sd-event/event-util.c

index d93d8865ecf3017b9cfc8bdb7992d08276d94f5e..a3101227af7dc645473f416b7ef06dc4a31dbb08 100644 (file)
@@ -97,16 +97,21 @@ int event_reset_time_relative(
                 const char *description,
                 bool force_reset) {
 
-        usec_t usec_now;
         int r;
 
         assert(e);
 
-        r = sd_event_now(e, clock, &usec_now);
-        if (r < 0)
-                return log_debug_errno(r, "sd-event: Failed to get the current time: %m");
+        if (usec > 0) {
+                usec_t usec_now;
+
+                r = sd_event_now(e, clock, &usec_now);
+                if (r < 0)
+                        return log_debug_errno(r, "sd-event: Failed to get the current time: %m");
+
+                usec = usec_add(usec_now, usec);
+        }
 
-        return event_reset_time(e, s, clock, usec_add(usec_now, usec), accuracy, callback, userdata, priority, description, force_reset);
+        return event_reset_time(e, s, clock, usec, accuracy, callback, userdata, priority, description, force_reset);
 }
 
 int event_add_time_change(sd_event *e, sd_event_source **ret, sd_event_io_handler_t callback, void *userdata) {