diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-07-13 16:58:45 +0100 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-08-01 16:57:14 +0100 |
commit | e8b179e313632c150ff7775f4f740296465cb58a (patch) | |
tree | 923ad08e8bd5b658283e5c39507b6e649b2f9777 /sway/ipc-server.c | |
parent | Merge pull request #2397 from chr0me-sh/hide-cursor-if-no-pointer (diff) | |
download | sway-e8b179e313632c150ff7775f4f740296465cb58a.tar.gz sway-e8b179e313632c150ff7775f4f740296465cb58a.tar.zst sway-e8b179e313632c150ff7775f4f740296465cb58a.zip |
ipc: add shutdown event
Diffstat (limited to 'sway/ipc-server.c')
-rw-r--r-- | sway/ipc-server.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sway/ipc-server.c b/sway/ipc-server.c index be703915..72031e24 100644 --- a/sway/ipc-server.c +++ b/sway/ipc-server.c | |||
@@ -353,6 +353,20 @@ void ipc_event_mode(const char *mode, bool pango) { | |||
353 | json_object_put(obj); | 353 | json_object_put(obj); |
354 | } | 354 | } |
355 | 355 | ||
356 | void ipc_event_shutdown(const char *reason) { | ||
357 | if (!ipc_has_event_listeners(IPC_EVENT_SHUTDOWN)) { | ||
358 | return; | ||
359 | } | ||
360 | wlr_log(WLR_DEBUG, "Sending shutdown::%s event", reason); | ||
361 | |||
362 | json_object *json = json_object_new_object(); | ||
363 | json_object_object_add(json, "change", json_object_new_string(reason)); | ||
364 | |||
365 | const char *json_string = json_object_to_json_string(json); | ||
366 | ipc_send_event(json_string, IPC_EVENT_SHUTDOWN); | ||
367 | json_object_put(json); | ||
368 | } | ||
369 | |||
356 | int ipc_client_handle_writable(int client_fd, uint32_t mask, void *data) { | 370 | int ipc_client_handle_writable(int client_fd, uint32_t mask, void *data) { |
357 | struct ipc_client *client = data; | 371 | struct ipc_client *client = data; |
358 | 372 | ||
@@ -549,6 +563,8 @@ void ipc_client_handle_command(struct ipc_client *client) { | |||
549 | client->subscribed_events |= event_mask(IPC_EVENT_BARCONFIG_UPDATE); | 563 | client->subscribed_events |= event_mask(IPC_EVENT_BARCONFIG_UPDATE); |
550 | } else if (strcmp(event_type, "mode") == 0) { | 564 | } else if (strcmp(event_type, "mode") == 0) { |
551 | client->subscribed_events |= event_mask(IPC_EVENT_MODE); | 565 | client->subscribed_events |= event_mask(IPC_EVENT_MODE); |
566 | } else if (strcmp(event_type, "shutdown") == 0) { | ||
567 | client->subscribed_events |= event_mask(IPC_EVENT_SHUTDOWN); | ||
552 | } else if (strcmp(event_type, "window") == 0) { | 568 | } else if (strcmp(event_type, "window") == 0) { |
553 | client->subscribed_events |= event_mask(IPC_EVENT_WINDOW); | 569 | client->subscribed_events |= event_mask(IPC_EVENT_WINDOW); |
554 | } else if (strcmp(event_type, "modifier") == 0) { | 570 | } else if (strcmp(event_type, "modifier") == 0) { |