[Spice-devel] [RFC PATCH spice-common v2 02/20] A version 2 of the MousePosition message
Lukáš Hrázký
lhrazky at redhat.com
Thu Aug 23 11:59:27 UTC 2018
On Wed, 2018-08-22 at 16:11 -0500, Jonathon Jongsma wrote:
> On Thu, 2018-08-16 at 18:26 +0200, Lukáš Hrázký wrote:
> > The version 2 is using a (channel_id, monitor_id) pair to uniquely
> > identify the display on which the event occured, instead of the
> > ambiguous display_id.
> >
> > Signed-off-by: Lukáš Hrázký <lhrazky at redhat.com>
> > ---
> > common/messages.h | 8 ++++++++
> > spice.proto | 8 ++++++++
> > 2 files changed, 16 insertions(+)
> >
> > diff --git a/common/messages.h b/common/messages.h
> > index 942ba07..9b05cee 100644
> > --- a/common/messages.h
> > +++ b/common/messages.h
> > @@ -460,6 +460,14 @@ typedef struct SpiceMsgcMousePosition {
> > uint8_t display_id;
> > } SpiceMsgcMousePosition;
> >
> > +typedef struct SpiceMsgcMousePositionV2 {
> > + uint32_t x;
> > + uint32_t y;
> > + uint32_t buttons_state;
> > + uint32_t channel_id;
> > + uint32_t monitor_id;
> > +} SpiceMsgcMousePositionV2;
> > +
> > typedef struct SpiceMsgcMousePress {
> > int32_t button;
> > int32_t buttons_state;
> > diff --git a/spice.proto b/spice.proto
> > index 80976d4..14475fc 100644
> > --- a/spice.proto
> > +++ b/spice.proto
> > @@ -1092,6 +1092,14 @@ channel InputsChannel : BaseChannel {
> > uint8 display_id;
> > } @ctype(SpiceMsgcMousePosition) mouse_position;
> >
> > + message {
> > + uint32 x;
> > + uint32 y;
> > + mouse_button_mask buttons_state;
> > + uint32 channel_id;
> > + uint32 monitor_id;
> > + } @ctype(SpiceMsgcMousePositionV2) mouse_position_v2;
> > +
> > message {
> > mouse_button button;
> > mouse_button_mask buttons_state;
>
>
> This protocol change is clearly necessary if we're going to support any
> configurations other than those that we've supported in the past.
>
> One thing I just realized is that a channel id is not enough by itself
> to uniquely identify a channel. You need a channel type and a channel
> id. You could argue that I'm being pedantic and that it's obvious that
> we're talking about display channels here. And maybe you'd be right.
> But maybe it would be better to be more explicit? You could do that
> either by using the existing SpiceChannelId type (which is a pair of
> (type, id)), or by simply using a more descriptive name (e.g.
> display_channel, or display_channel_id).
Well, it's only display channels that currently have any monitors.
You're technically right, if we ever introduce another channel type
similar to a display channel that will also have monitors, we would
need this distinction. (I don't think we'll ever want to add monitors
to any of the existing channels)
I feel like it's very unlikely and am inclined not to add the type, but
yeah...
> Or if nobody else cares, we could leave it like this.
>
> Reviewed-by: Jonathon Jongsma <jjongsma at redhat.com>
More information about the Spice-devel
mailing list