move all item creation in main-channel-client.c

Move all core to create and destroy MainChannel pipe items in a single
place.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
Frediano Ziglio 2016-05-06 10:34:52 +01:00 committed by Jonathon Jongsma
parent 02adcf354e
commit e4a6a1477e
3 changed files with 44 additions and 34 deletions

View File

@ -103,6 +103,17 @@ typedef struct RedNotifyPipeItem {
char *msg;
} RedNotifyPipeItem;
typedef struct RedMouseModePipeItem {
RedPipeItem base;
int current_mode;
int is_client_mouse_allowed;
} RedMouseModePipeItem;
typedef struct RedMultiMediaTimePipeItem {
RedPipeItem base;
int time;
} RedMultiMediaTimePipeItem;
#define ZERO_BUF_SIZE 4096
static const uint8_t zero_page[ZERO_BUF_SIZE] = {0};
@ -297,6 +308,29 @@ void main_channel_client_push_notify(MainChannelClient *mcc, const char *msg)
red_channel_client_pipe_add_push(&mcc->base, item);
}
RedPipeItem *main_mouse_mode_item_new(RedChannelClient *rcc, void *data, int num)
{
RedMouseModePipeItem *item = spice_malloc(sizeof(RedMouseModePipeItem));
MainMouseModeItemInfo *info = data;
red_pipe_item_init(&item->base, RED_PIPE_ITEM_TYPE_MAIN_MOUSE_MODE);
item->current_mode = info->current_mode;
item->is_client_mouse_allowed = info->is_client_mouse_allowed;
return &item->base;
}
RedPipeItem *main_multi_media_time_item_new(RedChannelClient *rcc,
void *data, int num)
{
MainMultiMediaTimeItemInfo *info = data;
RedMultiMediaTimePipeItem *item;
item = spice_malloc(sizeof(RedMultiMediaTimePipeItem));
red_pipe_item_init(&item->base, RED_PIPE_ITEM_TYPE_MAIN_MULTI_MEDIA_TIME);
item->time = info->time;
return &item->base;
}
void main_channel_client_handle_migrate_connected(MainChannelClient *mcc,
int success,
int seamless)

View File

@ -93,15 +93,18 @@ enum {
RED_PIPE_ITEM_TYPE_MAIN_AGENT_CONNECTED_TOKENS,
};
typedef struct RedMouseModePipeItem {
RedPipeItem base;
typedef struct MainMouseModeItemInfo {
int current_mode;
int is_client_mouse_allowed;
} RedMouseModePipeItem;
} MainMouseModeItemInfo;
typedef struct RedMultiMediaTimePipeItem {
RedPipeItem base;
RedPipeItem *main_mouse_mode_item_new(RedChannelClient *rcc, void *data, int num);
typedef struct MainMultiMediaTimeItemInfo {
int time;
} RedMultiMediaTimePipeItem;
} MainMultiMediaTimeItemInfo;
RedPipeItem *main_multi_media_time_item_new(RedChannelClient *rcc,
void *data, int num);
#endif /* __MAIN_CHANNEL_CLIENT_H__ */

View File

@ -56,33 +56,6 @@ RedClient *main_channel_get_client_by_link_id(MainChannel *main_chan, uint32_t c
return NULL;
}
typedef struct MainMouseModeItemInfo {
int current_mode;
int is_client_mouse_allowed;
} MainMouseModeItemInfo;
static RedPipeItem *main_mouse_mode_item_new(RedChannelClient *rcc, void *data, int num)
{
RedMouseModePipeItem *item = spice_malloc(sizeof(RedMouseModePipeItem));
MainMouseModeItemInfo *info = data;
red_pipe_item_init(&item->base, RED_PIPE_ITEM_TYPE_MAIN_MOUSE_MODE);
item->current_mode = info->current_mode;
item->is_client_mouse_allowed = info->is_client_mouse_allowed;
return &item->base;
}
static RedPipeItem *main_multi_media_time_item_new(RedChannelClient *rcc,
void *data, int num)
{
RedMultiMediaTimePipeItem *item, *info = data;
item = spice_malloc(sizeof(RedMultiMediaTimePipeItem));
red_pipe_item_init(&item->base, RED_PIPE_ITEM_TYPE_MAIN_MULTI_MEDIA_TIME);
item->time = info->time;
return &item->base;
}
static void main_channel_push_channels(MainChannelClient *mcc)
{
if (red_client_during_migrate_at_target((main_channel_client_get_base(mcc))->client)) {
@ -148,7 +121,7 @@ static int main_channel_handle_migrate_data(RedChannelClient *rcc,
void main_channel_push_multi_media_time(MainChannel *main_chan, int time)
{
RedMultiMediaTimePipeItem info = {
MainMultiMediaTimeItemInfo info = {
.time = time,
};