aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sway/desktop/layer_shell.c2
-rw-r--r--sway/ipc-server.c23
-rw-r--r--swaybar/status_line.c1
3 files changed, 2 insertions, 24 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c
index d8ce0db1..a5cd79ba 100644
--- a/sway/desktop/layer_shell.c
+++ b/sway/desktop/layer_shell.c
@@ -204,8 +204,8 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
204 if (wlr_output != NULL) { 204 if (wlr_output != NULL) {
205 struct sway_output *output = wlr_output->data; 205 struct sway_output *output = wlr_output->data;
206 struct wlr_box old_geo = layer->geo; 206 struct wlr_box old_geo = layer->geo;
207 arrange_layers(output);
208 if (memcmp(&old_geo, &layer->geo, sizeof(struct wlr_box)) != 0) { 207 if (memcmp(&old_geo, &layer->geo, sizeof(struct wlr_box)) != 0) {
208 arrange_layers(output);
209 // TODO DAMAGE apply whole surface from previous and new geos 209 // TODO DAMAGE apply whole surface from previous and new geos
210 } else { 210 } else {
211 // TODO DAMAGE from surface damage 211 // TODO DAMAGE from surface damage
diff --git a/sway/ipc-server.c b/sway/ipc-server.c
index 59fc05f9..8250b3a0 100644
--- a/sway/ipc-server.c
+++ b/sway/ipc-server.c
@@ -242,33 +242,10 @@ int ipc_client_handle_readable(int client_fd, uint32_t mask, void *data) {
242} 242}
243 243
244static void ipc_send_event(const char *json_string, enum ipc_command_type event) { 244static void ipc_send_event(const char *json_string, enum ipc_command_type event) {
245 static struct {
246 enum ipc_command_type event;
247 enum ipc_feature feature;
248 } security_mappings[] = {
249 { IPC_EVENT_WORKSPACE, IPC_FEATURE_EVENT_WORKSPACE },
250 { IPC_EVENT_OUTPUT, IPC_FEATURE_EVENT_OUTPUT },
251 { IPC_EVENT_MODE, IPC_FEATURE_EVENT_MODE },
252 { IPC_EVENT_WINDOW, IPC_FEATURE_EVENT_WINDOW },
253 { IPC_EVENT_BINDING, IPC_FEATURE_EVENT_BINDING },
254 { IPC_EVENT_INPUT, IPC_FEATURE_EVENT_INPUT }
255 };
256
257 uint32_t security_mask = 0;
258 for (size_t i = 0; i < sizeof(security_mappings) / sizeof(security_mappings[0]); ++i) {
259 if (security_mappings[i].event == event) {
260 security_mask = security_mappings[i].feature;
261 break;
262 }
263 }
264
265 int i; 245 int i;
266 struct ipc_client *client; 246 struct ipc_client *client;
267 for (i = 0; i < ipc_client_list->length; i++) { 247 for (i = 0; i < ipc_client_list->length; i++) {
268 client = ipc_client_list->items[i]; 248 client = ipc_client_list->items[i];
269 if (!(client->security_policy & security_mask)) {
270 continue;
271 }
272 if ((client->subscribed_events & event_mask(event)) == 0) { 249 if ((client->subscribed_events & event_mask(event)) == 0) {
273 continue; 250 continue;
274 } 251 }
diff --git a/swaybar/status_line.c b/swaybar/status_line.c
index 5b131aee..3454f207 100644
--- a/swaybar/status_line.c
+++ b/swaybar/status_line.c
@@ -76,5 +76,6 @@ struct status_line *status_line_init(char *cmd) {
76void status_line_free(struct status_line *status) { 76void status_line_free(struct status_line *status) {
77 close(status->read_fd); 77 close(status->read_fd);
78 close(status->write_fd); 78 close(status->write_fd);
79 kill(status->pid, SIGTERM);
79 free(status); 80 free(status);
80} 81}