diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-08 03:01:05 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-08 03:01:05 +0200 |
commit | a90ebccc072efa17313fe68c737b3507247c37dd (patch) | |
tree | f469f3392e84991816b949d27d07a2f744379d16 | |
parent | 37d88da701d75a3893b262580dc59042147a9b89 (diff) |
unit: shortcut unit_notify() early, if possible
-rw-r--r-- | device.c | 3 | ||||
-rw-r--r-- | service.c | 3 | ||||
-rw-r--r-- | socket.c | 3 | ||||
-rw-r--r-- | target.c | 3 |
4 files changed, 12 insertions, 0 deletions
@@ -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; @@ -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]); @@ -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]); @@ -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; |