----- Original Message ----- > Signed-off-by: Matthew Francis <mjay.francis@xxxxxxxxx> Reviewed-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > --- > doc/reference/spice-gtk-sections.txt | 8 ++ > src/channel-inputs.c | 146 > ++++++++++++++++++++++++++++++++++- > src/channel-inputs.h | 34 ++++++-- > src/map-file | 8 ++ > src/spice-glib-sym-file | 8 ++ > src/spice-gtk-session.c | 2 +- > src/spice-widget.c | 44 +++++------ > 7 files changed, 217 insertions(+), 33 deletions(-) > > diff --git a/doc/reference/spice-gtk-sections.txt > b/doc/reference/spice-gtk-sections.txt > index 538e07c..0f5ec10 100644 > --- a/doc/reference/spice-gtk-sections.txt > +++ b/doc/reference/spice-gtk-sections.txt > @@ -237,13 +237,21 @@ SpiceInputsChannelClass > SpiceInputsLock > <SUBSECTION> > spice_inputs_motion > +spice_inputs_channel_motion > spice_inputs_position > +spice_inputs_channel_position > spice_inputs_button_press > +spice_inputs_channel_button_press > spice_inputs_button_release > +spice_inputs_channel_button_release > spice_inputs_key_press > +spice_inputs_channel_key_press > spice_inputs_key_press_and_release > +spice_inputs_channel_key_press_and_release > spice_inputs_key_release > +spice_inputs_channel_key_release > spice_inputs_set_key_locks > +spice_inputs_channel_set_key_locks > <SUBSECTION Standard> > SPICE_TYPE_INPUTS_LOCK > spice_inputs_lock_get_type > diff --git a/src/channel-inputs.c b/src/channel-inputs.c > index 7572bff..75bf1ff 100644 > --- a/src/channel-inputs.c > +++ b/src/channel-inputs.c > @@ -284,10 +284,29 @@ static void channel_set_handlers(SpiceChannelClass > *klass) > * @button_state: SPICE_MOUSE_BUTTON_MASK flags > * > * Change mouse position (used in SPICE_MOUSE_MODE_CLIENT). > + * > + * Deprecated: 0.35: use spice_inputs_channel_motion() instead. > **/ > void spice_inputs_motion(SpiceInputsChannel *channel, gint dx, gint dy, > gint button_state) > { > + spice_inputs_channel_motion(channel, dx, dy, button_state); > +} > + > +/** > + * spice_inputs_channel_motion: > + * @channel: a #SpiceInputsChannel > + * @dx: delta X mouse coordinates > + * @dy: delta Y mouse coordinates > + * @button_state: SPICE_MOUSE_BUTTON_MASK flags > + * > + * Change mouse position (used in SPICE_MOUSE_MODE_CLIENT). > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_motion(SpiceInputsChannel *channel, gint dx, gint > dy, > + gint button_state) > +{ > SpiceInputsChannelPrivate *c; > > g_return_if_fail(channel != NULL); > @@ -317,10 +336,30 @@ void spice_inputs_motion(SpiceInputsChannel *channel, > gint dx, gint dy, > * @button_state: SPICE_MOUSE_BUTTON_MASK flags > * > * Change mouse position (used in SPICE_MOUSE_MODE_CLIENT). > + * > + * Deprecated: 0.35: use spice_inputs_channel_position() instead. > **/ > void spice_inputs_position(SpiceInputsChannel *channel, gint x, gint y, > gint display, gint button_state) > { > + spice_inputs_channel_position(channel, x, y, display, button_state); > +} > + > +/** > + * spice_inputs_channel_position: > + * @channel: a #SpiceInputsChannel > + * @x: X mouse coordinates > + * @y: Y mouse coordinates > + * @display: display channel id > + * @button_state: SPICE_MOUSE_BUTTON_MASK flags > + * > + * Change mouse position (used in SPICE_MOUSE_MODE_CLIENT). > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_position(SpiceInputsChannel *channel, gint x, gint > y, > + gint display, gint button_state) > +{ > SpiceInputsChannelPrivate *c; > > g_return_if_fail(channel != NULL); > @@ -348,10 +387,28 @@ void spice_inputs_position(SpiceInputsChannel *channel, > gint x, gint y, > * @button_state: SPICE_MOUSE_BUTTON_MASK flags > * > * Press a mouse button. > + * > + * Deprecated: 0.35: use spice_inputs_channel_button_press() instead. > **/ > void spice_inputs_button_press(SpiceInputsChannel *channel, gint button, > gint button_state) > { > + spice_inputs_channel_button_press(channel, button, button_state); > +} > + > +/** > + * spice_inputs_channel_button_press: > + * @channel: a #SpiceInputsChannel > + * @button: a SPICE_MOUSE_BUTTON > + * @button_state: SPICE_MOUSE_BUTTON_MASK flags > + * > + * Press a mouse button. > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_button_press(SpiceInputsChannel *channel, gint > button, > + gint button_state) > +{ > SpiceInputsChannelPrivate *c; > SpiceMsgcMousePress press; > SpiceMsgOut *msg; > @@ -395,10 +452,28 @@ void spice_inputs_button_press(SpiceInputsChannel > *channel, gint button, > * @button_state: SPICE_MOUSE_BUTTON_MASK flags > * > * Release a button. > + * > + * Deprecated: 0.35: use spice_inputs_channel_button_release() instead. > **/ > void spice_inputs_button_release(SpiceInputsChannel *channel, gint button, > gint button_state) > { > + spice_inputs_channel_button_release(channel, button, button_state); > +} > + > +/** > + * spice_inputs_channel_button_release: > + * @channel: a #SpiceInputsChannel > + * @button: a SPICE_MOUSE_BUTTON > + * @button_state: SPICE_MOUSE_BUTTON_MASK flags > + * > + * Release a button. > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_button_release(SpiceInputsChannel *channel, gint > button, > + gint button_state) > +{ > SpiceInputsChannelPrivate *c; > SpiceMsgcMouseRelease release; > SpiceMsgOut *msg; > @@ -442,9 +517,26 @@ void spice_inputs_button_release(SpiceInputsChannel > *channel, gint button, > * prefix, drop the prefix and OR the scancode with %0x100. > * > * Press a key. > + * > + * Deprecated: 0.35: use spice_inputs_channel_key_press() instead. > **/ > void spice_inputs_key_press(SpiceInputsChannel *channel, guint scancode) > { > + spice_inputs_channel_key_press(channel, scancode); > +} > + > +/** > + * spice_inputs_channel_key_press: > + * @channel: a #SpiceInputsChannel > + * @scancode: a PC XT (set 1) key scancode. For scancodes with an %0xe0 > + * prefix, drop the prefix and OR the scancode with %0x100. > + * > + * Press a key. > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_key_press(SpiceInputsChannel *channel, guint > scancode) > +{ > SpiceMsgcKeyDown down; > SpiceMsgOut *msg; > > @@ -468,9 +560,26 @@ void spice_inputs_key_press(SpiceInputsChannel *channel, > guint scancode) > * prefix, drop the prefix and OR the scancode with %0x100. > * > * Release a key. > + * > + * Deprecated: 0.35: use spice_inputs_channel_key_release() instead. > **/ > void spice_inputs_key_release(SpiceInputsChannel *channel, guint scancode) > { > + spice_inputs_channel_key_release(channel, scancode); > +} > + > +/** > + * spice_inputs_channel_key_release: > + * @channel: a #SpiceInputsChannel > + * @scancode: a PC XT (set 1) key scancode. For scancodes with an %0xe0 > + * prefix, drop the prefix and OR the scancode with %0x100. > + * > + * Release a key. > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_key_release(SpiceInputsChannel *channel, guint > scancode) > +{ > SpiceMsgcKeyUp up; > SpiceMsgOut *msg; > > @@ -496,9 +605,26 @@ void spice_inputs_key_release(SpiceInputsChannel > *channel, guint scancode) > * Press and release a key event atomically (in the same message). > * > * Since: 0.13 > + * > + * Deprecated: 0.35 > **/ > void spice_inputs_key_press_and_release(SpiceInputsChannel *input_channel, > guint scancode) > { > + spice_inputs_channel_key_press_and_release(input_channel, scancode); > +} > + > +/** > + * spice_inputs_channel_key_press_and_release: > + * @channel: a #SpiceInputsChannel > + * @scancode: a PC XT (set 1) key scancode. For scancodes with an %0xe0 > + * prefix, drop the prefix and OR the scancode with %0x100. > + * > + * Press and release a key event atomically (in the same message). > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_key_press_and_release(SpiceInputsChannel > *input_channel, guint scancode) > +{ > SpiceChannel *channel = SPICE_CHANNEL(input_channel); > > g_return_if_fail(channel != NULL); > @@ -531,8 +657,8 @@ void > spice_inputs_key_press_and_release(SpiceInputsChannel *input_channel, guint > spice_msg_out_send(msg); > } else { > CHANNEL_DEBUG(channel, "The server doesn't support atomic press and > release"); > - spice_inputs_key_press(input_channel, scancode); > - spice_inputs_key_release(input_channel, scancode); > + spice_inputs_channel_key_press(input_channel, scancode); > + spice_inputs_channel_key_release(input_channel, scancode); > } > } > > @@ -566,9 +692,25 @@ static SpiceMsgOut* set_key_locks(SpiceInputsChannel > *channel, guint locks) > * @locks: #SpiceInputsLock modifiers flags > * > * Set the keyboard locks on the guest (Caps, Num, Scroll..) > + * > + * Deprecated: 0.35: use spice_inputs_channel_set_key_locks() instead. > **/ > void spice_inputs_set_key_locks(SpiceInputsChannel *channel, guint locks) > { > + spice_inputs_channel_set_key_locks(channel, locks); > +} > + > +/** > + * spice_inputs_channel_set_key_locks: > + * @channel: a #SpiceInputsChannel > + * @locks: #SpiceInputsLock modifiers flags > + * > + * Set the keyboard locks on the guest (Caps, Num, Scroll..) > + * > + * Since: 0.35 > + **/ > +void spice_inputs_channel_set_key_locks(SpiceInputsChannel *channel, guint > locks) > +{ > SpiceMsgOut *msg; > > if (spice_channel_get_read_only(SPICE_CHANNEL(channel))) > diff --git a/src/channel-inputs.h b/src/channel-inputs.h > index 5123c47..fa78235 100644 > --- a/src/channel-inputs.h > +++ b/src/channel-inputs.h > @@ -83,18 +83,36 @@ struct _SpiceInputsChannelClass { > > GType spice_inputs_channel_get_type(void); > > -void spice_inputs_motion(SpiceInputsChannel *channel, gint dx, gint dy, > - gint button_state); > -void spice_inputs_position(SpiceInputsChannel *channel, gint x, gint y, > - gint display, gint button_state); > -void spice_inputs_button_press(SpiceInputsChannel *channel, gint button, > - gint button_state); > -void spice_inputs_button_release(SpiceInputsChannel *channel, gint button, > - gint button_state); > +void spice_inputs_channel_motion(SpiceInputsChannel *channel, gint dx, gint > dy, gint button_state); > +void spice_inputs_channel_position(SpiceInputsChannel *channel, gint x, gint > y, gint display, > + gint button_state); > +void spice_inputs_channel_button_press(SpiceInputsChannel *channel, gint > button, gint button_state); > +void spice_inputs_channel_button_release(SpiceInputsChannel *channel, gint > button, > + gint button_state); > +void spice_inputs_channel_key_press(SpiceInputsChannel *channel, guint > scancode); > +void spice_inputs_channel_key_release(SpiceInputsChannel *channel, guint > scancode); > +void spice_inputs_channel_set_key_locks(SpiceInputsChannel *channel, guint > locks); > +void spice_inputs_channel_key_press_and_release(SpiceInputsChannel *channel, > guint scancode); > + > +#ifndef SPICE_DISABLE_DEPRECATED > +G_DEPRECATED_FOR(spice_inputs_channel_motion) > +void spice_inputs_motion(SpiceInputsChannel *channel, gint dx, gint dy, gint > button_state); > +G_DEPRECATED_FOR(spice_inputs_channel_position) > +void spice_inputs_position(SpiceInputsChannel *channel, gint x, gint y, gint > display, > + gint button_state); > +G_DEPRECATED_FOR(spice_inputs_channel_button_press) > +void spice_inputs_button_press(SpiceInputsChannel *channel, gint button, > gint button_state); > +G_DEPRECATED_FOR(spice_inputs_channel_button_release) > +void spice_inputs_button_release(SpiceInputsChannel *channel, gint button, > gint button_state); > +G_DEPRECATED_FOR(spice_inputs_channel_key_press) > void spice_inputs_key_press(SpiceInputsChannel *channel, guint scancode); > +G_DEPRECATED_FOR(spice_inputs_channel_key_release) > void spice_inputs_key_release(SpiceInputsChannel *channel, guint scancode); > +G_DEPRECATED_FOR(spice_inputs_channel_set_key_locks) > void spice_inputs_set_key_locks(SpiceInputsChannel *channel, guint locks); > +G_DEPRECATED_FOR(spice_inputs_channel_key_press_and_release) > void spice_inputs_key_press_and_release(SpiceInputsChannel *channel, guint > scancode); > +#endif > > G_END_DECLS > > diff --git a/src/map-file b/src/map-file > index 23bcaa5..14e8ac6 100644 > --- a/src/map-file > +++ b/src/map-file > @@ -63,7 +63,15 @@ spice_gtk_session_get_type; > spice_gtk_session_paste_from_guest; > spice_inputs_button_press; > spice_inputs_button_release; > +spice_inputs_channel_button_press; > +spice_inputs_channel_button_release; > spice_inputs_channel_get_type; > +spice_inputs_channel_key_press; > +spice_inputs_channel_key_press_and_release; > +spice_inputs_channel_key_release; > +spice_inputs_channel_motion; > +spice_inputs_channel_position; > +spice_inputs_channel_set_key_locks; > spice_inputs_key_press; > spice_inputs_key_press_and_release; > spice_inputs_key_release; > diff --git a/src/spice-glib-sym-file b/src/spice-glib-sym-file > index 10cc245..38e87e0 100644 > --- a/src/spice-glib-sym-file > +++ b/src/spice-glib-sym-file > @@ -42,7 +42,15 @@ spice_gl_scanout_get_type > spice_g_signal_connect_object > spice_inputs_button_press > spice_inputs_button_release > +spice_inputs_channel_button_press > +spice_inputs_channel_button_release > spice_inputs_channel_get_type > +spice_inputs_channel_key_press > +spice_inputs_channel_key_press_and_release > +spice_inputs_channel_key_release > +spice_inputs_channel_motion > +spice_inputs_channel_position > +spice_inputs_channel_set_key_locks > spice_inputs_key_press > spice_inputs_key_press_and_release > spice_inputs_key_release > diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c > index e338ce6..6a53bf5 100644 > --- a/src/spice-gtk-session.c > +++ b/src/spice-gtk-session.c > @@ -201,7 +201,7 @@ static void > spice_gtk_session_sync_keyboard_modifiers_for_channel(SpiceGtkSessio > if (force || client_modifiers != guest_modifiers) { > CHANNEL_DEBUG(inputs, "client_modifiers:0x%x, guest_modifiers:0x%x", > client_modifiers, guest_modifiers); > - spice_inputs_set_key_locks(inputs, client_modifiers); > + spice_inputs_channel_set_key_locks(inputs, client_modifiers); > } > } > > diff --git a/src/spice-widget.c b/src/spice-widget.c > index 714ca88..22d25c9 100644 > --- a/src/spice-widget.c > +++ b/src/spice-widget.c > @@ -1381,7 +1381,7 @@ static void key_press_and_release(SpiceDisplay > *display) > if (d->key_delayed_scancode == 0) > return; > > - spice_inputs_key_press_and_release(d->inputs, d->key_delayed_scancode); > + spice_inputs_channel_key_press_and_release(d->inputs, > d->key_delayed_scancode); > d->key_delayed_scancode = 0; > > if (d->key_delayed_id) { > @@ -1398,7 +1398,7 @@ static gboolean key_press_delayed(gpointer data) > if (d->key_delayed_scancode == 0) > return FALSE; > > - spice_inputs_key_press(d->inputs, d->key_delayed_scancode); > + spice_inputs_channel_key_press(d->inputs, d->key_delayed_scancode); > d->key_delayed_scancode = 0; > > if (d->key_delayed_id) { > @@ -1419,11 +1419,11 @@ static bool send_pause(SpiceDisplay *display, > GdkEventType type) > * 0x45 is the NumLock. > */ > if (type == GDK_KEY_PRESS) { > - spice_inputs_key_press(inputs, 0x21d); > - spice_inputs_key_press(inputs, 0x45); > + spice_inputs_channel_key_press(inputs, 0x21d); > + spice_inputs_channel_key_press(inputs, 0x45); > } else { > - spice_inputs_key_release(inputs, 0x21d); > - spice_inputs_key_release(inputs, 0x45); > + spice_inputs_channel_key_release(inputs, 0x21d); > + spice_inputs_channel_key_release(inputs, 0x45); > } > return true; > } > @@ -1458,7 +1458,7 @@ static void send_key(SpiceDisplay *display, int > scancode, SendKeyType type, gboo > d->key_delayed_id = g_timeout_add(d->keypress_delay, > key_press_delayed, display); > d->key_delayed_scancode = scancode; > } else > - spice_inputs_key_press(d->inputs, scancode); > + spice_inputs_channel_key_press(d->inputs, scancode); > > d->key_state[i] |= m; > break; > @@ -1472,7 +1472,7 @@ static void send_key(SpiceDisplay *display, int > scancode, SendKeyType type, gboo > else { > /* ensure delayed key is pressed before other key are released > */ > key_press_delayed(display); > - spice_inputs_key_release(d->inputs, scancode); > + spice_inputs_channel_key_release(d->inputs, scancode); > } > > d->key_state[i] &= ~m; > @@ -1989,8 +1989,8 @@ static gboolean motion_event(GtkWidget *widget, > GdkEventMotion *motion) > case SPICE_MOUSE_MODE_CLIENT: > if (x >= 0 && x < d->area.width && > y >= 0 && y < d->area.height) { > - spice_inputs_position(d->inputs, x, y, get_display_id(display), > - button_mask_gdk_to_spice(motion->state)); > + spice_inputs_channel_position(d->inputs, x, y, > get_display_id(display), > + > button_mask_gdk_to_spice(motion->state)); > } > break; > case SPICE_MOUSE_MODE_SERVER: > @@ -1998,8 +1998,8 @@ static gboolean motion_event(GtkWidget *widget, > GdkEventMotion *motion) > gint dx = d->mouse_last_x != -1 ? x - d->mouse_last_x : 0; > gint dy = d->mouse_last_y != -1 ? y - d->mouse_last_y : 0; > > - spice_inputs_motion(d->inputs, dx, dy, > - button_mask_gdk_to_spice(motion->state)); > + spice_inputs_channel_motion(d->inputs, dx, dy, > + > button_mask_gdk_to_spice(motion->state)); > > d->mouse_last_x = x; > d->mouse_last_y = y; > @@ -2036,10 +2036,10 @@ static gboolean scroll_event(GtkWidget *widget, > GdkEventScroll *scroll) > return true; > } > > - spice_inputs_button_press(d->inputs, button, > - button_mask_gdk_to_spice(scroll->state)); > - spice_inputs_button_release(d->inputs, button, > - button_mask_gdk_to_spice(scroll->state)); > + spice_inputs_channel_button_press(d->inputs, button, > + > button_mask_gdk_to_spice(scroll->state)); > + spice_inputs_channel_button_release(d->inputs, button, > + > button_mask_gdk_to_spice(scroll->state)); > return true; > } > > @@ -2091,14 +2091,14 @@ static gboolean button_event(GtkWidget *widget, > GdkEventButton *button) > > switch (button->type) { > case GDK_BUTTON_PRESS: > - spice_inputs_button_press(d->inputs, > - button_gdk_to_spice(button->button), > - button_mask_gdk_to_spice(button->state)); > + spice_inputs_channel_button_press(d->inputs, > + > button_gdk_to_spice(button->button), > + > button_mask_gdk_to_spice(button->state)); > break; > case GDK_BUTTON_RELEASE: > - spice_inputs_button_release(d->inputs, > - button_gdk_to_spice(button->button), > - > button_mask_gdk_to_spice(button->state)); > + spice_inputs_channel_button_release(d->inputs, > + > button_gdk_to_spice(button->button), > + > button_mask_gdk_to_spice(button->state)); > break; > default: > break; > -- > 2.7.4 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel