diff options
| -rw-r--r-- | xwayland/selection/outgoing.c | 33 | 
1 files changed, 3 insertions, 30 deletions
| diff --git a/xwayland/selection/outgoing.c b/xwayland/selection/outgoing.c index 787298d4..7c5c5f40 100644 --- a/xwayland/selection/outgoing.c +++ b/xwayland/selection/outgoing.c @@ -55,30 +55,11 @@ static int xwm_selection_flush_source_data(  static void xwm_selection_transfer_start_outgoing(  		struct wlr_xwm_selection_transfer *transfer); -static struct wlr_xwm_selection_transfer *xwm_selection_transfer_get_first( -		struct wlr_xwm_selection *selection) { -	struct wlr_xwm_selection_transfer *first = NULL; -	if (!wl_list_empty(&selection->outgoing)) { -		first = wl_container_of(selection->outgoing.prev, first, link); -	} - -	return first; -} -  void xwm_selection_transfer_destroy_outgoing(  		struct wlr_xwm_selection_transfer *transfer) { -	struct wlr_xwm_selection *selection = transfer->selection; -	bool was_first = transfer == xwm_selection_transfer_get_first(selection);  	wl_list_remove(&transfer->link);  	wlr_log(WLR_DEBUG, "Destroying transfer %p", transfer); -	// Start next queued transfer if we just removed the active one. -	if (was_first && !wl_list_empty(&selection->outgoing)) { -		wlr_log(WLR_DEBUG, "Destroyed transfer was active, starting next"); -		xwm_selection_transfer_start_outgoing( -			xwm_selection_transfer_get_first(selection)); -	} -  	xwm_selection_transfer_remove_event_source(transfer);  	xwm_selection_transfer_close_wl_client_fd(transfer);  	wl_array_release(&transfer->source_data); @@ -232,7 +213,6 @@ static void xwm_selection_transfer_start_outgoing(  	struct wl_event_loop *loop =  		wl_display_get_event_loop(xwm->xwayland->wl_display);  	wlr_log(WLR_DEBUG, "Starting transfer %p", transfer); -	assert(transfer == xwm_selection_transfer_get_first(transfer->selection));  	transfer->event_source = wl_event_loop_add_fd(loop, transfer->wl_client_fd,  		WL_EVENT_READABLE, xwm_data_source_read, transfer);  } @@ -328,21 +308,14 @@ static bool xwm_selection_send_data(struct wlr_xwm_selection *selection,  			wlr_log(WLR_DEBUG, "Destroying stale transfer %p", outgoing);  			xwm_selection_send_notify(selection->xwm, &outgoing->request, false);  			xwm_selection_transfer_destroy_outgoing(outgoing); +		} else { +			wlr_log(WLR_DEBUG, "Transfer %p still running", outgoing);  		}  	}  	wl_list_insert(&selection->outgoing, &transfer->link); -	// We can only handle one transfer at a time -	if (wl_list_length(&selection->outgoing) == 1) { -		wlr_log(WLR_DEBUG, "No transfer active, starting %p now", transfer); -		xwm_selection_transfer_start_outgoing(transfer); -	} else { -		struct wlr_xwm_selection_transfer *outgoing; -		wl_list_for_each(outgoing, &selection->outgoing, link) { -			wlr_log(WLR_DEBUG, "Transfer %p still queued", outgoing); -		} -	} +	xwm_selection_transfer_start_outgoing(transfer);  	return true;  } | 
