mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-01-08 12:24:55 +00:00
red-channel-client: Simplify red_channel_client_wait_pipe_item_sent loop
Avoid repeating the same code twice. red_channel_client_send sends the pending item (or a part of it). If there are no item pending, the function does nothing (so checking for blocked channel is useless). Also red_channel_client_send is already called from red_channel_client_push which has a check for blocked channels, so having calls to both red_channel_client_send() and red_channel_client_push() is redundant. The function on its overall tries to wait for a given item to be sent. The call for red_channel_client_receive is mainly needed to support the cases were to send data messages from the client should be processed (like if "handle-acks" is requested). Moving the loop iteration check inside the for loop instead allows to avoid some duplication. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
This commit is contained in:
parent
b2fa6ec66c
commit
35e9a9d435
@ -1776,18 +1776,14 @@ bool red_channel_client_wait_pipe_item_sent(RedChannelClient *rcc,
|
||||
red_pipe_item_ref(&mark_item->base);
|
||||
red_channel_client_pipe_add_after_pos(rcc, &mark_item->base, item_pos);
|
||||
|
||||
if (red_channel_client_is_blocked(rcc)) {
|
||||
for (;;) {
|
||||
red_channel_client_receive(rcc);
|
||||
red_channel_client_send(rcc);
|
||||
}
|
||||
red_channel_client_push(rcc);
|
||||
|
||||
while (mark_item->item_in_pipe &&
|
||||
(timeout == -1 || spice_get_monotonic_time_ns() < end_time)) {
|
||||
usleep(CHANNEL_BLOCKED_SLEEP_DURATION);
|
||||
red_channel_client_receive(rcc);
|
||||
red_channel_client_send(rcc);
|
||||
red_channel_client_push(rcc);
|
||||
if (!mark_item->item_in_pipe ||
|
||||
(timeout != -1 && spice_get_monotonic_time_ns() >= end_time)) {
|
||||
break;
|
||||
}
|
||||
usleep(CHANNEL_BLOCKED_SLEEP_DURATION);
|
||||
}
|
||||
|
||||
item_in_pipe = mark_item->item_in_pipe;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user