From a90ebccc072efa17313fe68c737b3507247c37dd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 8 Apr 2010 03:01:05 +0200 Subject: [PATCH] unit: shortcut unit_notify() early, if possible --- device.c | 3 +++ service.c | 3 +++ socket.c | 3 +++ target.c | 3 +++ 4 files changed, 12 insertions(+) diff --git a/device.c b/device.c index 25661e05..d99038f7 100644 --- a/device.c +++ b/device.c @@ -49,6 +49,9 @@ static void device_set_state(Device *d, DeviceState state) { DeviceState old_state; assert(d); + if (state == d->state) + return; + old_state = d->state; d->state = state; diff --git a/service.c b/service.c index 7ed9783f..74d03dbe 100644 --- a/service.c +++ b/service.c @@ -968,6 +968,9 @@ static void service_set_state(Service *s, ServiceState state) { state == SERVICE_AUTO_RESTART) service_notify_sockets(s); + if (old_state == state) + return; + log_debug("%s changed %s → %s", unit_id(UNIT(s)), service_state_to_string(old_state), service_state_to_string(state)); unit_notify(UNIT(s), state_translation_table[old_state], state_translation_table[state]); diff --git a/socket.c b/socket.c index 4e352250..617a49a0 100644 --- a/socket.c +++ b/socket.c @@ -391,6 +391,9 @@ static void socket_set_state(Socket *s, SocketState state) { if (state != SOCKET_LISTENING) socket_unwatch_fds(s); + if (state == old_state) + return; + log_debug("%s changed %s → %s", unit_id(UNIT(s)), state_string_table[old_state], state_string_table[state]); unit_notify(UNIT(s), state_translation_table[old_state], state_translation_table[state]); diff --git a/target.c b/target.c index b8a7442f..c80c09d5 100644 --- a/target.c +++ b/target.c @@ -52,6 +52,9 @@ static void target_set_state(Target *t, TargetState state) { TargetState old_state; assert(t); + if (state == t->state) + return; + old_state = t->state; t->state = state; -- 2.39.5