mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-08-08 16:48:06 +00:00
server/red_worker: add send_item
This commit is contained in:
parent
f7a99f858e
commit
111cf51103
@ -350,6 +350,7 @@ typedef struct LocalCursor {
|
||||
typedef struct RedChannel RedChannel;
|
||||
typedef void (*channel_disconnect_proc)(RedChannel *channel);
|
||||
typedef void (*channel_hold_pipe_item_proc)(RedChannel *channel, PipeItem *item);
|
||||
typedef void (*channel_send_pipe_item_proc)(RedChannel *channel, PipeItem *item);
|
||||
typedef void (*channel_release_pipe_item_proc)(RedChannel *channel, PipeItem *item, int item_pushed);
|
||||
typedef int (*channel_handle_parsed_proc)(RedChannel *channel, uint32_t size, uint16_t type, void *message);
|
||||
|
||||
@ -389,6 +390,9 @@ struct RedChannel {
|
||||
channel_hold_pipe_item_proc hold_item;
|
||||
channel_release_pipe_item_proc release_item;
|
||||
channel_handle_parsed_proc handle_parsed;
|
||||
channel_send_pipe_item_proc send_item;
|
||||
|
||||
int during_send;
|
||||
|
||||
#ifdef RED_STATISTICS
|
||||
struct {
|
||||
@ -8412,9 +8416,9 @@ static void display_channel_push(RedWorker *worker)
|
||||
}
|
||||
}
|
||||
|
||||
static void cursor_channel_send_item(CursorChannel *cursor_channel, PipeItem *pipe_item)
|
||||
static void cursor_channel_send_item(RedChannel *channel, PipeItem *pipe_item)
|
||||
{
|
||||
RedChannel *channel = &cursor_channel->common.base;
|
||||
CursorChannel *cursor_channel = SPICE_CONTAINEROF(channel, CursorChannel, common.base);
|
||||
|
||||
red_ref_channel(channel);
|
||||
red_channel_reset_send_data(channel);
|
||||
@ -8463,7 +8467,7 @@ static void cursor_channel_push(RedWorker *worker)
|
||||
PipeItem *pipe_item;
|
||||
|
||||
while ((pipe_item = red_channel_pipe_get((RedChannel *)worker->cursor_channel))) {
|
||||
cursor_channel_send_item(worker->cursor_channel, pipe_item);
|
||||
cursor_channel_send_item(&worker->cursor_channel->common.base, pipe_item);
|
||||
}
|
||||
}
|
||||
|
||||
@ -9355,6 +9359,7 @@ static RedChannel *__new_channel(RedWorker *worker, int size, uint32_t channel_i
|
||||
RedsStream *stream, int migrate,
|
||||
event_listener_action_proc handler,
|
||||
channel_disconnect_proc disconnect,
|
||||
channel_send_pipe_item_proc send_item,
|
||||
channel_hold_pipe_item_proc hold_item,
|
||||
channel_release_pipe_item_proc release_item,
|
||||
channel_handle_parsed_proc handle_parsed)
|
||||
@ -9390,6 +9395,7 @@ static RedChannel *__new_channel(RedWorker *worker, int size, uint32_t channel_i
|
||||
common->listener.action = handler;
|
||||
common->listener.free = free_common_channel_from_listener;
|
||||
channel->disconnect = disconnect;
|
||||
channel->send_item = send_item;
|
||||
channel->hold_item = hold_item;
|
||||
channel->release_item = release_item;
|
||||
channel->handle_parsed = handle_parsed;
|
||||
@ -9496,6 +9502,7 @@ static void handle_new_display_channel(RedWorker *worker, RedsStream *stream, in
|
||||
SPICE_CHANNEL_DISPLAY, stream,
|
||||
migrate, handle_channel_events,
|
||||
red_disconnect_display,
|
||||
display_channel_send_item,
|
||||
display_channel_hold_pipe_item,
|
||||
display_channel_release_item,
|
||||
display_channel_handle_message))) {
|
||||
@ -9622,6 +9629,7 @@ static void red_connect_cursor(RedWorker *worker, RedsStream *stream, int migrat
|
||||
SPICE_CHANNEL_CURSOR, stream, migrate,
|
||||
handle_channel_events,
|
||||
red_disconnect_cursor,
|
||||
cursor_channel_send_item,
|
||||
cursor_channel_hold_pipe_item,
|
||||
cursor_channel_release_item,
|
||||
red_channel_handle_message))) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user