On Tue, Nov 10, 2015 at 11:05:09AM +0100, Victor Toso wrote: > Hi, > > On Mon, Nov 09, 2015 at 03:02:07PM +0100, Marc-André Lureau wrote: > > Send a SpiceMsgcMainMouseModeRequest message to request a mouse mode. > > > > This allows to switch between client/absolute and server/relative mouse > > modes. > > > > This is necessary for some applications that require pointer > > re-positioning, which we can't provide through a remote protocol easily > > with client pointer (no such hardware-level message exists afaik). > > I've retested again in top of rhel7 server/qemu and upstream > server/qemu. On rhel7, the mouse pointer barely moves and it goes back > againt to its original position in top-left corner. On upstream, the > mouse pointer does not move at all. > > I did not lose my pointer this time (I could toggle back with > Shift+F12). > > All VMs has ps/2 device. The mouse pointer should keep moving, right? > Some videos: > http://people.freedesktop.org/~victortoso/videos/spice/ > > Cheers, > Victor Toso > > > > > Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > > --- > > doc/reference/spice-gtk-sections.txt | 1 + > > src/channel-main.c | 29 +++++++++++++++++++++++++++++ > > src/channel-main.h | 2 ++ > > src/map-file | 1 + > > src/spice-glib-sym-file | 1 + > > 5 files changed, 34 insertions(+) > > > > diff --git a/doc/reference/spice-gtk-sections.txt b/doc/reference/spice-gtk-sections.txt > > index d8c4c79..9628471 100644 > > --- a/doc/reference/spice-gtk-sections.txt > > +++ b/doc/reference/spice-gtk-sections.txt > > @@ -70,6 +70,7 @@ spice_main_update_display > > spice_main_update_display_enabled > > spice_main_send_monitor_config > > spice_main_agent_test_capability > > +spice_main_request_mouse_mode > > spice_main_clipboard_selection_grab > > spice_main_clipboard_selection_notify > > spice_main_clipboard_selection_release > > diff --git a/src/channel-main.c b/src/channel-main.c > > index 0eb40b9..f4213d7 100644 > > --- a/src/channel-main.c > > +++ b/src/channel-main.c > > @@ -1610,6 +1610,35 @@ static void agent_stopped(SpiceMainChannel *channel) > > set_agent_connected(channel, FALSE); > > } > > > > +/** > > + * spice_main_request_mouse_mode: > > + * @channel: a %SpiceMainChannel > > + * @mode: a SPICE_MOUSE_MODE > > + * > > + * Request a mouse mode to the server. The server may not be able to > > + * change the mouse mode, but spice-gtk will try to request it > > + * when possible. > > + * > > + * Since: 0.31 Now it is 0.32 Reviewed-by: Victor Toso <victortoso@xxxxxxxxxx> > > + **/ > > +void spice_main_request_mouse_mode(SpiceMainChannel *channel, int mode) > > +{ > > + SpiceMsgcMainMouseModeRequest req = { > > + .mode = mode, > > + }; > > + SpiceMsgOut *out; > > + > > + g_return_if_fail(SPICE_IS_MAIN_CHANNEL(channel)); > > + > > + if (spice_channel_get_read_only(SPICE_CHANNEL(channel))) > > + return; > > + > > + CHANNEL_DEBUG(channel, "request mouse mode %d", mode); > > + out = spice_msg_out_new(SPICE_CHANNEL(channel), SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST); > > + out->marshallers->msgc_main_mouse_mode_request(out->marshaller, &req); > > + spice_msg_out_send(out); > > +} > > + > > /* coroutine context */ > > static void set_mouse_mode(SpiceMainChannel *channel, uint32_t supported, uint32_t current) > > { > > diff --git a/src/channel-main.h b/src/channel-main.h > > index 6b94c25..3fe8df1 100644 > > --- a/src/channel-main.h > > +++ b/src/channel-main.h > > @@ -98,6 +98,8 @@ gboolean spice_main_file_copy_finish(SpiceMainChannel *channel, > > GAsyncResult *result, > > GError **error); > > > > +void spice_main_request_mouse_mode(SpiceMainChannel *channel, int mode); > > + > > #ifndef SPICE_DISABLE_DEPRECATED > > SPICE_DEPRECATED_FOR(spice_main_clipboard_selection_grab) > > void spice_main_clipboard_grab(SpiceMainChannel *channel, guint32 *types, int ntypes); > > diff --git a/src/map-file b/src/map-file > > index 92a9883..495a802 100644 > > --- a/src/map-file > > +++ b/src/map-file > > @@ -72,6 +72,7 @@ spice_main_clipboard_selection_release; > > spice_main_clipboard_selection_request; > > spice_main_file_copy_async; > > spice_main_file_copy_finish; > > +spice_main_request_mouse_mode; > > spice_main_send_monitor_config; > > spice_main_set_display; > > spice_main_set_display_enabled; > > diff --git a/src/spice-glib-sym-file b/src/spice-glib-sym-file > > index 3817a46..080f079 100644 > > --- a/src/spice-glib-sym-file > > +++ b/src/spice-glib-sym-file > > @@ -49,6 +49,7 @@ spice_main_clipboard_selection_release > > spice_main_clipboard_selection_request > > spice_main_file_copy_async > > spice_main_file_copy_finish > > +spice_main_request_mouse_mode > > spice_main_send_monitor_config > > spice_main_set_display > > spice_main_set_display_enabled > > -- > > 2.5.0 > > > > _______________________________________________ > > Spice-devel mailing list > > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > > http://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel