mirror of
				https://gitlab.com/qemu-project/qemu.git
				synced 2025-10-30 07:57:14 +08:00 
			
		
		
		
	 10aaad0edc
			
		
	
	10aaad0edc
	
	
	
		
			
			To handle multi plane. v3: * rename interface * add x/y/backing_width/backing_height arg v2: * use new dmabuf API and check length Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Qiang Yu <yuq825@gmail.com> Message-ID: <20250327025848.46962-6-yuq825@gmail.com> [ Fix style ] Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
		
			
				
	
	
		
			1145 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			1145 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="utf-8"?>
 | |
| <node>
 | |
|   <!--
 | |
|       org.qemu.Display1.VM:
 | |
| 
 | |
|       This interface is implemented on ``/org/qemu/Display1/VM``.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.VM">
 | |
|     <!--
 | |
|         Name:
 | |
| 
 | |
|         The name of the VM.
 | |
|     -->
 | |
|     <property name="Name" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         UUID:
 | |
| 
 | |
|         The UUID of the VM.
 | |
|     -->
 | |
|     <property name="UUID" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         ConsoleIDs:
 | |
| 
 | |
|         The list of consoles available on ``/org/qemu/Display1/Console_$id``.
 | |
|     -->
 | |
|     <property name="ConsoleIDs" type="au" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         /org/qemu/Display1/VM object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Console:
 | |
| 
 | |
|       This interface is implemented on ``/org/qemu/Display1/Console_$id``. You
 | |
|       may discover available consoles through introspection or with the
 | |
|       :dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property.
 | |
| 
 | |
|       A console is attached to a video device head. It may be "Graphic" or
 | |
|       "Text" (see :dbus:prop:`Type` and other properties).
 | |
| 
 | |
|       Interactions with a console may be done with
 | |
|       :dbus:iface:`org.qemu.Display1.Keyboard`,
 | |
|       :dbus:iface:`org.qemu.Display1.Mouse` and
 | |
|       :dbus:iface:`org.qemu.Display1.MultiTouch` interfaces when available.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Console">
 | |
|     <!--
 | |
|         RegisterListener:
 | |
|         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
 | |
| 
 | |
|         Register a console listener, which will receive display updates, until
 | |
|         it is disconnected.
 | |
| 
 | |
|         Multiple listeners may be registered simultaneously.
 | |
| 
 | |
|         The listener is expected to implement the
 | |
|         :dbus:iface:`org.qemu.Display1.Listener` interface.
 | |
|     -->
 | |
|     <method name="RegisterListener">
 | |
|       <?if $(env.HOST_OS) == windows?>
 | |
|       <arg type="ay" name="listener" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|       <?else?>
 | |
|       <arg type="h" name="listener" direction="in"/>
 | |
|       <?endif?>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SetUIInfo:
 | |
|         @width_mm: the physical display width in millimeters.
 | |
|         @height_mm: the physical display height in millimeters.
 | |
|         @xoff: horizontal offset, in pixels.
 | |
|         @yoff: vertical offset, in pixels.
 | |
|         @width: console width, in pixels.
 | |
|         @height: console height, in pixels.
 | |
| 
 | |
|         Modify the dimensions and display settings.
 | |
|     -->
 | |
|     <method name="SetUIInfo">
 | |
|       <arg name="width_mm" type="q" direction="in"/>
 | |
|       <arg name="height_mm" type="q" direction="in"/>
 | |
|       <arg name="xoff" type="i" direction="in"/>
 | |
|       <arg name="yoff" type="i" direction="in"/>
 | |
|       <arg name="width" type="u" direction="in"/>
 | |
|       <arg name="height" type="u" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Label:
 | |
| 
 | |
|         A user-friendly name for the console (for ex: "VGA").
 | |
|     -->
 | |
|     <property name="Label" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Head:
 | |
| 
 | |
|         Graphical device head number.
 | |
|     -->
 | |
|     <property name="Head" type="u" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Type:
 | |
| 
 | |
|         Console type ("Graphic" or "Text").
 | |
|     -->
 | |
|     <property name="Type" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Width:
 | |
| 
 | |
|         Console width, in pixels.
 | |
|     -->
 | |
|     <property name="Width" type="u" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Height:
 | |
| 
 | |
|         Console height, in pixels.
 | |
|     -->
 | |
|     <property name="Height" type="u" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         DeviceAddress:
 | |
| 
 | |
|         The device address (ex: "pci/0000/02.0").
 | |
|     -->
 | |
|     <property name="DeviceAddress" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         ``/org/qemu/Display1/Console_$id`` object, and can be used to detect the
 | |
|         capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Keyboard:
 | |
| 
 | |
|       This interface is optionally implemented on
 | |
|       ``/org/qemu/Display1/Console_$id`` (see
 | |
|       :dbus:iface:`~org.qemu.Display1.Console`).
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Keyboard">
 | |
|     <!--
 | |
|         Press:
 | |
|         @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
 | |
| 
 | |
|         Send a key press event.
 | |
|     -->
 | |
|     <method name="Press">
 | |
|       <arg type="u" name="keycode" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Release:
 | |
|         @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
 | |
| 
 | |
|         Send a key release event.
 | |
|     -->
 | |
|     <method name="Release">
 | |
|       <arg type="u" name="keycode" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Modifiers:
 | |
| 
 | |
|         The active keyboard modifiers::
 | |
| 
 | |
|           Scroll = 1 << 0
 | |
|           Num    = 1 << 1
 | |
|           Caps   = 1 << 2
 | |
|     -->
 | |
|     <property name="Modifiers" type="u" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Mouse:
 | |
| 
 | |
|       This interface is optionally implemented on
 | |
|       ``/org/qemu/Display1/Console_$id`` (see
 | |
|       :dbus:iface:`~org.qemu.Display1.Console` documentation).
 | |
| 
 | |
|       .. _dbus-button-values:
 | |
| 
 | |
|       **Button values**::
 | |
| 
 | |
|         Left       = 0
 | |
|         Middle     = 1
 | |
|         Right      = 2
 | |
|         Wheel-up   = 3
 | |
|         Wheel-down = 4
 | |
|         Side       = 5
 | |
|         Extra      = 6
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Mouse">
 | |
|     <!--
 | |
|         Press:
 | |
|         @button: :ref:`button value<dbus-button-values>`.
 | |
| 
 | |
|         Send a mouse button press event.
 | |
|     -->
 | |
|     <method name="Press">
 | |
|       <arg type="u" name="button" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Release:
 | |
|         @button: :ref:`button value<dbus-button-values>`.
 | |
| 
 | |
|         Send a mouse button release event.
 | |
|     -->
 | |
|     <method name="Release">
 | |
|       <arg type="u" name="button" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SetAbsPosition:
 | |
|         @x: X position, in pixels.
 | |
|         @y: Y position, in pixels.
 | |
| 
 | |
|         Set the mouse pointer position.
 | |
| 
 | |
|         Returns an error if not :dbus:prop:`IsAbsolute`.
 | |
|     -->
 | |
|     <method name="SetAbsPosition">
 | |
|       <arg type="u" name="x" direction="in"/>
 | |
|       <arg type="u" name="y" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         RelMotion:
 | |
|         @dx: X-delta, in pixels.
 | |
|         @dy: Y-delta, in pixels.
 | |
| 
 | |
|         Move the mouse pointer position, relative to the current position.
 | |
| 
 | |
|         Returns an error if :dbus:prop:`IsAbsolute`.
 | |
|     -->
 | |
|     <method name="RelMotion">
 | |
|       <arg type="i" name="dx" direction="in"/>
 | |
|       <arg type="i" name="dy" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         IsAbsolute:
 | |
| 
 | |
|         Whether the mouse is using absolute movements.
 | |
|     -->
 | |
|     <property name="IsAbsolute" type="b" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.MultiTouch:
 | |
| 
 | |
|       This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
 | |
|       :dbus:iface:`~org.qemu.Display1.Console` documentation).
 | |
| 
 | |
|       .. _dbus-kind-values:
 | |
| 
 | |
|       **Kind values**::
 | |
| 
 | |
|         Begin       = 0
 | |
|         Update      = 1
 | |
|         End         = 2
 | |
|         Cancel      = 3
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.MultiTouch">
 | |
|     <!--
 | |
|         SendEvent:
 | |
|         @kind: The touch event kind
 | |
|         @num_slot: The slot number.
 | |
|         @x: The x coordinates.
 | |
|         @y: The y coordinates.
 | |
| 
 | |
|         Send a touch gesture event.
 | |
|     -->
 | |
|     <method name="SendEvent">
 | |
|       <arg type="u" name="kind" direction="in"/>
 | |
|       <arg type="t" name="num_slot" direction="in"/>
 | |
|       <arg type="d" name="x" direction="in"/>
 | |
|       <arg type="d" name="y" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         MaxSlots:
 | |
| 
 | |
|         The maximum number of slots.
 | |
|     -->
 | |
|     <property name="MaxSlots" type="i" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Listener:
 | |
| 
 | |
|       This client-side interface must be available on
 | |
|       ``/org/qemu/Display1/Listener`` when registering the peer-to-peer
 | |
|       connection with :dbus:meth:`~org.qemu.Display1.Console.Register`.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Listener">
 | |
|     <!--
 | |
|         Scanout:
 | |
|         @width: display width, in pixels.
 | |
|         @height: display height, in pixels.
 | |
|         @stride: data stride, in bytes.
 | |
|         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
 | |
|         @data: image data.
 | |
| 
 | |
|         Resize and update the display content.
 | |
| 
 | |
|         The data to transfer for the display update may be large. The preferred
 | |
|         scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible.
 | |
|     -->
 | |
|     <method name="Scanout">
 | |
|       <arg type="u" name="width" direction="in"/>
 | |
|       <arg type="u" name="height" direction="in"/>
 | |
|       <arg type="u" name="stride" direction="in"/>
 | |
|       <arg type="u" name="pixman_format" direction="in"/>
 | |
|       <arg type="ay" name="data" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Update:
 | |
|         @x: X update position, in pixels.
 | |
|         @y: Y update position, in pixels.
 | |
|         @width: update width, in pixels.
 | |
|         @height: update height, in pixels.
 | |
|         @stride: data stride, in bytes.
 | |
|         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
 | |
|         @data: display image data.
 | |
| 
 | |
|         Update the display content.
 | |
| 
 | |
|         This method is only called after a :dbus:meth:`Scanout` call.
 | |
|     -->
 | |
|     <method name="Update">
 | |
|       <arg type="i" name="x" direction="in"/>
 | |
|       <arg type="i" name="y" direction="in"/>
 | |
|       <arg type="i" name="width" direction="in"/>
 | |
|       <arg type="i" name="height" direction="in"/>
 | |
|       <arg type="u" name="stride" direction="in"/>
 | |
|       <arg type="u" name="pixman_format" direction="in"/>
 | |
|       <arg type="ay" name="data" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <?if $(env.HOST_OS) != windows?>
 | |
|     <!--
 | |
|         ScanoutDMABUF:
 | |
|         @dmabuf: the DMABUF file descriptor.
 | |
|         @width: display width, in pixels.
 | |
|         @height: display height, in pixels.
 | |
|         @stride: stride, in bytes.
 | |
|         @fourcc: DMABUF fourcc.
 | |
|         @modifier: DMABUF modifier.
 | |
|         @y0_top: whether Y position 0 is the top or not.
 | |
| 
 | |
|         Resize and update the display content with a DMABUF.
 | |
|     -->
 | |
|     <method name="ScanoutDMABUF">
 | |
|       <arg type="h" name="dmabuf" direction="in"/>
 | |
|       <arg type="u" name="width" direction="in"/>
 | |
|       <arg type="u" name="height" direction="in"/>
 | |
|       <arg type="u" name="stride" direction="in"/>
 | |
|       <arg type="u" name="fourcc" direction="in"/>
 | |
|       <!-- xywh? -->
 | |
|       <arg type="t" name="modifier" direction="in"/>
 | |
|       <arg type="b" name="y0_top" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         UpdateDMABUF:
 | |
|         @x: the X update position, in pixels.
 | |
|         @y: the Y update position, in pixels.
 | |
|         @width: the update width, in pixels.
 | |
|         @height: the update height, in pixels.
 | |
| 
 | |
|         Update the display content with the current DMABUF and the given region.
 | |
|     -->
 | |
|     <method name="UpdateDMABUF">
 | |
|       <arg type="i" name="x" direction="in"/>
 | |
|       <arg type="i" name="y" direction="in"/>
 | |
|       <arg type="i" name="width" direction="in"/>
 | |
|       <arg type="i" name="height" direction="in"/>
 | |
|     </method>
 | |
|     <?endif?>
 | |
| 
 | |
|     <!--
 | |
|         Disable:
 | |
| 
 | |
|         Disable the display (turn it off).
 | |
|     -->
 | |
|     <method name="Disable">
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         MouseSet:
 | |
|         @x: X mouse position, in pixels.
 | |
|         @y: Y mouse position, in pixels.
 | |
|         @on: whether the mouse is visible or not.
 | |
| 
 | |
|         Set the mouse position and visibility.
 | |
|     -->
 | |
|     <method name="MouseSet">
 | |
|       <arg type="i" name="x" direction="in"/>
 | |
|       <arg type="i" name="y" direction="in"/>
 | |
|       <arg type="i" name="on" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         CursorDefine:
 | |
|         @width: cursor width, in pixels.
 | |
|         @height: cursor height, in pixels.
 | |
|         @hot_x: hot-spot X position, in pixels.
 | |
|         @hot_y: hot-spot Y position, in pixels.
 | |
|         @data: the cursor data.
 | |
| 
 | |
|         Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
 | |
|         per pixel.
 | |
|     -->
 | |
|     <method name="CursorDefine">
 | |
|       <arg type="i" name="width" direction="in"/>
 | |
|       <arg type="i" name="height" direction="in"/>
 | |
|       <arg type="i" name="hot_x" direction="in"/>
 | |
|       <arg type="i" name="hot_y" direction="in"/>
 | |
|       <arg type="ay" name="data" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         /org/qemu/Display1/Listener object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Listener.Unix.Map:
 | |
| 
 | |
|       This optional client-side interface can complement
 | |
|       org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for
 | |
|       Unix-specific shared memory scanouts.
 | |
|   -->
 | |
|   <?if $(env.HOST_OS) != windows?>
 | |
|   <interface name="org.qemu.Display1.Listener.Unix.Map">
 | |
|     <!--
 | |
|         ScanoutMap:
 | |
|         @handle: the shared map FD.
 | |
|         @offset: mapping offset, in bytes.
 | |
|         @width: display width, in pixels.
 | |
|         @height: display height, in pixels.
 | |
|         @stride: stride, in bytes.
 | |
|         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
 | |
| 
 | |
|         Resize and update the display content with a shared map.
 | |
|     -->
 | |
|     <method name="ScanoutMap">
 | |
|       <arg type="h" name="handle" direction="in"/>
 | |
|       <arg type="u" name="offset" direction="in"/>
 | |
|       <arg type="u" name="width" direction="in"/>
 | |
|       <arg type="u" name="height" direction="in"/>
 | |
|       <arg type="u" name="stride" direction="in"/>
 | |
|       <arg type="u" name="pixman_format" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         UpdateMap:
 | |
|         @x: the X update position, in pixels.
 | |
|         @y: the Y update position, in pixels.
 | |
|         @width: the update width, in pixels.
 | |
|         @height: the update height, in pixels.
 | |
| 
 | |
|         Update the display content with the current shared map and the given region.
 | |
|     -->
 | |
|     <method name="UpdateMap">
 | |
|       <arg type="i" name="x" direction="in"/>
 | |
|       <arg type="i" name="y" direction="in"/>
 | |
|       <arg type="i" name="width" direction="in"/>
 | |
|       <arg type="i" name="height" direction="in"/>
 | |
|     </method>
 | |
|   </interface>
 | |
|   <?endif?>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Listener.Win32.Map:
 | |
| 
 | |
|       This optional client-side interface can complement
 | |
|       org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
 | |
|       specific shared memory scanouts.
 | |
|   -->
 | |
|   <?if $(env.HOST_OS) == windows?>
 | |
|   <interface name="org.qemu.Display1.Listener.Win32.Map">
 | |
|     <!--
 | |
|         ScanoutMap:
 | |
|         @handle: the shared file mapping handle value (not a file handle)
 | |
|         @offset: mapping offset.
 | |
|         @width: display width, in pixels.
 | |
|         @height: display height, in pixels.
 | |
|         @stride: stride, in bytes.
 | |
|         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
 | |
| 
 | |
|         Resize and update the display content with a shared file mapping object.
 | |
|     -->
 | |
|     <method name="ScanoutMap">
 | |
|       <arg type="t" name="handle" direction="in"/>
 | |
|       <arg type="u" name="offset" direction="in"/>
 | |
|       <arg type="u" name="width" direction="in"/>
 | |
|       <arg type="u" name="height" direction="in"/>
 | |
|       <arg type="u" name="stride" direction="in"/>
 | |
|       <arg type="u" name="pixman_format" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         UpdateMap:
 | |
|         @x: the X update position, in pixels.
 | |
|         @y: the Y update position, in pixels.
 | |
|         @width: the update width, in pixels.
 | |
|         @height: the update height, in pixels.
 | |
| 
 | |
|         Update the display content with the current shared map and the given region.
 | |
|     -->
 | |
|     <method name="UpdateMap">
 | |
|       <arg type="i" name="x" direction="in"/>
 | |
|       <arg type="i" name="y" direction="in"/>
 | |
|       <arg type="i" name="width" direction="in"/>
 | |
|       <arg type="i" name="height" direction="in"/>
 | |
|     </method>
 | |
|   </interface>
 | |
|   <?endif?>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Listener.Win32.D3d11:
 | |
| 
 | |
|       This optional client-side interface can complement
 | |
|       org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
 | |
|       specific Direct3D texture sharing of the scanouts.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Listener.Win32.D3d11">
 | |
|     <!--
 | |
|         ScanoutTexture2d:
 | |
|         @handle: the NT handle for the shared texture (to be opened back with ID3D11Device1::OpenSharedResource1).
 | |
|         @texture_width: texture width, in pixels.
 | |
|         @texture_height: texture height, in pixels.
 | |
|         @y0_top: whether Y position 0 is the top or not.
 | |
|         @x: the X scanout position, in pixels.
 | |
|         @y: the Y scanout position, in pixels.
 | |
|         @width: the scanout width, in pixels.
 | |
|         @height: the scanout height, in pixels.
 | |
| 
 | |
|         Resize and update the display content with a Direct3D 11 2D texture.
 | |
|         You must acquire and release the associated KeyedMutex 0 during rendering.
 | |
|     -->
 | |
|     <method name="ScanoutTexture2d">
 | |
|       <arg type="t" name="handle" direction="in"/>
 | |
|       <arg type="u" name="texture_width" direction="in"/>
 | |
|       <arg type="u" name="texture_height" direction="in"/>
 | |
|       <arg type="b" name="y0_top" direction="in"/>
 | |
|       <arg type="u" name="x" direction="in"/>
 | |
|       <arg type="u" name="y" direction="in"/>
 | |
|       <arg type="u" name="width" direction="in"/>
 | |
|       <arg type="u" name="height" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         UpdateTexture2d:
 | |
|         @x: the X update position, in pixels.
 | |
|         @y: the Y update position, in pixels.
 | |
|         @width: the update width, in pixels.
 | |
|         @height: the update height, in pixels.
 | |
| 
 | |
|         Update the display content with the current Direct3D 2D texture and the given region.
 | |
|         You must acquire and release the associated KeyedMutex 0 during rendering.
 | |
|     -->
 | |
|     <method name="UpdateTexture2d">
 | |
|       <arg type="i" name="x" direction="in"/>
 | |
|       <arg type="i" name="y" direction="in"/>
 | |
|       <arg type="i" name="width" direction="in"/>
 | |
|       <arg type="i" name="height" direction="in"/>
 | |
|     </method>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Listener.Unix.ScanoutDMABUF2:
 | |
| 
 | |
|       This optional client-side interface can complement
 | |
|       org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for
 | |
|       Unix-specific DMABUF scanout setup which support multi plane.
 | |
|   -->
 | |
|   <?if $(env.HOST_OS) != windows?>
 | |
|   <interface name="org.qemu.Display1.Listener.Unix.ScanoutDMABUF2">
 | |
|     <!--
 | |
|         ScanoutDMABUF2:
 | |
|         @dmabuf: DMABUF file descriptor of each plane.
 | |
|         @x: display x offset, in pixels
 | |
|         @y: display y offset, in pixels
 | |
|         @width: display width, in pixels.
 | |
|         @height: display height, in pixels.
 | |
|         @offset: offset of each plane, in bytes.
 | |
|         @stride: stride of each plane, in bytes.
 | |
|         @num_planes: plane number.
 | |
|         @fourcc: DMABUF fourcc.
 | |
|         @backing_width: backing framebuffer width, in pixels
 | |
|         @backing_height: backing framebuffer height, in pixels
 | |
|         @modifier: DMABUF modifier.
 | |
|         @y0_top: whether Y position 0 is the top or not.
 | |
| 
 | |
|         Resize and update the display content with DMABUF.
 | |
|     -->
 | |
|     <method name="ScanoutDMABUF2">
 | |
|       <arg type="ah" name="dmabuf" direction="in"/>
 | |
|       <arg type="u" name="x" direction="in"/>
 | |
|       <arg type="u" name="y" direction="in"/>
 | |
|       <arg type="u" name="width" direction="in"/>
 | |
|       <arg type="u" name="height" direction="in"/>
 | |
|       <arg type="au" name="offset" direction="in"/>
 | |
|       <arg type="au" name="stride" direction="in"/>
 | |
|       <arg type="u" name="num_planes" direction="in"/>
 | |
|       <arg type="u" name="fourcc" direction="in"/>
 | |
|       <arg type="u" name="backing_width" direction="in"/>
 | |
|       <arg type="u" name="backing_height" direction="in"/>
 | |
|       <arg type="t" name="modifier" direction="in"/>
 | |
|       <arg type="b" name="y0_top" direction="in"/>
 | |
|     </method>
 | |
|   </interface>
 | |
|   <?endif?>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Clipboard:
 | |
| 
 | |
|       This interface must be implemented by both the client and the server on
 | |
|       ``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
 | |
|       the client and the guest.
 | |
| 
 | |
|       Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
 | |
|       directions. Unregistered callers will get error replies.
 | |
| 
 | |
|       .. _dbus-clipboard-selection:
 | |
| 
 | |
|       **Selection values**::
 | |
| 
 | |
|         Clipboard   = 0
 | |
|         Primary     = 1
 | |
|         Secondary   = 2
 | |
| 
 | |
|       .. _dbus-clipboard-serial:
 | |
| 
 | |
|       **Serial counter**
 | |
| 
 | |
|       To solve potential clipboard races, clipboard grabs have an associated
 | |
|       serial counter. It is set to 0 on registration, and incremented by 1 for
 | |
|       each grab. The peer with the highest serial is the clipboard grab owner.
 | |
| 
 | |
|       When a grab with a lower serial is received, it should be discarded.
 | |
| 
 | |
|       When a grab is attempted with the same serial number as the current grab,
 | |
|       the one coming from the client should have higher priority, and the client
 | |
|       should gain clipboard grab ownership.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Clipboard">
 | |
|     <!--
 | |
|         Register:
 | |
| 
 | |
|         Register a clipboard session and reinitialize the serial counter.
 | |
| 
 | |
|         The client must register itself, and is granted an exclusive
 | |
|         access for handling the clipboard.
 | |
| 
 | |
|         The server can reinitialize the session as well (to reset the counter).
 | |
|     -->
 | |
|     <method name="Register"/>
 | |
| 
 | |
|     <!--
 | |
|         Unregister:
 | |
| 
 | |
|         Unregister the clipboard session.
 | |
|     -->
 | |
|     <method name="Unregister"/>
 | |
|     <!--
 | |
|         Grab:
 | |
|         @selection: a :ref:`selection value<dbus-clipboard-selection>`.
 | |
|         @serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
 | |
|         @mimes: the list of available content MIME types.
 | |
| 
 | |
|         Grab the clipboard, claiming current clipboard content.
 | |
|     -->
 | |
|     <method name="Grab">
 | |
|       <arg type="u" name="selection"/>
 | |
|       <arg type="u" name="serial"/>
 | |
|       <arg type="as" name="mimes"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Release:
 | |
|         @selection: a :ref:`selection value<dbus-clipboard-selection>`.
 | |
| 
 | |
|         Release the clipboard (does nothing if not the current owner).
 | |
|     -->
 | |
|     <method name="Release">
 | |
|       <arg type="u" name="selection"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Request:
 | |
|         @selection: a :ref:`selection value<dbus-clipboard-selection>`
 | |
|         @mimes: requested MIME types (by order of preference).
 | |
|         @reply_mime: the returned data MIME type.
 | |
|         @data: the clipboard data.
 | |
| 
 | |
|         Request the clipboard content.
 | |
| 
 | |
|         Return an error if the clipboard is empty, or the requested MIME types
 | |
|         are unavailable.
 | |
|     -->
 | |
|     <method name="Request">
 | |
|       <arg type="u" name="selection"/>
 | |
|       <arg type="as" name="mimes"/>
 | |
|       <arg type="s" name="reply_mime" direction="out"/>
 | |
|       <arg type="ay" name="data" direction="out">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         /org/qemu/Display1/Clipboard object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Audio:
 | |
| 
 | |
|       Audio backend may be available on ``/org/qemu/Display1/Audio``.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Audio">
 | |
|     <!--
 | |
|         RegisterOutListener:
 | |
|         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
 | |
| 
 | |
|         Register an audio backend playback handler.
 | |
| 
 | |
|         Multiple listeners may be registered simultaneously.
 | |
| 
 | |
|         The listener is expected to implement the
 | |
|         :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
 | |
|     -->
 | |
|     <method name="RegisterOutListener">
 | |
|       <?if $(env.HOST_OS) == windows?>
 | |
|       <arg type="ay" name="listener" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|       <?else?>
 | |
|       <arg type="h" name="listener" direction="in"/>
 | |
|       <?endif?>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         RegisterInListener:
 | |
|         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
 | |
| 
 | |
|         Register an audio backend record handler.
 | |
| 
 | |
|         Multiple listeners may be registered simultaneously.
 | |
| 
 | |
|         The listener is expected to implement the
 | |
|         :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
 | |
|     -->
 | |
|     <method name="RegisterInListener">
 | |
|       <?if $(env.HOST_OS) == windows?>
 | |
|       <arg type="ay" name="listener" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|       <?else?>
 | |
|       <arg type="h" name="listener" direction="in"/>
 | |
|       <?endif?>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         NSamples:
 | |
| 
 | |
|         The number of samples per read/write frames. (for example the default is
 | |
|         480, or 10ms at 48kHz)
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="NSamples" type="u" access="read">
 | |
|       <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
 | |
|     </property>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         /org/qemu/Display1/Audio object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.AudioOutListener:
 | |
| 
 | |
|       This client-side interface must be available on
 | |
|       ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
 | |
|       connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.AudioOutListener">
 | |
|     <!--
 | |
|         Init:
 | |
|         @id: the stream ID.
 | |
|         @bits: PCM bits per sample.
 | |
|         @is_signed: whether the PCM data is signed.
 | |
|         @is_float: PCM floating point format.
 | |
|         @freq: the PCM frequency in Hz.
 | |
|         @nchannels: the number of channels.
 | |
|         @bytes_per_frame: the bytes per frame.
 | |
|         @bytes_per_second: the bytes per second.
 | |
|         @be: whether using big-endian format.
 | |
| 
 | |
|         Initializes a PCM playback stream.
 | |
|     -->
 | |
|     <method name="Init">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="bits" type="y" direction="in"/>
 | |
|       <arg name="is_signed" type="b" direction="in"/>
 | |
|       <arg name="is_float" type="b" direction="in"/>
 | |
|       <arg name="freq" type="u" direction="in"/>
 | |
|       <arg name="nchannels" type="y" direction="in"/>
 | |
|       <arg name="bytes_per_frame" type="u" direction="in"/>
 | |
|       <arg name="bytes_per_second" type="u" direction="in"/>
 | |
|       <arg name="be" type="b" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Fini:
 | |
|         @id: the stream ID.
 | |
| 
 | |
|         Finish & close a playback stream.
 | |
|     -->
 | |
|     <method name="Fini">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SetEnabled:
 | |
|         @id: the stream ID.
 | |
| 
 | |
|         Resume or suspend the playback stream.
 | |
|     -->
 | |
|     <method name="SetEnabled">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="enabled" type="b" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SetVolume:
 | |
|         @id: the stream ID.
 | |
|         @mute: whether the stream is muted.
 | |
|         @volume: the volume per-channel.
 | |
| 
 | |
|         Set the stream volume and mute state (volume without unit, 0-255).
 | |
|     -->
 | |
|     <method name="SetVolume">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="mute" type="b" direction="in"/>
 | |
|       <arg name="volume" type="ay" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Write:
 | |
|         @id: the stream ID.
 | |
|         @data: the PCM data.
 | |
| 
 | |
|         PCM stream to play.
 | |
|     -->
 | |
|     <method name="Write">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg type="ay" name="data" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         /org/qemu/Display1/AudioOutListener object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.AudioInListener:
 | |
| 
 | |
|       This client-side interface must be available on
 | |
|       ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
 | |
|       connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.AudioInListener">
 | |
|     <!--
 | |
|         Init:
 | |
|         @id: the stream ID.
 | |
|         @bits: PCM bits per sample.
 | |
|         @is_signed: whether the PCM data is signed.
 | |
|         @is_float: PCM floating point format.
 | |
|         @freq: the PCM frequency in Hz.
 | |
|         @nchannels: the number of channels.
 | |
|         @bytes_per_frame: the bytes per frame.
 | |
|         @bytes_per_second: the bytes per second.
 | |
|         @be: whether using big-endian format.
 | |
| 
 | |
|         Initializes a PCM record stream.
 | |
|     -->
 | |
|     <method name="Init">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="bits" type="y" direction="in"/>
 | |
|       <arg name="is_signed" type="b" direction="in"/>
 | |
|       <arg name="is_float" type="b" direction="in"/>
 | |
|       <arg name="freq" type="u" direction="in"/>
 | |
|       <arg name="nchannels" type="y" direction="in"/>
 | |
|       <arg name="bytes_per_frame" type="u" direction="in"/>
 | |
|       <arg name="bytes_per_second" type="u" direction="in"/>
 | |
|       <arg name="be" type="b" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Fini:
 | |
|         @id: the stream ID.
 | |
| 
 | |
|         Finish & close a record stream.
 | |
|     -->
 | |
|     <method name="Fini">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SetEnabled:
 | |
|         @id: the stream ID.
 | |
| 
 | |
|         Resume or suspend the record stream.
 | |
|     -->
 | |
|     <method name="SetEnabled">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="enabled" type="b" direction="in"/>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SetVolume:
 | |
|         @id: the stream ID.
 | |
|         @mute: whether the stream is muted.
 | |
|         @volume: the volume per-channel.
 | |
| 
 | |
|         Set the stream volume and mute state (volume without unit, 0-255).
 | |
|     -->
 | |
|     <method name="SetVolume">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="mute" type="b" direction="in"/>
 | |
|       <arg name="volume" type="ay" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Read:
 | |
|         @id: the stream ID.
 | |
|         @size: the amount to read, in bytes.
 | |
|         @data: the recorded data (which may be less than requested).
 | |
| 
 | |
|         Read "size" bytes from the record stream.
 | |
|     -->
 | |
|     <method name="Read">
 | |
|       <arg name="id" type="t" direction="in"/>
 | |
|       <arg name="size" type="t" direction="in"/>
 | |
|       <arg type="ay" name="data" direction="out">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         /org/qemu/Display1/AudioInListener object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| 
 | |
|   <!--
 | |
|       org.qemu.Display1.Chardev:
 | |
| 
 | |
|       Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
 | |
| 
 | |
|       They may be used for different kind of streams, which are identified via
 | |
|       their FQDN :dbus:prop:`Name`.
 | |
| 
 | |
|       .. _dbus-chardev-fqdn:
 | |
| 
 | |
|       Here are some known reserved kind names (the ``org.qemu`` prefix is
 | |
|       reserved by QEMU):
 | |
| 
 | |
|       org.qemu.console.serial.0
 | |
|         A serial console stream.
 | |
| 
 | |
|       org.qemu.monitor.hmp.0
 | |
|         A QEMU HMP human monitor.
 | |
| 
 | |
|       org.qemu.monitor.qmp.0
 | |
|         A QEMU QMP monitor.
 | |
| 
 | |
|       org.qemu.usbredir
 | |
|         A usbredir stream.
 | |
|   -->
 | |
|   <interface name="org.qemu.Display1.Chardev">
 | |
|     <!--
 | |
|         Register:
 | |
|         @stream: a Unix FD to redirect the stream to.
 | |
| 
 | |
|         Register a file-descriptor for the stream handling.
 | |
| 
 | |
|         The current handler, if any, will be replaced.
 | |
|     -->
 | |
|     <method name="Register">
 | |
|       <?if $(env.HOST_OS) == windows?>
 | |
|       <arg type="ay" name="listener" direction="in">
 | |
|         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
 | |
|       </arg>
 | |
|       <?else?>
 | |
|       <arg type="h" name="stream" direction="in"/>
 | |
|       <?endif?>
 | |
|     </method>
 | |
| 
 | |
|     <!--
 | |
|         SendBreak:
 | |
| 
 | |
|         Send a break event to the character device.
 | |
|     -->
 | |
|     <method name="SendBreak"/>
 | |
| 
 | |
|     <!--
 | |
|         Name:
 | |
| 
 | |
|         The FQDN name to identify the kind of stream. See :ref:`reserved
 | |
|         names<dbus-chardev-fqdn>`.
 | |
|     -->
 | |
|     <property name="Name" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         FEOpened:
 | |
| 
 | |
|         Whether the front-end side is opened.
 | |
|     -->
 | |
|     <property name="FEOpened" type="b" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Echo:
 | |
| 
 | |
|         Whether the input should be echo'ed (for serial streams).
 | |
|     -->
 | |
|     <property name="Echo" type="b" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Owner:
 | |
| 
 | |
|         The D-Bus unique name of the registered handler.
 | |
|     -->
 | |
|     <property name="Owner" type="s" access="read"/>
 | |
| 
 | |
|     <!--
 | |
|         Interfaces:
 | |
| 
 | |
|         This property lists extra interfaces provided by the
 | |
|         ``/org/qemu/Display1/Chardev_$i`` object, and can be used to detect
 | |
|         the capabilities with which they are communicating.
 | |
| 
 | |
|         Unlike the standard D-Bus Introspectable interface, querying this
 | |
|         property does not require parsing XML.
 | |
| 
 | |
|         (earlier version of the display interface do not provide this property)
 | |
|     -->
 | |
|     <property name="Interfaces" type="as" access="read"/>
 | |
|   </interface>
 | |
| </node>
 |