xwayland/selection: rename Wayland-facing data and helpers

Previously, wlr_xwm_selection_transfer.source_fd meant:

- the source of data in a Wayland -> X11 copy (good)
- the destination of data in a X11 -> Wayland copy (confusing)

This made reading through xwayland/selection/incoming.c difficult: in
many places, "source" actually means "destination".
master
Tudor Brindus 4 years ago committed by Simon Ser
parent 1b8330d1f8
commit e75f483aeb

@ -18,8 +18,8 @@ struct wlr_xwm_selection_transfer {
bool flush_property_on_delete; bool flush_property_on_delete;
bool property_set; bool property_set;
struct wl_array source_data; struct wl_array source_data;
int source_fd; int wl_client_fd;
struct wl_event_source *source; struct wl_event_source *event_source;
// when sending to x11 // when sending to x11
xcb_selection_request_event_t request; xcb_selection_request_event_t request;
@ -41,9 +41,9 @@ struct wlr_xwm_selection {
struct wl_list outgoing; struct wl_list outgoing;
}; };
void xwm_selection_transfer_remove_source( void xwm_selection_transfer_remove_event_source(
struct wlr_xwm_selection_transfer *transfer); struct wlr_xwm_selection_transfer *transfer);
void xwm_selection_transfer_close_source_fd( void xwm_selection_transfer_close_wl_client_fd(
struct wlr_xwm_selection_transfer *transfer); struct wlr_xwm_selection_transfer *transfer);
void xwm_selection_transfer_destroy_property_reply( void xwm_selection_transfer_destroy_property_reply(
struct wlr_xwm_selection_transfer *transfer); struct wlr_xwm_selection_transfer *transfer);

@ -26,8 +26,8 @@ static int xwm_data_source_write(int fd, uint32_t mask, void *data) {
if (len == -1) { if (len == -1) {
wlr_log_errno(WLR_ERROR, "write error to target fd %d", fd); wlr_log_errno(WLR_ERROR, "write error to target fd %d", fd);
xwm_selection_transfer_destroy_property_reply(transfer); xwm_selection_transfer_destroy_property_reply(transfer);
xwm_selection_transfer_remove_source(transfer); xwm_selection_transfer_remove_event_source(transfer);
xwm_selection_transfer_close_source_fd(transfer); xwm_selection_transfer_close_wl_client_fd(transfer);
return 1; return 1;
} }
@ -38,7 +38,7 @@ static int xwm_data_source_write(int fd, uint32_t mask, void *data) {
transfer->property_start += len; transfer->property_start += len;
if (len == remainder) { if (len == remainder) {
xwm_selection_transfer_destroy_property_reply(transfer); xwm_selection_transfer_destroy_property_reply(transfer);
xwm_selection_transfer_remove_source(transfer); xwm_selection_transfer_remove_event_source(transfer);
if (transfer->incr) { if (transfer->incr) {
wlr_log(WLR_DEBUG, "deleting property"); wlr_log(WLR_DEBUG, "deleting property");
@ -47,7 +47,7 @@ static int xwm_data_source_write(int fd, uint32_t mask, void *data) {
xcb_flush(xwm->xcb_conn); xcb_flush(xwm->xcb_conn);
} else { } else {
wlr_log(WLR_DEBUG, "transfer complete"); wlr_log(WLR_DEBUG, "transfer complete");
xwm_selection_transfer_close_source_fd(transfer); xwm_selection_transfer_close_wl_client_fd(transfer);
} }
} }
@ -61,13 +61,13 @@ static void xwm_write_property(struct wlr_xwm_selection_transfer *transfer,
transfer->property_start = 0; transfer->property_start = 0;
transfer->property_reply = reply; transfer->property_reply = reply;
xwm_data_source_write(transfer->source_fd, WL_EVENT_WRITABLE, transfer); xwm_data_source_write(transfer->wl_client_fd, WL_EVENT_WRITABLE, transfer);
if (transfer->property_reply != NULL) { if (transfer->property_reply != NULL) {
struct wl_event_loop *loop = struct wl_event_loop *loop =
wl_display_get_event_loop(xwm->xwayland->wl_display); wl_display_get_event_loop(xwm->xwayland->wl_display);
transfer->source = wl_event_loop_add_fd(loop, transfer->event_source = wl_event_loop_add_fd(loop,
transfer->source_fd, WL_EVENT_WRITABLE, xwm_data_source_write, transfer->wl_client_fd, WL_EVENT_WRITABLE, xwm_data_source_write,
transfer); transfer);
} }
} }
@ -99,7 +99,7 @@ void xwm_get_incr_chunk(struct wlr_xwm_selection_transfer *transfer) {
xwm_write_property(transfer, reply); xwm_write_property(transfer, reply);
} else { } else {
wlr_log(WLR_DEBUG, "transfer complete"); wlr_log(WLR_DEBUG, "transfer complete");
xwm_selection_transfer_close_source_fd(transfer); xwm_selection_transfer_close_wl_client_fd(transfer);
free(reply); free(reply);
} }
} }
@ -172,7 +172,7 @@ static void source_send(struct wlr_xwm_selection *selection,
xcb_flush(xwm->xcb_conn); xcb_flush(xwm->xcb_conn);
fcntl(fd, F_SETFL, O_WRONLY | O_NONBLOCK); fcntl(fd, F_SETFL, O_WRONLY | O_NONBLOCK);
transfer->source_fd = fd; transfer->wl_client_fd = fd;
} }
struct x11_data_source { struct x11_data_source {

@ -80,8 +80,8 @@ static void xwm_selection_transfer_destroy_outgoing(
xwm_selection_transfer_get_first(selection)); xwm_selection_transfer_get_first(selection));
} }
xwm_selection_transfer_remove_source(transfer); xwm_selection_transfer_remove_event_source(transfer);
xwm_selection_transfer_close_source_fd(transfer); xwm_selection_transfer_close_wl_client_fd(transfer);
wl_array_release(&transfer->source_data); wl_array_release(&transfer->source_data);
free(transfer); free(transfer);
} }
@ -129,14 +129,14 @@ static int xwm_data_source_read(int fd, uint32_t mask, void *data) {
transfer->incr = true; transfer->incr = true;
transfer->property_set = true; transfer->property_set = true;
transfer->flush_property_on_delete = true; transfer->flush_property_on_delete = true;
xwm_selection_transfer_remove_source(transfer); xwm_selection_transfer_remove_event_source(transfer);
xwm_selection_send_notify(xwm, &transfer->request, true); xwm_selection_send_notify(xwm, &transfer->request, true);
} else if (transfer->property_set) { } else if (transfer->property_set) {
wlr_log(WLR_DEBUG, "got %zu bytes, waiting for property delete", wlr_log(WLR_DEBUG, "got %zu bytes, waiting for property delete",
transfer->source_data.size); transfer->source_data.size);
transfer->flush_property_on_delete = true; transfer->flush_property_on_delete = true;
xwm_selection_transfer_remove_source(transfer); xwm_selection_transfer_remove_event_source(transfer);
} else { } else {
wlr_log(WLR_DEBUG, "got %zu bytes, property deleted, setting new " wlr_log(WLR_DEBUG, "got %zu bytes, property deleted, setting new "
"property", transfer->source_data.size); "property", transfer->source_data.size);
@ -159,8 +159,8 @@ static int xwm_data_source_read(int fd, uint32_t mask, void *data) {
"property", transfer->source_data.size); "property", transfer->source_data.size);
xwm_selection_flush_source_data(transfer); xwm_selection_flush_source_data(transfer);
} }
xwm_selection_transfer_remove_source(transfer); xwm_selection_transfer_remove_event_source(transfer);
xwm_selection_transfer_close_source_fd(transfer); xwm_selection_transfer_close_wl_client_fd(transfer);
} else { } else {
wlr_log(WLR_DEBUG, "nothing happened, buffered the bytes"); wlr_log(WLR_DEBUG, "nothing happened, buffered the bytes");
} }
@ -183,7 +183,7 @@ void xwm_send_incr_chunk(struct wlr_xwm_selection_transfer *transfer) {
transfer->flush_property_on_delete = false; transfer->flush_property_on_delete = false;
int length = xwm_selection_flush_source_data(transfer); int length = xwm_selection_flush_source_data(transfer);
if (transfer->source_fd >= 0) { if (transfer->wl_client_fd >= 0) {
xwm_selection_transfer_start_outgoing(transfer); xwm_selection_transfer_start_outgoing(transfer);
} else if (length > 0) { } else if (length > 0) {
/* Transfer is all done, but queue a flush for /* Transfer is all done, but queue a flush for
@ -234,7 +234,7 @@ static void xwm_selection_transfer_start_outgoing(
wl_display_get_event_loop(xwm->xwayland->wl_display); wl_display_get_event_loop(xwm->xwayland->wl_display);
wlr_log(WLR_DEBUG, "Starting transfer %p", transfer); wlr_log(WLR_DEBUG, "Starting transfer %p", transfer);
assert(transfer == xwm_selection_transfer_get_first(transfer->selection)); assert(transfer == xwm_selection_transfer_get_first(transfer->selection));
transfer->source = wl_event_loop_add_fd(loop, transfer->source_fd, transfer->event_source = wl_event_loop_add_fd(loop, transfer->wl_client_fd,
WL_EVENT_READABLE, xwm_data_source_read, transfer); WL_EVENT_READABLE, xwm_data_source_read, transfer);
} }
@ -312,7 +312,7 @@ static bool xwm_selection_send_data(struct wlr_xwm_selection *selection,
fcntl(p[1], F_SETFD, FD_CLOEXEC); fcntl(p[1], F_SETFD, FD_CLOEXEC);
fcntl(p[1], F_SETFL, O_NONBLOCK); fcntl(p[1], F_SETFL, O_NONBLOCK);
transfer->source_fd = p[0]; transfer->wl_client_fd = p[0];
wlr_log(WLR_DEBUG, "Sending Wayland selection %u to Xwayland window with " wlr_log(WLR_DEBUG, "Sending Wayland selection %u to Xwayland window with "
"MIME type %s, target %u, transfer %p", req->target, mime_type, "MIME type %s, target %u, transfer %p", req->target, mime_type,

@ -11,19 +11,19 @@
#include "xwayland/selection.h" #include "xwayland/selection.h"
#include "xwayland/xwm.h" #include "xwayland/xwm.h"
void xwm_selection_transfer_remove_source( void xwm_selection_transfer_remove_event_source(
struct wlr_xwm_selection_transfer *transfer) { struct wlr_xwm_selection_transfer *transfer) {
if (transfer->source != NULL) { if (transfer->event_source != NULL) {
wl_event_source_remove(transfer->source); wl_event_source_remove(transfer->event_source);
transfer->source = NULL; transfer->event_source = NULL;
} }
} }
void xwm_selection_transfer_close_source_fd( void xwm_selection_transfer_close_wl_client_fd(
struct wlr_xwm_selection_transfer *transfer) { struct wlr_xwm_selection_transfer *transfer) {
if (transfer->source_fd >= 0) { if (transfer->wl_client_fd >= 0) {
close(transfer->source_fd); close(transfer->wl_client_fd);
transfer->source_fd = -1; transfer->wl_client_fd = -1;
} }
} }

Loading…
Cancel
Save