[Spice-devel] [PATCH 16/23] use a default release_item implementation in RedChannel
Frediano Ziglio
fziglio at redhat.com
Mon May 16 13:31:26 UTC 2016
Avoid having to provide a lot of empty implementations
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/cursor-channel.c | 6 ------
server/display-channel.c | 6 ------
server/inputs-channel.c | 7 -------
server/red-channel.c | 10 +++++++++-
server/smartcard.c | 7 -------
server/spicevmc.c | 8 --------
6 files changed, 9 insertions(+), 35 deletions(-)
diff --git a/server/cursor-channel.c b/server/cursor-channel.c
index b0fd95f..c0b2fda 100644
--- a/server/cursor-channel.c
+++ b/server/cursor-channel.c
@@ -359,11 +359,6 @@ static void cursor_channel_hold_pipe_item(RedChannelClient *rcc, RedPipeItem *it
cursor_pipe_item_ref(cursor_pipe_item);
}
-static void cursor_channel_release_item(RedChannelClient *rcc, RedPipeItem *item, int item_pushed)
-{
- red_pipe_item_unref(item);
-}
-
CursorChannel* cursor_channel_new(RedWorker *worker)
{
CursorChannel *cursor_channel;
@@ -372,7 +367,6 @@ CursorChannel* cursor_channel_new(RedWorker *worker)
.on_disconnect = cursor_channel_client_on_disconnect,
.send_item = cursor_channel_send_item,
.hold_item = cursor_channel_hold_pipe_item,
- .release_item = cursor_channel_release_item
};
spice_info("create cursor channel");
diff --git a/server/display-channel.c b/server/display-channel.c
index b559a4e..5ef7920 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -1979,11 +1979,6 @@ static void hold_item(RedChannelClient *rcc, RedPipeItem *item)
}
}
-static void release_item(RedChannelClient *rcc, RedPipeItem *item, int item_pushed)
-{
- red_pipe_item_unref(item);
-}
-
static int handle_migrate_flush_mark(RedChannelClient *rcc)
{
DisplayChannel *display_channel = SPICE_CONTAINEROF(rcc->channel, DisplayChannel, common.base);
@@ -2025,7 +2020,6 @@ DisplayChannel* display_channel_new(SpiceServer *reds, RedWorker *worker,
.on_disconnect = on_disconnect,
.send_item = send_item,
.hold_item = hold_item,
- .release_item = release_item,
.handle_migrate_flush_mark = handle_migrate_flush_mark,
.handle_migrate_data = handle_migrate_data,
.handle_migrate_data_get_serial = handle_migrate_data_get_serial
diff --git a/server/inputs-channel.c b/server/inputs-channel.c
index 0ce12de..a3c9fb2 100644
--- a/server/inputs-channel.c
+++ b/server/inputs-channel.c
@@ -254,12 +254,6 @@ static void inputs_channel_send_migrate_data(RedChannelClient *rcc,
spice_marshaller_add_uint16(m, icc->motion_count);
}
-static void inputs_channel_release_pipe_item(RedChannelClient *rcc,
- RedPipeItem *base, int item_pushed)
-{
- free(base);
-}
-
static void inputs_channel_send_item(RedChannelClient *rcc, RedPipeItem *base)
{
SpiceMarshaller *m = red_channel_client_get_marshaller(rcc);
@@ -627,7 +621,6 @@ InputsChannel* inputs_channel_new(RedsState *reds)
channel_cbs.on_disconnect = inputs_channel_on_disconnect;
channel_cbs.send_item = inputs_channel_send_item;
channel_cbs.hold_item = inputs_channel_hold_pipe_item;
- channel_cbs.release_item = inputs_channel_release_pipe_item;
channel_cbs.alloc_recv_buf = inputs_channel_alloc_msg_rcv_buf;
channel_cbs.release_recv_buf = inputs_channel_release_msg_rcv_buf;
channel_cbs.handle_migrate_data = inputs_channel_handle_migrate_data;
diff --git a/server/red-channel.c b/server/red-channel.c
index a99c6c6..0d35fc0 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -1016,6 +1016,11 @@ void red_channel_client_default_migrate(RedChannelClient *rcc)
red_channel_client_pipe_add_type(rcc, RED_PIPE_ITEM_TYPE_MIGRATE);
}
+static void red_channel_release_item(RedChannelClient *rcc, RedPipeItem *item, int item_pushed)
+{
+ red_pipe_item_unref(item);
+}
+
RedChannel *red_channel_create(int size,
RedsState *reds,
const SpiceCoreInterfaceInternal *core,
@@ -1030,7 +1035,7 @@ RedChannel *red_channel_create(int size,
spice_assert(size >= sizeof(*channel));
spice_assert(channel_cbs->config_socket && channel_cbs->on_disconnect && handle_message &&
- channel_cbs->alloc_recv_buf && channel_cbs->release_item);
+ channel_cbs->alloc_recv_buf);
spice_assert(channel_cbs->handle_migrate_data ||
!(migration_flags & SPICE_MIGRATE_NEED_DATA_TRANSFER));
channel = spice_malloc0(size);
@@ -1040,6 +1045,9 @@ RedChannel *red_channel_create(int size,
channel->handle_acks = handle_acks;
channel->migration_flags = migration_flags;
memcpy(&channel->channel_cbs, channel_cbs, sizeof(ChannelCbs));
+ if (!channel->channel_cbs.release_item) {
+ channel->channel_cbs.release_item = red_channel_release_item;
+ }
channel->reds = reds;
channel->core = core;
diff --git a/server/smartcard.c b/server/smartcard.c
index c8e9eb0..a75f01c 100644
--- a/server/smartcard.c
+++ b/server/smartcard.c
@@ -504,12 +504,6 @@ static void smartcard_channel_send_item(RedChannelClient *rcc, RedPipeItem *item
red_channel_client_begin_send_message(rcc);
}
-static void smartcard_channel_release_pipe_item(RedChannelClient *rcc,
- RedPipeItem *item, int item_pushed)
-{
- red_pipe_item_unref(item);
-}
-
static void smartcard_channel_on_disconnect(RedChannelClient *rcc)
{
SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
@@ -792,7 +786,6 @@ static void smartcard_init(RedsState *reds)
channel_cbs.on_disconnect = smartcard_channel_on_disconnect;
channel_cbs.send_item = smartcard_channel_send_item;
channel_cbs.hold_item = smartcard_channel_hold_pipe_item;
- channel_cbs.release_item = smartcard_channel_release_pipe_item;
channel_cbs.alloc_recv_buf = smartcard_channel_alloc_msg_rcv_buf;
channel_cbs.release_recv_buf = smartcard_channel_release_msg_rcv_buf;
channel_cbs.handle_migrate_flush_mark = smartcard_channel_client_handle_migrate_flush_mark;
diff --git a/server/spicevmc.c b/server/spicevmc.c
index 5724023..1e9406e 100644
--- a/server/spicevmc.c
+++ b/server/spicevmc.c
@@ -437,13 +437,6 @@ static void spicevmc_red_channel_send_item(RedChannelClient *rcc,
red_channel_client_begin_send_message(rcc);
}
-static void spicevmc_red_channel_release_pipe_item(RedChannelClient *rcc,
- RedPipeItem *item,
- int item_pushed)
-{
- red_pipe_item_unref(item);
-}
-
static void spicevmc_connect(RedChannel *channel, RedClient *client,
RedsStream *stream, int migration, int num_common_caps,
uint32_t *common_caps, int num_caps, uint32_t *caps)
@@ -505,7 +498,6 @@ RedCharDevice *spicevmc_device_connect(RedsState *reds,
channel_cbs.on_disconnect = spicevmc_red_channel_client_on_disconnect;
channel_cbs.send_item = spicevmc_red_channel_send_item;
channel_cbs.hold_item = spicevmc_red_channel_hold_pipe_item;
- channel_cbs.release_item = spicevmc_red_channel_release_pipe_item;
channel_cbs.alloc_recv_buf = spicevmc_red_channel_alloc_msg_rcv_buf;
channel_cbs.release_recv_buf = spicevmc_red_channel_release_msg_rcv_buf;
channel_cbs.handle_migrate_flush_mark = spicevmc_channel_client_handle_migrate_flush_mark;
--
2.7.4
More information about the Spice-devel
mailing list