aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar nyorain <nyorain@gmail.com>2017-07-11 17:12:53 +0200
committerLibravatar nyorain <nyorain@gmail.com>2017-07-11 17:12:53 +0200
commit20888fbb5e19e2bd7e45afb6fdbc2c1ed8cc769d (patch)
treea50906cc4549b44603687470aff889523db3047b
parentAdd timeout; Fix receive loop & style issues (diff)
downloadsway-20888fbb5e19e2bd7e45afb6fdbc2c1ed8cc769d.tar.gz
sway-20888fbb5e19e2bd7e45afb6fdbc2c1ed8cc769d.tar.zst
sway-20888fbb5e19e2bd7e45afb6fdbc2c1ed8cc769d.zip
Close fd in clipboard request
-rw-r--r--sway/ipc-server.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sway/ipc-server.c b/sway/ipc-server.c
index 937382af..829b8bf3 100644
--- a/sway/ipc-server.c
+++ b/sway/ipc-server.c
@@ -59,6 +59,7 @@ struct get_pixels_request {
59struct get_clipboard_request { 59struct get_clipboard_request {
60 struct ipc_client *client; 60 struct ipc_client *client;
61 json_object *json; 61 json_object *json;
62 int fd;
62 struct wlc_event_source *fd_event_source; 63 struct wlc_event_source *fd_event_source;
63 struct wlc_event_source *timer_event_source; 64 struct wlc_event_source *timer_event_source;
64 char *type; 65 char *type;
@@ -354,6 +355,7 @@ static void release_clipboard_request(struct get_clipboard_request *req) {
354 free(req->buf); 355 free(req->buf);
355 wlc_event_source_remove(req->fd_event_source); 356 wlc_event_source_remove(req->fd_event_source);
356 wlc_event_source_remove(req->timer_event_source); 357 wlc_event_source_remove(req->timer_event_source);
358 close(req->fd);
357 free(req); 359 free(req);
358} 360}
359 361
@@ -534,6 +536,7 @@ void ipc_get_clipboard(struct ipc_client *client, char *buf) {
534 req->pending = pending; 536 req->pending = pending;
535 req->buf_position = 0; 537 req->buf_position = 0;
536 req->buf_size = 512; 538 req->buf_size = 512;
539 req->fd = pipes[0];
537 req->timer_event_source = wlc_event_loop_add_timer(ipc_selection_timer_cb, req); 540 req->timer_event_source = wlc_event_loop_add_timer(ipc_selection_timer_cb, req);
538 req->fd_event_source = wlc_event_loop_add_fd(pipes[0], 541 req->fd_event_source = wlc_event_loop_add_fd(pipes[0],
539 WLC_EVENT_READABLE | WLC_EVENT_ERROR | WLC_EVENT_HANGUP, 542 WLC_EVENT_READABLE | WLC_EVENT_ERROR | WLC_EVENT_HANGUP,