<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 2, 2013 at 1:22 PM, Daniel Stone <span dir="ltr"><<a href="mailto:daniel@fooishbar.org" target="_blank">daniel@fooishbar.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<div class="im"><br>
On 2 May 2013 15:42, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> Ok, I see it now. Sorry, but I missed it on my first read-through.  Yes, it<br>
> fixes the problem, but in an extremely confusing way.  The reason I say it<br>
> is confusing is because it inherently mixes buffer and surface coordinate<br>
> systems.  I really think we need to isolate buffer coordinates from surface<br>
> coordinates more.  Perhaps what we need is two requests: set_source_rect and<br>
> set_dest_rect and completely ignore the x and y from attach.  This both<br>
> provides clarity to the coordinate systems and provides a little separation<br>
> between crop and scale.<br>
<br>
</div>Ideally, when wl_surface::commit was added, wl_surface::attach<br>
should've been broken out into wl_surface::attach and<br>
wl_surface::set_position.  Oh well.<br></blockquote><div><br></div><div>Exactly.  That's what my suggestion was trying to fix (at least in the transformed surface case).<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

That being said, we can't ignore the x and y from attach, because that<br>
_moves the window_ on screen (think resizing from top left), whereas<br>
this is all about how we map the contents of a buffer into that window<br>
- totally unrelated to moving.<br></blockquote><div><br></div><div>Yes, I realize that the x and y from attach are used for moving or scaling from top or left.  My suggestion was to replace the x and y in attach with an x and y in set_dest_rect.  We wouldn't be losing functionality, just moving it in a certain case.  This way surface coordinates are kept with surfaces and buffer coordinates are kept with buffers.<br>
<br></div><div>In this case, the defined behavior would be that if you create a scaler for a surface, the x and y in attach are disabled and set_dest_rect takes over.  This way older clients can just use attach like they used to and clients that use surface scalers use the destination rectangle.  It's not a perfect fix, but I think it moves in the right direction.  And, for what it's worth, it doesn't make things significantly more complicated because anything that's going to scale from the top-left will have to mess with both the surface and the scaler anyway.<br>
<br></div><div>--Jason Ekstrand<br></div></div><br></div></div>