unit: shortcut unit_notify() early, if possible
authorLennart Poettering <lennart@poettering.net>
Thu, 8 Apr 2010 01:01:05 +0000 (03:01 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 8 Apr 2010 01:01:05 +0000 (03:01 +0200)
device.c
service.c
socket.c
target.c

index 25661e0..d99038f 100644 (file)
--- 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;
 
index 7ed9783..74d03db 100644 (file)
--- 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]);
index 4e35225..617a49a 100644 (file)
--- 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]);
index b8a7442..c80c09d 100644 (file)
--- 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;