mirror of
https://github.com/brl/mutter.git
synced 2025-02-20 15:04:09 +00:00
monitor-manager: Add supported scales to D-Bus API
Let the configuring client know what scales are supported by the display server. https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
parent
9e8ee491e6
commit
9003a42df3
@ -288,6 +288,17 @@ meta_monitor_manager_calculate_monitor_mode_scale (MetaMonitorManager *manager,
|
|||||||
monitor_mode);
|
monitor_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_get_supported_scales (MetaMonitorManager *manager,
|
||||||
|
float **scales,
|
||||||
|
int *n_scales)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerClass *manager_class =
|
||||||
|
META_MONITOR_MANAGER_GET_CLASS (manager);
|
||||||
|
|
||||||
|
manager_class->get_supported_scales (manager, scales, n_scales);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_ensure_initial_config (MetaMonitorManager *manager)
|
meta_monitor_manager_ensure_initial_config (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
@ -1194,8 +1205,12 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
|
|||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
||||||
GVariantBuilder monitors_builder;
|
GVariantBuilder monitors_builder;
|
||||||
GVariantBuilder logical_monitors_builder;
|
GVariantBuilder logical_monitors_builder;
|
||||||
|
GVariantBuilder supported_scales_builder;
|
||||||
GVariantBuilder max_screen_size_builder;
|
GVariantBuilder max_screen_size_builder;
|
||||||
GList *l;
|
GList *l;
|
||||||
|
float *supported_scales;
|
||||||
|
int n_supported_scales;
|
||||||
|
int i;
|
||||||
|
|
||||||
g_variant_builder_init (&monitors_builder,
|
g_variant_builder_init (&monitors_builder,
|
||||||
G_VARIANT_TYPE (MONITORS_FORMAT));
|
G_VARIANT_TYPE (MONITORS_FORMAT));
|
||||||
@ -1294,6 +1309,13 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_variant_builder_init (&supported_scales_builder, G_VARIANT_TYPE ("ad"));
|
||||||
|
meta_monitor_manager_get_supported_scales (manager,
|
||||||
|
&supported_scales,
|
||||||
|
&n_supported_scales);
|
||||||
|
for (i = 0; i < n_supported_scales; i++)
|
||||||
|
g_variant_builder_add (&supported_scales_builder, "d", supported_scales[i]);
|
||||||
|
|
||||||
g_variant_builder_init (&max_screen_size_builder,
|
g_variant_builder_init (&max_screen_size_builder,
|
||||||
G_VARIANT_TYPE ("(ii)"));
|
G_VARIANT_TYPE ("(ii)"));
|
||||||
g_variant_builder_add (&max_screen_size_builder, "i",
|
g_variant_builder_add (&max_screen_size_builder, "i",
|
||||||
@ -1307,6 +1329,7 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
|
|||||||
manager->serial,
|
manager->serial,
|
||||||
g_variant_builder_end (&monitors_builder),
|
g_variant_builder_end (&monitors_builder),
|
||||||
g_variant_builder_end (&logical_monitors_builder),
|
g_variant_builder_end (&logical_monitors_builder),
|
||||||
|
g_variant_builder_end (&supported_scales_builder),
|
||||||
g_variant_builder_end (&max_screen_size_builder));
|
g_variant_builder_end (&max_screen_size_builder));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -296,6 +296,7 @@
|
|||||||
@serial: configuration serial
|
@serial: configuration serial
|
||||||
@monitors: available monitors
|
@monitors: available monitors
|
||||||
@logical_monitors: current logical monitor configuration
|
@logical_monitors: current logical monitor configuration
|
||||||
|
@supported_scales: scaling factors supported by the display server
|
||||||
@max_screen_size: the maximum screen size
|
@max_screen_size: the maximum screen size
|
||||||
|
|
||||||
@monitors represent connected physical monitors
|
@monitors represent connected physical monitors
|
||||||
@ -340,11 +341,16 @@
|
|||||||
|
|
||||||
@max_screen_size represents the maximum size the screen may have, or 0x0 if no
|
@max_screen_size represents the maximum size the screen may have, or 0x0 if no
|
||||||
such limit is known.
|
such limit is known.
|
||||||
|
|
||||||
|
|
||||||
|
@supported_scales is an ordered list of floating point numbers representing
|
||||||
|
scale factors of logical monitors supported by the display server.
|
||||||
-->
|
-->
|
||||||
<method name="GetCurrentState">
|
<method name="GetCurrentState">
|
||||||
<arg name="serial" direction="out" type="u" />
|
<arg name="serial" direction="out" type="u" />
|
||||||
<arg name="monitors" direction="out" type="a((ssss)a(iiddu)a{sv})" />
|
<arg name="monitors" direction="out" type="a((ssss)a(iiddu)a{sv})" />
|
||||||
<arg name="logical_monitors" direction="out" type="a(iiiia(ssss)dba{sv})" />
|
<arg name="logical_monitors" direction="out" type="a(iiiia(ssss)dba{sv})" />
|
||||||
|
<arg name="supported_scales" direction="out" type="ad" />
|
||||||
<arg name="max_screen_size" direction="out" type="(ii)" />
|
<arg name="max_screen_size" direction="out" type="(ii)" />
|
||||||
</method>
|
</method>
|
||||||
</interface>
|
</interface>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user