[gnome-flashback] add DisplayConfig.xml and IdleMonitor.xml files
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] add DisplayConfig.xml and IdleMonitor.xml files
- Date: Sun, 24 Aug 2014 00:22:18 +0000 (UTC)
commit 34203e4c6ac650b304c0e0ce2491199e6317144f
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sat Aug 23 22:04:50 2014 +0300
add DisplayConfig.xml and IdleMonitor.xml files
These files are copied from mutter. We will need them. For more
info: https://bugzilla.gnome.org/show_bug.cgi?id=705510
gnome-flashback/Makefile.am | 23 ++
gnome-flashback/org.gnome.Mutter.DisplayConfig.xml | 293 ++++++++++++++++++++
gnome-flashback/org.gnome.Mutter.IdleMonitor.xml | 35 +++
3 files changed, 351 insertions(+), 0 deletions(-)
---
diff --git a/gnome-flashback/Makefile.am b/gnome-flashback/Makefile.am
index 3d303ec..7fcf5b5 100644
--- a/gnome-flashback/Makefile.am
+++ b/gnome-flashback/Makefile.am
@@ -38,6 +38,23 @@ flashback-end-session-dialog-generated.c: org.gnome.SessionManager.EndSessionDia
--c-namespace Flashback \
org.gnome.SessionManager.EndSessionDialog.xml
+flashback-dbus-display-config.h:
+flashback-dbus-display-config.c: org.gnome.Mutter.DisplayConfig.xml
+ $(AM_V_GEN) gdbus-codegen \
+ --interface-prefix org.gnome.Mutter \
+ --c-namespace Flashback \
+ --generate-c-code flashback-dbus-display-config \
+ $(srcdir)/org.gnome.Mutter.DisplayConfig.xml
+
+flashback-dbus-idle-monitor.h:
+flashback-dbus-idle-monitor.c: org.gnome.Mutter.IdleMonitor.xml
+ $(AM_V_GEN) gdbus-codegen \
+ --interface-prefix org.gnome.Mutter \
+ --c-namespace Flashback \
+ --generate-c-code flashback-dbus-idle-monitor \
+ --c-generate-object-manager \
+ $(srcdir)/org.gnome.Mutter.IdleMonitor.xml
+
flashback-resources.c: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)
--generate-dependencies $(srcdir)/flashback.gresource.xml)
$(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name flashback
$<
flashback-resources.h: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)
--generate-dependencies $(srcdir)/flashback.gresource.xml)
@@ -46,12 +63,18 @@ flashback-resources.h: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES)
BUILT_SOURCES = \
flashback-end-session-dialog-generated.h \
flashback-end-session-dialog-generated.c \
+ flashback-dbus-display-config.h \
+ flashback-dbus-display-config.c \
+ flashback-dbus-idle-monitor.h \
+ flashback-dbus-idle-monitor.c \
flashback-resources.c \
flashback-resources.h
EXTRA_DIST = \
$(desktop_in_files) \
org.gnome.SessionManager.EndSessionDialog.xml \
+ org.gnome.Mutter.DisplayConfig.xml \
+ org.gnome.Mutter.IdleMonitor.xml \
flashback.gresource.xml \
flashback-inhibit-dialog.ui
diff --git a/gnome-flashback/org.gnome.Mutter.DisplayConfig.xml
b/gnome-flashback/org.gnome.Mutter.DisplayConfig.xml
new file mode 100644
index 0000000..06449c3
--- /dev/null
+++ b/gnome-flashback/org.gnome.Mutter.DisplayConfig.xml
@@ -0,0 +1,293 @@
+<!DOCTYPE node PUBLIC
+'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
+'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
+<node>
+ <!--
+ org.gnome.Mutter.DisplayConfig:
+ @short_description: display configuration interface
+
+ This interface is used by mutter and gnome-settings-daemon
+ to apply multiple monitor configuration.
+ -->
+
+ <interface name="org.gnome.Mutter.DisplayConfig">
+
+ <!--
+ GetResources:
+ @serial: configuration serial
+ @crtcs: available CRTCs
+ @outputs: available outputs
+ @modes: available modes
+ @max_screen_width:
+ @max_screen_height:
+
+ Retrieves the current layout of the hardware.
+
+ @serial is an unique identifier representing the current state
+ of the screen. It must be passed back to ApplyConfiguration()
+ and will be increased for every configuration change (so that
+ mutter can detect that the new configuration is based on old
+ state).
+
+ A CRTC (CRT controller) is a logical monitor, ie a portion
+ of the compositor coordinate space. It might correspond
+ to multiple monitors, when in clone mode, but not that
+ it is possible to implement clone mode also by setting different
+ CRTCs to the same coordinates.
+
+ The number of CRTCs represent the maximum number of monitors
+ that can be set to expand and it is a HW constraint; if more
+ monitors are connected, then necessarily some will clone. This
+ is complementary to the concept of the encoder (not exposed in
+ the API), which groups outputs that necessarily will show the
+ same image (again a HW constraint).
+
+ A CRTC is represented by a DBus structure with the following
+ layout:
+ * u ID: the ID in the API of this CRTC
+ * x winsys_id: the low-level ID of this CRTC (which might
+ be a XID, a KMS handle or something entirely
+ different)
+ * i x, y, width, height: the geometry of this CRTC
+ (might be invalid if the CRTC is not in
+ use)
+ * i current_mode: the current mode of the CRTC, or -1 if this
+ CRTC is not used
+ Note: the size of the mode will always correspond
+ to the width and height of the CRTC
+ * u current_transform: the current transform (espressed according
+ to the wayland protocol)
+ * au transforms: all possible transforms
+ * a{sv} properties: other high-level properties that affect this
+ CRTC; they are not necessarily reflected in
+ the hardware.
+ No property is specified in this version of the API.
+
+ Note: all geometry information refers to the untransformed
+ display.
+
+ An output represents a physical screen, connected somewhere to
+ the computer. Floating connectors are not exposed in the API.
+ An output is a DBus struct with the following fields:
+ * u ID: the ID in the API
+ * x winsys_id: the low-level ID of this output (XID or KMS handle)
+ * i current_crtc: the CRTC that is currently driving this output,
+ or -1 if the output is disabled
+ * au possible_crtcs: all CRTCs that can control this output
+ * s name: the name of the connector to which the output is attached
+ (like VGA1 or HDMI)
+ * au modes: valid modes for this output
+ * au clones: valid clones for this output, ie other outputs that
+ can be assigned the same CRTC as this one; if you
+ want to mirror two outputs that don't have each other
+ in the clone list, you must configure two different
+ CRTCs for the same geometry
+ * a{sv} properties: other high-level properties that affect this
+ output; they are not necessarily reflected in
+ the hardware.
+ Known properties:
+ - "vendor" (s): (readonly) the human readable name
+ of the manufacturer
+ - "product" (s): (readonly) the human readable name
+ of the display model
+ - "serial" (s): (readonly) the serial number of this
+ particular hardware part
+ - "display-name" (s): (readonly) a human readable name
+ of this output, to be shown in the UI
+ - "backlight" (i): (readonly, use the specific interface)
+ the backlight value as a percentage
+ (-1 if not supported)
+ - "primary" (b): whether this output is primary
+ or not
+ - "presentation" (b): whether this output is
+ for presentation only
+ Note: properties might be ignored if not consistenly
+ applied to all outputs in the same clone group. In
+ general, it's expected that presentation or primary
+ outputs will not be cloned.
+
+ A mode represents a set of parameters that are applied to
+ each output, such as resolution and refresh rate. It is a separate
+ object so that it can be referenced by CRTCs and outputs.
+ Multiple outputs in the same CRTCs must all have the same mode.
+ A mode is exposed as:
+ * u ID: the ID in the API
+ * x winsys_id: the low-level ID of this mode
+ * u width, height: the resolution
+ * d frequency: refresh rate
+
+ Output and modes are read-only objects (except for output properties),
+ they can change only in accordance to HW changes (such as hotplugging
+ a monitor), while CRTCs can be changed with ApplyConfiguration().
+
+ XXX: actually, if you insist enough, you can add new modes
+ through xrandr command line or the KMS API, overriding what the
+ kernel driver and the EDID say.
+ Usually, it only matters with old cards with broken drivers, or
+ old monitors with broken EDIDs, but it happens more often with
+ projectors (if for example the kernel driver doesn't add the
+ 640x480 - 800x600 - 1024x768 default modes). Probably something
+ that we need to handle in mutter anyway.
+ -->
+ <method name="GetResources">
+ <arg name="serial" direction="out" type="u" />
+ <arg name="crtcs" direction="out" type="a(uxiiiiiuaua{sv})" />
+ <arg name="outputs" direction="out" type="a(uxiausauaua{sv})" />
+ <arg name="modes" direction="out" type="a(uxuud)" />
+ <arg name="max_screen_width" direction="out" type="i" />
+ <arg name="max_screen_height" direction="out" type="i" />
+ </method>
+
+ <!--
+ ApplyConfiguration:
+ @serial: configuration serial
+ @persistent: whether this configuration should be saved on disk
+ @crtcs: new data for CRTCs
+ @outputs: new data for outputs
+
+ Applies the requested configuration changes.
+
+ @serial must match the serial from the last GetResources() call,
+ or org.freedesktop.DBus.AccessDenied will be generated.
+
+ If @persistent is true, mutter will attempt to replicate this
+ configuration the next time this HW layout appears.
+
+ @crtcs represents the new logical configuration, as a list
+ of structures containing:
+ - u ID: the API ID from the corresponding GetResources() call
+ - i new_mode: the API ID of the new mode to configure the CRTC
+ with, or -1 if the CRTC should be disabled
+ - i x, y: the new coordinates of the top left corner
+ the geometry will be completed with the size information
+ from @new_mode
+ - u transform: the desired transform
+ - au outputs: the API ID of outputs that should be assigned to
+ this CRTC
+ - a{sv} properties: properties whose value should be changed
+
+ Note: CRTCs not referenced in the array will be disabled.
+
+ @outputs represent the output property changes as:
+ - u ID: the API ID of the output to change
+ - a{sv} properties: properties whose value should be changed
+
+ Note: both for CRTCs and outputs, properties not included in
+ the dictionary will not be changed.
+
+ Note: unrecognized properties will have no effect, but if the
+ configuration change succeeds the property will be reported
+ by the next GetResources() call, and if @persistent is true,
+ it will also be saved to disk.
+
+ If the configuration is invalid according to the previous
+ GetResources() call, for example because a CRTC references
+ an output it cannot drive, or not all outputs support the
+ chosen mode, the error org.freedesktop.DBus.InvalidArgs will
+ be generated.
+
+ If the configuration cannot be applied for any other reason
+ (eg. the screen size would exceed texture limits), the error
+ org.freedesktop.DBus.Error.LimitsExceeded will be generated.
+ -->
+ <method name="ApplyConfiguration">
+ <arg name="serial" direction="in" type="u" />
+ <arg name="persistent" direction="in" type="b" />
+ <arg name="crtcs" direction="in" type="a(uiiiuaua{sv})" />
+ <arg name="outputs" direction="in" type="a(ua{sv})" />
+ </method>
+
+ <!--
+ ChangeBacklight:
+ @serial: configuration serial
+ @output: the API id of the output
+ @value: the new backlight value
+
+ Changes the backlight of @output to @value, which is
+ expressed as a percentage and rounded to the HW limits.
+
+ Returns the new value after rounding.
+ -->
+ <method name="ChangeBacklight">
+ <arg name="serial" direction="in" type="u" />
+ <arg name="output" direction="in" type="u" />
+ <arg name="value" direction="in" type="i" />
+ <arg name="new_value" direction="out" type="i" />
+ </method>
+
+ <!--
+ GetCrtcGamma:
+ @serial: configuration serial
+ @crtc: API id of the crtc
+ @red: red gamma ramp
+ @green: green gamma ramp
+ @blue: blue gamma ramp
+
+ Requests the current gamma ramps of @crtc.
+ -->
+ <method name="GetCrtcGamma">
+ <arg name="serial" direction="in" type="u" />
+ <arg name="crtc" direction="in" type="u" />
+ <arg name="red" direction="out" type="aq" />
+ <arg name="green" direction="out" type="aq" />
+ <arg name="blue" direction="out" type="aq" />
+ </method>
+
+ <!--
+ SetCrtcGamma:
+ @serial: configuration serial
+ @crtc: API id of the crtc
+ @red: red gamma ramp
+ @green: green gamma ramp
+ @blue: blue gamma ramp
+
+ Changes the gamma ramps of @crtc.
+ -->
+ <method name="SetCrtcGamma">
+ <arg name="serial" direction="in" type="u" />
+ <arg name="crtc" direction="in" type="u" />
+ <arg name="red" direction="in" type="aq" />
+ <arg name="green" direction="in" type="aq" />
+ <arg name="blue" direction="in" type="aq" />
+ </method>
+
+ <!--
+ PowerSaveMode:
+
+ Contains the current power saving mode for the screen, and
+ allows changing it.
+
+ Possible values:
+ - 0: on
+ - 1: standby
+ - 2: suspend
+ - 3: off
+ - -1: unknown (unsupported)
+
+ A client should not attempt to change the powersave mode
+ from -1 (unknown) to any other value, and viceversa.
+ Note that the actual effects of the different values
+ depend on the hardware and the kernel driver in use, and
+ it's perfectly possible that all values different than on
+ have the same effect.
+ Also, setting the PowerSaveMode to 3 (off) may or may
+ not have the same effect as disabling all outputs by
+ setting no CRTC on them with ApplyConfiguration(), and
+ may or may not cause a configuration change.
+
+ Also note that this property might become out of date
+ if changed through different means (for example using the
+ XRandR interface directly).
+ -->
+ <property name="PowerSaveMode" type="i" access="readwrite" />
+
+ <!--
+ MonitorsChanged:
+
+ The signal is emitted every time the screen configuration
+ changes.
+ The client should then call GetResources() to read the new layout.
+ -->
+ <signal name="MonitorsChanged" />
+ </interface>
+</node>
diff --git a/gnome-flashback/org.gnome.Mutter.IdleMonitor.xml
b/gnome-flashback/org.gnome.Mutter.IdleMonitor.xml
new file mode 100644
index 0000000..34a26dd
--- /dev/null
+++ b/gnome-flashback/org.gnome.Mutter.IdleMonitor.xml
@@ -0,0 +1,35 @@
+<!DOCTYPE node PUBLIC
+'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
+'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
+<node>
+ <!--
+ org.gnome.Mutter.IdleMonitor:
+ @short_description: idle monitor interface
+
+ This interface is used by gnome-desktop to implement
+ user activity monitoring.
+ -->
+
+ <interface name="org.gnome.Mutter.IdleMonitor">
+ <method name="GetIdletime">
+ <arg name="idletime" direction="out" type="t"/>
+ </method>
+
+ <method name="AddIdleWatch">
+ <arg name="interval" direction="in" type="t" />
+ <arg name="id" direction="out" type="u" />
+ </method>
+
+ <method name="AddUserActiveWatch">
+ <arg name="id" direction="out" type="u" />
+ </method>
+
+ <method name="RemoveWatch">
+ <arg name="id" direction="in" type="u" />
+ </method>
+
+ <signal name="WatchFired">
+ <arg name="id" direction="out" type="u" />
+ </signal>
+ </interface>
+</node>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]