[RFC 1/5] Add a fullscreen shell protocol

Jonas Ådahl jadahl at gmail.com
Wed Oct 23 22:56:15 CEST 2013


Hi,

Using this protocol, how would the fullscreen shell client turn on and
off outputs? I can see how clone, next-to and modeset by controlling
what surface is presented and what fullscreen method is used, but that
is not enough for turning an output off, isn't it?

Another question is synchronising. Would a client ever want to change
anything atomically? Do we need something like wl_surface.commit?

Also, one wording comment below.

Thanks

Jonas


On Tue, Oct 22, 2013 at 08:48:25PM -0500, Jason Ekstrand wrote:
> ---
>  protocol/fullscreen-shell.xml | 44 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 44 insertions(+)
>  create mode 100644 protocol/fullscreen-shell.xml
> 
> diff --git a/protocol/fullscreen-shell.xml b/protocol/fullscreen-shell.xml
> new file mode 100644
> index 0000000..b696828
> --- /dev/null
> +++ b/protocol/fullscreen-shell.xml
> @@ -0,0 +1,44 @@
> +<protocol name="fullscreen_shell">
> +  <interface name="wl_fullscreen_shell" version="1">
> +    <description summary="Displays a single surface per output">
> +      Displays a single surface per output.
> +
> +      This interface can only be bound to by one client at a time.
> +    </description>
> +
> +    <enum name="fullscreen_method">
> +      <description summary="different method to set the surface fullscreen">
> +	Hints to indicate to the compositor how to deal with a conflict
> +	between the dimensions of the surface and the dimensions of the
> +	output. The compositor is free to ignore this parameter.
> +      </description>
> +      <entry name="default" value="0" summary="no preference, apply default policy"/>
> +      <entry name="scale" value="1" summary="scale, preserve the surface's aspect ratio and center on output"/>
> +      <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"/>
> +      <entry name="fill" value="3" summary="no upscaling, center on output and add black borders to compensate size mismatch"/>
> +    </enum>
> +
> +    <request name="present_surface">
> +      <description summary="present surface for display">
> +	This requests the system compositor to display surface on output.
> +	Each client of the system compositor can have at most one surface

You still use the term 'system compositor' here. Also, it should be
"display a surface" instead of "display surface".

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


More information about the wayland-devel mailing list