[Spice-devel] [PATCH qxl-wddm-dod 3/3] Remap the pointer in case of rotated screen

Marek Kedzierski mkedzier at redhat.com
Mon Mar 2 14:38:14 UTC 2020


ack

----- Original Message -----
> From: "Yuri Benditovich" <yuri.benditovich at daynix.com>
> To: spice-devel at lists.freedesktop.org
> Cc: yan at daynix.com
> Sent: Thursday, February 27, 2020 11:02:55 AM
> Subject: [Spice-devel] [PATCH qxl-wddm-dod 3/3] Remap the pointer in case of rotated screen
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1791804
> The remapping will work only when the driver controls
> the placement of drawn pointer, i.e. when the input
> device in VM is usb-mouse and the Spice Agent is not
> active.
> 
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> ---
>  qxldod/QxlDod.cpp | 26 +++++++++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)
> 
> diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp
> index 6e97360..7f03ee1 100755
> --- a/qxldod/QxlDod.cpp
> +++ b/qxldod/QxlDod.cpp
> @@ -557,7 +557,31 @@ NTSTATUS QxlDod::SetPointerPosition(_In_ CONST
> DXGKARG_SETPOINTERPOSITION* pSetP
>  
>      QXL_ASSERT(pSetPointerPosition != NULL);
>      QXL_ASSERT(pSetPointerPosition->VidPnSourceId < MAX_VIEWS);
> -
> +    DXGKARG_SETPOINTERPOSITION adjusted;
> +    if (m_CurrentModes[pSetPointerPosition->VidPnSourceId].Rotation ==
> D3DKMDT_VPPR_ROTATE90)
> +    {
> +        adjusted = *pSetPointerPosition;
> +        adjusted.Y =
> m_CurrentModes[pSetPointerPosition->VidPnSourceId].SrcModeHeight -
> pSetPointerPosition->X;
> +        adjusted.X = pSetPointerPosition->Y;
> +        DbgPrint(TRACE_LEVEL_INFORMATION, ("%s: src %d,%d -> %d,%d\n",
> __FUNCTION__,
> +            pSetPointerPosition->X, pSetPointerPosition->Y,
> +            adjusted.X, adjusted.Y));
> +        pSetPointerPosition = &adjusted;
> +    }
> +    else if (m_CurrentModes[pSetPointerPosition->VidPnSourceId].Rotation ==
> D3DKMDT_VPPR_ROTATE180)
> +    {
> +        adjusted = *pSetPointerPosition;
> +        adjusted.Y =
> m_CurrentModes[pSetPointerPosition->VidPnSourceId].SrcModeHeight -
> pSetPointerPosition->Y;
> +        adjusted.X =
> m_CurrentModes[pSetPointerPosition->VidPnSourceId].SrcModeWidth -
> pSetPointerPosition->X;
> +        pSetPointerPosition = &adjusted;
> +    }
> +    else if (m_CurrentModes[pSetPointerPosition->VidPnSourceId].Rotation ==
> D3DKMDT_VPPR_ROTATE270)
> +    {
> +        adjusted = *pSetPointerPosition;
> +        adjusted.Y = pSetPointerPosition->X;
> +        adjusted.X =
> m_CurrentModes[pSetPointerPosition->VidPnSourceId].SrcModeWidth -
> pSetPointerPosition->Y;
> +        pSetPointerPosition = &adjusted;
> +    }
>      return m_pHWDevice->SetPointerPosition(pSetPointerPosition);
>  }
>  
> --
> 2.17.1
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
> 
> 



More information about the Spice-devel mailing list