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