[Spice-devel] [PATCH 4/7] Add InputsChannelPrivate struct
Frediano Ziglio
fziglio at redhat.com
Wed Oct 12 10:55:26 UTC 2016
>
> Prepare for GObject port
Nacked
> ---
> server/inputs-channel.c | 68
> ++++++++++++++++++++++++++-----------------------
> 1 file changed, 36 insertions(+), 32 deletions(-)
>
> diff --git a/server/inputs-channel.c b/server/inputs-channel.c
> index 85ca155..dfb7ba6 100644
> --- a/server/inputs-channel.c
> +++ b/server/inputs-channel.c
> @@ -105,8 +105,7 @@ RedsState* spice_tablet_state_get_server(SpiceTabletState
> *st)
> return st->reds;
> }
>
> -struct InputsChannel {
> - RedChannel base;
> +typedef struct {
> uint8_t recv_buf[RECEIVE_BUF_SIZE];
> VDAgentMouseState mouse_state;
> int src_during_migrate;
> @@ -115,6 +114,11 @@ struct InputsChannel {
> SpiceKbdInstance *keyboard;
> SpiceMouseInstance *mouse;
> SpiceTabletInstance *tablet;
> +} InputsChannelPrivate;
> +
> +struct InputsChannel {
> + RedChannel base;
> + InputsChannelPrivate priv[1];
> };
>
Structure is already private.
> typedef struct RedKeyModifiersPipeItem {
> @@ -138,13 +142,13 @@ void
> inputs_channel_set_tablet_logical_size(InputsChannel *inputs, int x_res, in
> {
> SpiceTabletInterface *sif;
>
> - sif = SPICE_UPCAST(SpiceTabletInterface, inputs->tablet->base.sif);
> - sif->set_logical_size(inputs->tablet, x_res, y_res);
> + sif = SPICE_UPCAST(SpiceTabletInterface,
> inputs->priv->tablet->base.sif);
> + sif->set_logical_size(inputs->priv->tablet, x_res, y_res);
> }
>
> const VDAgentMouseState *inputs_channel_get_mouse_state(InputsChannel
> *inputs)
> {
> - return &inputs->mouse_state;
> + return &inputs->priv->mouse_state;
> }
>
> static uint8_t *inputs_channel_alloc_msg_rcv_buf(RedChannelClient *rcc,
> @@ -157,7 +161,7 @@ static uint8_t
> *inputs_channel_alloc_msg_rcv_buf(RedChannelClient *rcc,
> spice_printerr("error: too large incoming message");
> return NULL;
> }
> - return inputs_channel->recv_buf;
> + return inputs_channel->priv->recv_buf;
> }
>
> static void inputs_channel_release_msg_rcv_buf(RedChannelClient *rcc,
> @@ -183,7 +187,7 @@ static void
> inputs_channel_release_msg_rcv_buf(RedChannelClient *rcc,
>
> static void activate_modifiers_watch(InputsChannel *inputs, RedsState *reds)
> {
> - reds_core_timer_start(reds, inputs->key_modifiers_timer,
> KEY_MODIFIERS_TTL);
> + reds_core_timer_start(reds, inputs->priv->key_modifiers_timer,
> KEY_MODIFIERS_TTL);
> }
>
> static void kbd_push_scan(SpiceKbdInstance *sin, uint8_t scan)
> @@ -259,7 +263,7 @@ static void inputs_channel_send_item(RedChannelClient
> *rcc, RedPipeItem *base)
> red_channel_client_init_send_data(rcc,
> SPICE_MSG_INPUTS_MOUSE_MOTION_ACK, base);
> break;
> case RED_PIPE_ITEM_MIGRATE_DATA:
> -
> INPUTS_CHANNEL(red_channel_client_get_channel(rcc))->src_during_migrate
> = FALSE;
> +
> INPUTS_CHANNEL(red_channel_client_get_channel(rcc))->priv->src_during_migrate
> = FALSE;
> inputs_channel_client_send_migrate_data(rcc, m, base);
> break;
> default:
> @@ -333,7 +337,7 @@ static int inputs_channel_handle_parsed(RedChannelClient
> *rcc, uint32_t size, ui
> sif->position(tablet, pos->x, pos->y,
> RED_MOUSE_STATE_TO_LOCAL(pos->buttons_state));
> break;
> }
> - VDAgentMouseState *mouse_state = &inputs_channel->mouse_state;
> + VDAgentMouseState *mouse_state = &inputs_channel->priv->mouse_state;
> mouse_state->x = pos->x;
> mouse_state->y = pos->y;
> mouse_state->buttons =
> RED_MOUSE_BUTTON_STATE_TO_AGENT(pos->buttons_state);
> @@ -351,11 +355,11 @@ static int
> inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
> }
> if (reds_get_mouse_mode(reds) == SPICE_MOUSE_MODE_CLIENT) {
> if (reds_config_get_agent_mouse(reds) && reds_has_vdagent(reds))
> {
> - inputs_channel->mouse_state.buttons =
> + inputs_channel->priv->mouse_state.buttons =
> RED_MOUSE_BUTTON_STATE_TO_AGENT(mouse_press->buttons_state)
> |
> (dz == -1 ? VD_AGENT_UBUTTON_MASK : 0) |
> (dz == 1 ? VD_AGENT_DBUTTON_MASK : 0);
> - reds_handle_agent_mouse_event(reds,
> &inputs_channel->mouse_state);
> + reds_handle_agent_mouse_event(reds,
> &inputs_channel->priv->mouse_state);
> } else if (inputs_channel_get_tablet(inputs_channel)) {
> SpiceTabletInterface *sif;
> sif =
> SPICE_CONTAINEROF(inputs_channel_get_tablet(inputs_channel)->base.sif,
> SpiceTabletInterface, base);
> @@ -373,9 +377,9 @@ static int inputs_channel_handle_parsed(RedChannelClient
> *rcc, uint32_t size, ui
> SpiceMsgcMouseRelease *mouse_release = message;
> if (reds_get_mouse_mode(reds) == SPICE_MOUSE_MODE_CLIENT) {
> if (reds_config_get_agent_mouse(reds) && reds_has_vdagent(reds))
> {
> - inputs_channel->mouse_state.buttons =
> + inputs_channel->priv->mouse_state.buttons =
> RED_MOUSE_BUTTON_STATE_TO_AGENT(mouse_release->buttons_state);
> - reds_handle_agent_mouse_event(reds,
> &inputs_channel->mouse_state);
> + reds_handle_agent_mouse_event(reds,
> &inputs_channel->priv->mouse_state);
> } else if (inputs_channel_get_tablet(inputs_channel)) {
> SpiceTabletInterface *sif;
> sif =
> SPICE_CONTAINEROF(inputs_channel_get_tablet(inputs_channel)->base.sif,
> SpiceTabletInterface, base);
> @@ -512,14 +516,14 @@ static void inputs_connect(RedChannel *channel,
> RedClient *client,
> static void inputs_migrate(RedChannelClient *rcc)
> {
> InputsChannel *inputs =
> INPUTS_CHANNEL(red_channel_client_get_channel(rcc));
> - inputs->src_during_migrate = TRUE;
> + inputs->priv->src_during_migrate = TRUE;
> red_channel_client_default_migrate(rcc);
> }
>
> static void inputs_channel_push_keyboard_modifiers(InputsChannel *inputs,
> uint8_t modifiers)
> {
> if (!inputs || !red_channel_is_connected(&inputs->base) ||
> - inputs->src_during_migrate) {
> + inputs->priv->src_during_migrate) {
> return;
> }
> red_channel_pipes_new_add_push(&inputs->base,
> @@ -602,7 +606,7 @@ InputsChannel* inputs_channel_new(RedsState *reds)
> red_channel_set_cap(&inputs->base, SPICE_INPUTS_CAP_KEY_SCANCODE);
> reds_register_channel(reds, &inputs->base);
>
> - if (!(inputs->key_modifiers_timer = reds_core_timer_add(reds,
> key_modifiers_sender, inputs))) {
> + if (!(inputs->priv->key_modifiers_timer = reds_core_timer_add(reds,
> key_modifiers_sender, inputs))) {
> spice_error("key modifiers timer create failed");
> }
> return inputs;
> @@ -610,65 +614,65 @@ InputsChannel* inputs_channel_new(RedsState *reds)
>
> static SpiceKbdInstance* inputs_channel_get_keyboard(InputsChannel *inputs)
> {
> - return inputs->keyboard;
> + return inputs->priv->keyboard;
> }
>
> int inputs_channel_set_keyboard(InputsChannel *inputs, SpiceKbdInstance
> *keyboard)
> {
> - if (inputs->keyboard) {
> + if (inputs->priv->keyboard) {
> spice_printerr("already have keyboard");
> return -1;
> }
> - inputs->keyboard = keyboard;
> - inputs->keyboard->st =
> spice_kbd_state_new(red_channel_get_server(&inputs->base));
> + inputs->priv->keyboard = keyboard;
> + inputs->priv->keyboard->st =
> spice_kbd_state_new(red_channel_get_server(&inputs->base));
> return 0;
> }
>
> static SpiceMouseInstance* inputs_channel_get_mouse(InputsChannel *inputs)
> {
> - return inputs->mouse;
> + return inputs->priv->mouse;
> }
>
> int inputs_channel_set_mouse(InputsChannel *inputs, SpiceMouseInstance
> *mouse)
> {
> - if (inputs->mouse) {
> + if (inputs->priv->mouse) {
> spice_printerr("already have mouse");
> return -1;
> }
> - inputs->mouse = mouse;
> - inputs->mouse->st = spice_mouse_state_new();
> + inputs->priv->mouse = mouse;
> + inputs->priv->mouse->st = spice_mouse_state_new();
> return 0;
> }
>
> static SpiceTabletInstance* inputs_channel_get_tablet(InputsChannel *inputs)
> {
> - return inputs->tablet;
> + return inputs->priv->tablet;
> }
>
> int inputs_channel_set_tablet(InputsChannel *inputs, SpiceTabletInstance
> *tablet, RedsState *reds)
> {
> - if (inputs->tablet) {
> + if (inputs->priv->tablet) {
> spice_printerr("already have tablet");
> return -1;
> }
> - inputs->tablet = tablet;
> - inputs->tablet->st = spice_tablet_state_new();
> - inputs->tablet->st->reds = reds;
> + inputs->priv->tablet = tablet;
> + inputs->priv->tablet->st = spice_tablet_state_new();
> + inputs->priv->tablet->st->reds = reds;
> return 0;
> }
>
> int inputs_channel_has_tablet(InputsChannel *inputs)
> {
> - return inputs != NULL && inputs->tablet != NULL;
> + return inputs != NULL && inputs->priv->tablet != NULL;
> }
>
> void inputs_channel_detach_tablet(InputsChannel *inputs, SpiceTabletInstance
> *tablet)
> {
> spice_printerr("");
> - inputs->tablet = NULL;
> + inputs->priv->tablet = NULL;
> }
>
> gboolean inputs_channel_is_src_during_migrate(InputsChannel *inputs)
> {
> - return inputs->src_during_migrate;
> + return inputs->priv->src_during_migrate;
> }
Frediano
More information about the Spice-devel
mailing list