On Fri, 19 Sep 2014 14:24:50 -0400
Hongze Zhao <[email protected]> wrote:

> Hi All,
> 
> I am using weston-1.5.X and I am curious about the which part of code that
> maintains the position of each surface.
> 
> When multiple clients connects to the weston server and initializes its
> surface, the surfaces are not showed in the exactly same position
> initially, which means someone is maintaining the position of the
> each surfaces to avoid the newly created surfaces from being showed in the
> same position. I am wondering if anyone could give me some hint where I can
> look for the code doing this job.

It is not maintained in any single place.

- A wl_surface is usually bigger than appears on screen, because
  windows may have shadows that add transparent margins. xdg-shell
  defined "window geometry" which defines the extents of "the
  window".

- weston_surface does not define a position at all, weston_view
  does, and there can be several views for a surface. That means a
  window may have multiple positions. It is up to the shell to
  decide which one is "the" position.

- weston_view::geometry.x,y is the basic translation part, but the
  matrices added to the transformation_list may also modify the
  position.

- if weston_view::geometry.parent is set, the surface is positioned
  relative to the parent, not in absolute coordinates. I forget if
  the parent matrix is in the transformation_list.

If you want to find the position in absolute coordinates given a
weston_view, use weston_view_to_global_{float,fixed}() function on
all the corners of the window. It is not enough to inspect only the
top-left corner, as the window may be rotated. It is also usually
not useful to inspect the surface point (0,0) because of the
possible shadow margins - you should use the window geometry
instead.

You might inspect weston_view::transform.boundingbox, that will not
take the window geometry into account.

But like Jonas said, the desktop shell does not inspect any of
this. It just randomizes the initial positions.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to