]> git.sur5r.net Git - i3/i3/blobdiff - i3bar/src/ipc.c
i3bar: only restart child when command changed (#2866)
[i3/i3] / i3bar / src / ipc.c
index 042e230a522ce3eeb43f535993f3fbe16ba978ed..c932aaf7d3b2536d864aa3dbedc6c47ff6824908 100644 (file)
@@ -113,7 +113,6 @@ void got_bar_config(char *reply) {
     init_colors(&(config.colors));
 
     start_child(config.command);
-    FREE(config.command);
 }
 
 /* Data structure to easily call the reply handlers later */
@@ -178,6 +177,7 @@ void got_bar_config_update(char *event) {
 
     /* update the configuration with the received settings */
     DLOG("Received bar config update \"%s\"\n", event);
+    char *old_command = sstrdup(config.command);
     bar_display_mode_t old_mode = config.hide_on_modifier;
     parse_config_json(event);
     if (old_mode != config.hide_on_modifier) {
@@ -189,9 +189,11 @@ void got_bar_config_update(char *event) {
     init_colors(&(config.colors));
 
     /* restart status command process */
-    kill_child();
-    start_child(config.command);
-    FREE(config.command);
+    if (strcmp(old_command, config.command) != 0) {
+        kill_child();
+        start_child(config.command);
+    }
+    free(old_command);
 
     draw_bars(false);
 }