summaryrefslogtreecommitdiff
path: root/src/platform/wayland/clipboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/wayland/clipboard.c')
-rw-r--r--src/platform/wayland/clipboard.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/platform/wayland/clipboard.c b/src/platform/wayland/clipboard.c
index 9a75953..9c019a1 100644
--- a/src/platform/wayland/clipboard.c
+++ b/src/platform/wayland/clipboard.c
@@ -48,7 +48,7 @@ struct clipboard {
struct offer *drag_offer;
struct primary_offer *primary_selection;
struct primary_offer *primary_pending_offers;
- struct yasl_private_loop *loop;
+ struct yasl_loop *loop;
struct transfer *transfers;
char *text;
char *primary_text;
@@ -106,9 +106,9 @@ static void transfer_end(struct transfer *t, bool complete)
struct transfer **p = &owner->transfers;
while (*p && *p != t) p = &(*p)->next;
if (*p) *p = t->next;
- yasl_private_loop_del_fd(owner->loop, t->id);
+ yasl_loop_del_fd(owner->loop, t->id);
if (t->timeout)
- yasl_private_loop_del_timer(owner->loop, t->timeout);
+ yasl_loop_del_timer(owner->loop, t->timeout);
close(t->fd);
if (t->drop) {
if (complete && wl_data_offer_get_version(t->drop->proxy) >=
@@ -133,10 +133,10 @@ static void transfer_end(struct transfer *t, bool complete)
free(t);
}
-static int transfer_io(int fd, short events, void *ud)
+static void transfer_io(void *ud, int fd, short events)
{
struct transfer *t = ud;
- if (events & (POLLERR | POLLNVAL)) { transfer_end(t, false); return 0; }
+ if (events & (POLLERR | POLLNVAL)) { transfer_end(t, false); return; }
if (t->sending) {
ssize_t n = write(fd, t->text + t->offset, t->len - t->offset);
if (n > 0) t->offset += (size_t)n;
@@ -146,9 +146,9 @@ static int transfer_io(int fd, short events, void *ud)
if (t->capacity - t->len < 4096) {
size_t capacity = t->capacity ? t->capacity * 2 : 8192;
if (capacity > CLIPBOARD_TEXT_MAX) capacity = CLIPBOARD_TEXT_MAX;
- if (capacity <= t->len) { transfer_end(t, false); return 0; }
+ if (capacity <= t->len) { transfer_end(t, false); return; }
char *text = realloc(t->text, capacity);
- if (!text) { transfer_end(t, false); return 0; }
+ if (!text) { transfer_end(t, false); return; }
t->text = text;
t->capacity = capacity;
}
@@ -160,7 +160,6 @@ static int transfer_io(int fd, short events, void *ud)
transfer_end(t, valid);
} else if (errno != EAGAIN && errno != EINTR) transfer_end(t, false);
}
- return 0;
}
static struct transfer *start_transfer_text(struct clipboard *c, int fd, bool sending,
@@ -176,12 +175,12 @@ static struct transfer *start_transfer_text(struct clipboard *c, int fd, bool se
if (!t->text) { close(fd); free(t); return NULL; }
t->len = strlen(t->text);
}
- t->id = yasl_private_loop_add_fd(c->loop, fd, sending ? POLLOUT : POLLIN, transfer_io, t);
- if (t->id < 0) { close(fd); free(t->text); free(t); return NULL; }
- t->timeout = yasl_private_loop_add_timer(c->loop, CLIPBOARD_TRANSFER_TIMEOUT_NS,
+ t->id = yasl_loop_add_fd(c->loop, fd, sending ? POLLOUT : POLLIN, transfer_io, t);
+ if (t->id <= 0) { close(fd); free(t->text); free(t); return NULL; }
+ t->timeout = yasl_loop_add_timer(c->loop, CLIPBOARD_TRANSFER_TIMEOUT_NS,
transfer_timeout, t);
if (!t->timeout) {
- yasl_private_loop_del_fd(c->loop, t->id);
+ yasl_loop_del_fd(c->loop, t->id);
close(fd);
free(t->text);
free(t);
@@ -522,7 +521,7 @@ struct wl_data_device *clipboard_data_device(const struct clipboard *c)
}
struct clipboard *clipboard_create(struct wl_display *display, struct wl_data_device_manager *manager,
- struct wl_seat *seat, struct yasl_private_loop *loop,
+ struct wl_seat *seat, struct yasl_loop *loop,
clipboard_receive_fn receive, void *ud)
{
if (!manager || !seat) return NULL;