monitor: Add API to get monitor mode from spec

https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
Jonas Ådahl 2016-12-21 13:03:35 +08:00
parent 536ae8430b
commit 4c1b48d0cc
2 changed files with 32 additions and 0 deletions

View File

@ -539,6 +539,35 @@ meta_monitor_get_spec (MetaMonitor *monitor)
return priv->spec; return priv->spec;
} }
static gboolean
meta_monitor_mode_spec_equals (MetaMonitorModeSpec *monitor_mode_spec,
MetaMonitorModeSpec *other_monitor_mode_spec)
{
return (monitor_mode_spec->width == other_monitor_mode_spec->width &&
monitor_mode_spec->height == other_monitor_mode_spec->height &&
(monitor_mode_spec->refresh_rate ==
other_monitor_mode_spec->refresh_rate));
}
MetaMonitorMode *
meta_monitor_get_mode_from_spec (MetaMonitor *monitor,
MetaMonitorModeSpec *monitor_mode_spec)
{
MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor);
GList *l;
for (l = priv->modes; l; l = l->next)
{
MetaMonitorMode *monitor_mode = l->data;
if (meta_monitor_mode_spec_equals (monitor_mode_spec,
&monitor_mode->spec))
return monitor_mode;
}
return NULL;
}
MetaMonitorMode * MetaMonitorMode *
meta_monitor_get_preferred_mode (MetaMonitor *monitor) meta_monitor_get_preferred_mode (MetaMonitor *monitor)
{ {

View File

@ -109,6 +109,9 @@ const char * meta_monitor_get_product (MetaMonitor *monitor);
uint32_t meta_monitor_tiled_get_tile_group_id (MetaMonitorTiled *monitor_tiled); uint32_t meta_monitor_tiled_get_tile_group_id (MetaMonitorTiled *monitor_tiled);
MetaMonitorMode * meta_monitor_get_mode_from_spec (MetaMonitor *monitor,
MetaMonitorModeSpec *monitor_mode_spec);
MetaMonitorMode * meta_monitor_get_preferred_mode (MetaMonitor *monitor); MetaMonitorMode * meta_monitor_get_preferred_mode (MetaMonitor *monitor);
GList * meta_monitor_get_modes (MetaMonitor *monitor); GList * meta_monitor_get_modes (MetaMonitor *monitor);