Blame uwac/protocols/fullscreen-shell.xml

Packit 1fb8d4
<protocol name="fullscreen_shell">
Packit 1fb8d4
  <interface name="_wl_fullscreen_shell" version="1">
Packit 1fb8d4
    <description summary="Displays a single surface per output">
Packit 1fb8d4
      Displays a single surface per output.
Packit 1fb8d4
Packit 1fb8d4
      This interface provides a mechanism for a single client to display
Packit 1fb8d4
      simple full-screen surfaces.  While there technically may be multiple
Packit 1fb8d4
      clients bound to this interface, only one of those clients should be
Packit 1fb8d4
      shown at a time.
Packit 1fb8d4
Packit 1fb8d4
      To present a surface, the client uses either the present_surface or
Packit 1fb8d4
      present_surface_for_mode requests.  Presenting a surface takes effect
Packit 1fb8d4
      on the next wl_surface.commit.  See the individual requests for
Packit 1fb8d4
      details about scaling and mode switches.
Packit 1fb8d4
Packit 1fb8d4
      The client can have at most one surface per output at any time.
Packit 1fb8d4
      Requesting a surface be presented on an output that already has a
Packit 1fb8d4
      surface replaces the previously presented surface.  Presenting a null
Packit 1fb8d4
      surface removes its content and effectively disables the output.
Packit 1fb8d4
      Exactly what happens when an output is "disabled" is
Packit 1fb8d4
      compositor-specific.  The same surface may be presented on multiple
Packit 1fb8d4
      outputs simultaneously.
Packit 1fb8d4
Packit 1fb8d4
      Once a surface is presented on an output, it stays on that output
Packit 1fb8d4
      until either the client removes it or the compositor destroys the
Packit 1fb8d4
      output.  This way, the client can update the output's contents by
Packit 1fb8d4
      simply attaching a new buffer.
Packit 1fb8d4
    </description>
Packit 1fb8d4
Packit 1fb8d4
    <request name="release" type="destructor">
Packit 1fb8d4
      <description summary="release the wl_fullscreen_shell interface">
Packit 1fb8d4
	Release the binding from the wl_fullscreen_shell interface
Packit 1fb8d4
Packit 1fb8d4
	This destroys the server-side object and frees this binding.  If
Packit 1fb8d4
	the client binds to wl_fullscreen_shell multiple times, it may wish
Packit 1fb8d4
	to free some of those bindings.
Packit 1fb8d4
      </description>
Packit 1fb8d4
    </request>
Packit 1fb8d4
Packit 1fb8d4
    <enum name="capability">
Packit 1fb8d4
      <description summary="capabilities advertised by the compositor">
Packit 1fb8d4
	Various capabilities that can be advertised by the compositor.  They
Packit 1fb8d4
	are advertised one-at-a-time when the wl_fullscreen_shell interface is
Packit 1fb8d4
	bound.  See the wl_fullscreen_shell.capability event for more details.
Packit 1fb8d4
Packit 1fb8d4
	ARBITRARY_MODE:
Packit 1fb8d4
	This is a hint to the client that indicates that the compositor is
Packit 1fb8d4
	capable of setting practically any mode on its outputs.  If this
Packit 1fb8d4
	capability is provided, wl_fullscreen_shell.present_surface_for_mode
Packit 1fb8d4
	will almost never fail and clients should feel free to set whatever
Packit 1fb8d4
	mode they like.  If the compositor does not advertise this, it may
Packit 1fb8d4
	still support some modes that are not advertised through wl_global.mode
Packit 1fb8d4
	but it is less likely.
Packit 1fb8d4
Packit 1fb8d4
	CURSOR_PLANE:
Packit 1fb8d4
	This is a hint to the client that indicates that the compositor can
Packit 1fb8d4
	handle a cursor surface from the client without actually compositing.
Packit 1fb8d4
	This may be because of a hardware cursor plane or some other mechanism.
Packit 1fb8d4
	If the compositor does not advertise this capability then setting
Packit 1fb8d4
	wl_pointer.cursor may degrade performance or be ignored entirely.  If
Packit 1fb8d4
	CURSOR_PLANE is not advertised, it is recommended that the client draw
Packit 1fb8d4
	its own cursor and set wl_pointer.cursor(NULL).
Packit 1fb8d4
      </description>
Packit 1fb8d4
      <entry name="arbitrary_modes" value="1" summary="compositor is capable of almost any output mode"/>
Packit 1fb8d4
      <entry name="cursor_plane" value="2" summary="compositor has a separate cursor plane"/>
Packit 1fb8d4
    </enum>
Packit 1fb8d4
Packit 1fb8d4
    <event name="capability">
Packit 1fb8d4
      <description summary="advertises a capability of the compositor">
Packit 1fb8d4
	Advertises a single capability of the compositor.
Packit 1fb8d4
Packit 1fb8d4
	When the wl_fullscreen_shell interface is bound, this event is emitted
Packit 1fb8d4
	once for each capability advertised.  Valid capabilities are given by
Packit 1fb8d4
	the wl_fullscreen_shell.capability enum.  If clients want to take
Packit 1fb8d4
	advantage of any of these capabilities, they should use a
Packit 1fb8d4
	wl_display.sync request immediately after binding to ensure that they
Packit 1fb8d4
	receive all the capability events.
Packit 1fb8d4
      </description>
Packit 1fb8d4
      <arg name="capabilty" type="uint"/>
Packit 1fb8d4
    </event>
Packit 1fb8d4
Packit 1fb8d4
    <enum name="present_method">
Packit 1fb8d4
      <description summary="different method to set the surface fullscreen">
Packit 1fb8d4
	Hints to indicate to the compositor how to deal with a conflict
Packit 1fb8d4
	between the dimensions of the surface and the dimensions of the
Packit 1fb8d4
	output. The compositor is free to ignore this parameter.
Packit 1fb8d4
      </description>
Packit 1fb8d4
      <entry name="default" value="0" summary="no preference, apply default policy"/>
Packit 1fb8d4
      <entry name="center" value="1" summary="center the surface on the output"/>
Packit 1fb8d4
      <entry name="zoom" value="2" summary="scale the surface, preserving aspect ratio, to the largest size that will fit on the output" />
Packit 1fb8d4
      <entry name="zoom_crop" value="3" summary="scale the surface, preserving aspect ratio, to fully fill the output cropping if needed" />
Packit 1fb8d4
      <entry name="stretch" value="4" summary="scale the surface to the size of the output ignoring aspect ratio" />
Packit 1fb8d4
    </enum>
Packit 1fb8d4
Packit 1fb8d4
    <request name="present_surface">
Packit 1fb8d4
      <description summary="present surface for display">
Packit 1fb8d4
	Present a surface on the given output.
Packit 1fb8d4
Packit 1fb8d4
	If the output is null, the compositor will present the surface on
Packit 1fb8d4
	whatever display (or displays) it thinks best.  In particular, this
Packit 1fb8d4
	may replace any or all surfaces currently presented so it should
Packit 1fb8d4
	not be used in combination with placing surfaces on specific
Packit 1fb8d4
	outputs.
Packit 1fb8d4
Packit 1fb8d4
	The method parameter is a hint to the compositor for how the surface
Packit 1fb8d4
	is to be presented.  In particular, it tells the compositor how to
Packit 1fb8d4
	handle a size mismatch between the presented surface and the
Packit 1fb8d4
	output.  The compositor is free to ignore this parameter.
Packit 1fb8d4
Packit 1fb8d4
	The "zoom", "zoom_crop", and "stretch" methods imply a scaling
Packit 1fb8d4
	operation on the surface.  This will override any kind of output
Packit 1fb8d4
	scaling, so the buffer_scale property of the surface is effectively
Packit 1fb8d4
	ignored.
Packit 1fb8d4
      </description>
Packit 1fb8d4
      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
Packit 1fb8d4
      <arg name="method" type="uint"/>
Packit 1fb8d4
      <arg name="output" type="object" interface="wl_output" allow-null="true"/>
Packit 1fb8d4
    </request>
Packit 1fb8d4
Packit 1fb8d4
    <request name="present_surface_for_mode">
Packit 1fb8d4
      <description summary="present surface for display at a particular mode">
Packit 1fb8d4
	Presents a surface on the given output for a particular mode.
Packit 1fb8d4
Packit 1fb8d4
	If the current size of the output differs from that of the surface,
Packit 1fb8d4
	the compositor will attempt to change the size of the output to
Packit 1fb8d4
	match the surface.  The result of the mode-switch operation will be
Packit 1fb8d4
	returned via the provided wl_fullscreen_shell_mode_feedback object.
Packit 1fb8d4
Packit 1fb8d4
	If the current output mode matches the one requested or if the
Packit 1fb8d4
	compositor successfully switches the mode to match the surface,
Packit 1fb8d4
	then the mode_successful event will be sent and the output will
Packit 1fb8d4
	contain the contents of the given surface.  If the compositor
Packit 1fb8d4
	cannot match the output size to the surface size, the mode_failed
Packit 1fb8d4
	will be sent and the output will contain the contents of the
Packit 1fb8d4
	previously presented surface (if any).  If another surface is
Packit 1fb8d4
	presented on the given output before either of these has a chance
Packit 1fb8d4
	to happen, the present_cancelled event will be sent.
Packit 1fb8d4
Packit 1fb8d4
	Due to race conditions and other issues unknown to the client, no
Packit 1fb8d4
	mode-switch operation is guaranteed to succeed.  However, if the
Packit 1fb8d4
	mode is one advertised by wl_output.mode or if the compositor
Packit 1fb8d4
	advertises the ARBITRARY_MODES capability, then the client should
Packit 1fb8d4
	expect that the mode-switch operation will usually succeed.
Packit 1fb8d4
Packit 1fb8d4
	If the size of the presented surface changes, the resulting output
Packit 1fb8d4
	is undefined.  The compositor may attempt to change the output mode
Packit 1fb8d4
	to compensate.  However, there is no guarantee that a suitable mode
Packit 1fb8d4
	will be found and the client has no way to be notified of success
Packit 1fb8d4
	or failure.
Packit 1fb8d4
Packit 1fb8d4
	The framerate parameter specifies the desired framerate for the
Packit 1fb8d4
	output in mHz.  The compositor is free to ignore this parameter.  A
Packit 1fb8d4
	value of 0 indicates that the client has no preference.
Packit 1fb8d4
Packit 1fb8d4
	If the value of wl_output.scale differs from wl_surface.buffer_scale,
Packit 1fb8d4
	then the compositor may choose a mode that matches either the buffer
Packit 1fb8d4
	size or the surface size.  In either case, the surface will fill the
Packit 1fb8d4
	output.
Packit 1fb8d4
      </description>
Packit 1fb8d4
      <arg name="surface" type="object" interface="wl_surface"/>
Packit 1fb8d4
      <arg name="output" type="object" interface="wl_output"/>
Packit 1fb8d4
      <arg name="framerate" type="int"/>
Packit 1fb8d4
      <arg name="feedback" type="new_id" interface="_wl_fullscreen_shell_mode_feedback"/>
Packit 1fb8d4
    </request>
Packit 1fb8d4
Packit 1fb8d4
    <enum name="error">
Packit 1fb8d4
      <description summary="wl_fullscreen_shell error values">
Packit 1fb8d4
	These errors can be emitted in response to wl_fullscreen_shell requests
Packit 1fb8d4
      </description>
Packit 1fb8d4
      <entry name="invalid_method" value="0" summary="present_method is not known"/>
Packit 1fb8d4
    </enum>
Packit 1fb8d4
  </interface>
Packit 1fb8d4
Packit 1fb8d4
  <interface name="_wl_fullscreen_shell_mode_feedback" version="1">
Packit 1fb8d4
    <event name="mode_successful">
Packit 1fb8d4
      <description summary="mode switch succeeded">
Packit 1fb8d4
	This event indicates that the attempted mode switch operation was
Packit 1fb8d4
	successful.  A surface of the size requested in the mode switch
Packit 1fb8d4
	will fill the output without scaling.
Packit 1fb8d4
Packit 1fb8d4
	Upon receiving this event, the client should destroy the
Packit 1fb8d4
	wl_fullscreen_shell_mode_feedback object.
Packit 1fb8d4
      </description>
Packit 1fb8d4
    </event>
Packit 1fb8d4
    <event name="mode_failed">
Packit 1fb8d4
      <description summary="mode switch failed">
Packit 1fb8d4
	This event indicates that the attempted mode switch operation
Packit 1fb8d4
	failed. This may be because the requested output mode is not
Packit 1fb8d4
	possible or it may mean that the compositor does not want to allow it.
Packit 1fb8d4
Packit 1fb8d4
	Upon receiving this event, the client should destroy the
Packit 1fb8d4
	wl_fullscreen_shell_mode_feedback object.
Packit 1fb8d4
      </description>
Packit 1fb8d4
    </event>
Packit 1fb8d4
    <event name="present_cancelled">
Packit 1fb8d4
      <description summary="mode switch cancelled">
Packit 1fb8d4
	This event indicates that the attempted mode switch operation was
Packit 1fb8d4
	cancelled.  Most likely this is because the client requested a
Packit 1fb8d4
	second mode switch before the first one completed.
Packit 1fb8d4
Packit 1fb8d4
	Upon receiving this event, the client should destroy the
Packit 1fb8d4
	wl_fullscreen_shell_mode_feedback object.
Packit 1fb8d4
      </description>
Packit 1fb8d4
    </event>
Packit 1fb8d4
  </interface>
Packit 1fb8d4
</protocol>