<div dir="ltr">Jonas,<br>Thanks for the review!<br><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 23, 2013 at 3:56 PM, Jonas Ådahl <span dir="ltr"><<a href="mailto:jadahl@gmail.com" target="_blank">jadahl@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Using this protocol, how would the fullscreen shell client turn on and<br>
off outputs? I can see how clone, next-to and modeset by controlling<br>
what surface is presented and what fullscreen method is used, but that<br>
is not enough for turning an output off, isn't it?<br></blockquote><div><br></div><div>I think that would be done by simply calling present_surface with a null surface to remove the surface from the output.  I'm not 100% sure how this will interact with KMS surface detection, but hopefully we should be able to make it that simple.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Another question is synchronising. Would a client ever want to change<br>
anything atomically? Do we need something like wl_surface.commit?<br></blockquote><div><br></div><div>I'm not sure what would get changed atomically.  There's only one operation and different outputs will probably have different refresh rates so changes won't be atomic anyway.  Or are you thinking about trying to future-proof stuff?<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Also, one wording comment below.<br>
<br>
Thanks<br>
<br>
Jonas<br>
<div><div class="h5"><br>
<br>
On Tue, Oct 22, 2013 at 08:48:25PM -0500, Jason Ekstrand wrote:<br>
> ---<br>
>  protocol/fullscreen-shell.xml | 44 +++++++++++++++++++++++++++++++++++++++++++<br>
>  1 file changed, 44 insertions(+)<br>
>  create mode 100644 protocol/fullscreen-shell.xml<br>
><br>
> diff --git a/protocol/fullscreen-shell.xml b/protocol/fullscreen-shell.xml<br>
> new file mode 100644<br>
> index 0000000..b696828<br>
> --- /dev/null<br>
> +++ b/protocol/fullscreen-shell.xml<br>
> @@ -0,0 +1,44 @@<br>
> +<protocol name="fullscreen_shell"><br>
> +  <interface name="wl_fullscreen_shell" version="1"><br>
> +    <description summary="Displays a single surface per output"><br>
> +      Displays a single surface per output.<br>
> +<br>
> +      This interface can only be bound to by one client at a time.<br>
> +    </description><br>
> +<br>
> +    <enum name="fullscreen_method"><br>
> +      <description summary="different method to set the surface fullscreen"><br>
> +     Hints to indicate to the compositor how to deal with a conflict<br>
> +     between the dimensions of the surface and the dimensions of the<br>
> +     output. The compositor is free to ignore this parameter.<br>
> +      </description><br>
> +      <entry name="default" value="0" summary="no preference, apply default policy"/><br>
> +      <entry name="scale" value="1" summary="scale, preserve the surface's aspect ratio and center on output"/><br>
> +      <entry name="driver" value="2" summary="switch output mode to the smallest mode that can fit the surface, add black borders to compensate size mismatch"/><br>
> +      <entry name="fill" value="3" summary="no upscaling, center on output and add black borders to compensate size mismatch"/><br>
> +    </enum><br>
> +<br>
> +    <request name="present_surface"><br>
> +      <description summary="present surface for display"><br>
> +     This requests the system compositor to display surface on output.<br>
> +     Each client of the system compositor can have at most one surface<br>
<br>
</div></div>You still use the term 'system compositor' here. Also, it should be<br>
"display a surface" instead of "display surface".<br></blockquote><div><br></div><div>Thanks.  Good catch.  I've fixed it locally.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im"><br>
> +     per output at any one time. Subsequent requests with the same<br>
> +     output replace the surface bound to that output.  The same surface<br>
> +     may be presented on multiple outputs.<br>
> +<br>
> +     If the output is null, the compositor will present the surface on<br>
> +     whatever display (or displays) it thinks best.  In particular, this<br>
> +     may replace any or all surfaces currently presented so it should<br>
> +     not be used in combination with placing surfaces on specific<br>
> +     outputs.<br>
> +<br>
> +     The method specifies how the surface is to be persented.  These<br>
> +     methods are identical to those in wl_shell_surface.set_fullscreen.<br>
> +      </description><br>
> +      <arg name="surface" type="object" interface="wl_surface"/><br>
> +      <arg name="method" type="uint"/><br>
> +      <arg name="framerate" type="uint"/><br>
> +      <arg name="output" type="object" interface="wl_output" allow-null="true"/><br>
> +    </request><br>
> +  </interface><br>
> +</protocol><br>
> --<br>
> 1.8.3.1<br>
><br>
</div>> _______________________________________________<br>
> wayland-devel mailing list<br>
> <a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</blockquote></div><br></div></div></div>