Clients reading their surface position on screen
Daniel van Vugt
daniel.van.vugt at canonical.com
Thu Jul 24 06:36:53 UTC 2014
Yeah that's problem (2) mentioned below. And not really a problem.
Autopilot only wants to know one point where it can click a button. The
outcome is unaffected if the surface is rendered in multiple different
locations. Just click _one_ copy of the button for the same result.
On 24/07/14 14:31, Christopher James Halse Rogers wrote:
>
>
> On Thu, Jul 24, 2014 at 4:01 PM, Daniel van Vugt
> <daniel.van.vugt at canonical.com> wrote:
>> Just remember to map points like the Qt interface does:
>> Point screen_coord = mir_surface_coord_to_screen(surface,
>> client_coord);
>> So we are covered for arbitrary 3D transformations (don't assume
>> windows are on screen as rectangles).
>>
>> That only leaves two problems which are not really problems:
>> (1) Races -- Make sure you don't move a window between getting its
>> input coordinates and synthesising an event.
>> (2) Mirroring e.g. in desktop previews where the same surface is
>> composted multiple times in the frame. Actually that's not an issue
>> because the input coordinate mapping stuff only cares about the real
>> surface location.
>
> What is the “real” surface location? If we say that it's the location
> where input events will hit it, then it's entirely possible that there
> will be more than one such location - indeed, you can do roughly this
> with Compiz, but obviously without the input bit.
>
> The existence of such an API means that shells must have a concept of
> the canonical location of a surface. That's quite a limitation on a shell.
>
More information about the Mir-devel
mailing list