[mutter] monitor-config-store: Move config verification to config manager
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] monitor-config-store: Move config verification to config manager
- Date: Fri, 7 Apr 2017 14:33:39 +0000 (UTC)
commit b464004bb3d3c196f3517f3dcb5b4d59aa023113
Author: Jonas Ådahl <jadahl gmail com>
Date: Wed Feb 8 10:31:32 2017 +0800
monitor-config-store: Move config verification to config manager
This way we can re-use it for example when verifying configurations
from D-Bus.
https://bugzilla.gnome.org/show_bug.cgi?id=777732
src/backends/meta-monitor-config-manager.c | 142 +++++++++++++++++++++++++
src/backends/meta-monitor-config-manager.h | 15 +++
src/backends/meta-monitor-config-store.c | 154 +--------------------------
3 files changed, 163 insertions(+), 148 deletions(-)
---
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
index 132f714..8533963 100644
--- a/src/backends/meta-monitor-config-manager.c
+++ b/src/backends/meta-monitor-config-manager.c
@@ -807,3 +807,145 @@ meta_monitors_config_class_init (MetaMonitorsConfigClass *klass)
object_class->finalize = meta_monitors_config_finalize;
}
+
+gboolean
+meta_verify_monitor_mode_spec (MetaMonitorModeSpec *monitor_mode_spec,
+ GError **error)
+{
+ if (monitor_mode_spec->width > 0 &&
+ monitor_mode_spec->height > 0 &&
+ monitor_mode_spec->refresh_rate > 0.0f)
+ {
+ return TRUE;
+ }
+ else
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Monitor mode invalid");
+ return FALSE;
+ }
+}
+
+gboolean
+meta_verify_monitor_spec (MetaMonitorSpec *monitor_spec,
+ GError **error)
+{
+ if (monitor_spec->connector &&
+ monitor_spec->vendor &&
+ monitor_spec->product &&
+ monitor_spec->serial)
+ {
+ return TRUE;
+ }
+ else
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Monitor spec incomplete");
+ return FALSE;
+ }
+}
+
+gboolean
+meta_verify_monitor_config (MetaMonitorConfig *monitor_config,
+ GError **error)
+{
+ if (monitor_config->monitor_spec && monitor_config->mode_spec)
+ {
+ return TRUE;
+ }
+ else
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Monitor config incomplete");
+ return FALSE;
+ }
+}
+
+gboolean
+meta_verify_logical_monitor_config (MetaLogicalMonitorConfig *logical_monitor_config,
+ GError **error)
+{
+ if (logical_monitor_config->scale < 1)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Invalid logical monitor config scale %d",
+ logical_monitor_config->scale);
+ return FALSE;
+ }
+
+ if (logical_monitor_config->layout.x < 0 ||
+ logical_monitor_config->layout.y < 0)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Invalid logical monitor position (%d, %d)",
+ logical_monitor_config->layout.x,
+ logical_monitor_config->layout.y);
+ return FALSE;
+ }
+
+ if (!logical_monitor_config->monitor_configs)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Logical monitor is empty");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+meta_verify_monitors_config (MetaMonitorsConfig *config,
+ GError **error)
+{
+ gboolean has_primary;
+ GList *region;
+ GList *l;
+
+ if (!config->logical_monitor_configs)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Monitors config incomplete");
+ return FALSE;
+ }
+
+ region = NULL;
+ has_primary = FALSE;
+ for (l = config->logical_monitor_configs; l; l = l->next)
+ {
+ MetaLogicalMonitorConfig *logical_monitor_config = l->data;
+
+ if (meta_rectangle_overlaps_with_region (region,
+ &logical_monitor_config->layout))
+ {
+ g_list_free (region);
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Logical monitors overlap");
+ return FALSE;
+ }
+
+ if (has_primary && logical_monitor_config->is_primary)
+ {
+ g_list_free (region);
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Config contains multiple primary logical monitors");
+ return FALSE;
+ }
+ else if (logical_monitor_config->is_primary)
+ {
+ has_primary = TRUE;
+ }
+
+ region = g_list_prepend (region, &logical_monitor_config->layout);
+ }
+
+ g_list_free (region);
+
+ if (!has_primary)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Config is missing primary logical");
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/src/backends/meta-monitor-config-manager.h b/src/backends/meta-monitor-config-manager.h
index 418e7a2..574aaf9 100644
--- a/src/backends/meta-monitor-config-manager.h
+++ b/src/backends/meta-monitor-config-manager.h
@@ -98,4 +98,19 @@ void meta_logical_monitor_config_free (MetaLogicalMonitorConfig *logical_monitor
void meta_monitor_config_free (MetaMonitorConfig *monitor_config);
+gboolean meta_verify_monitor_mode_spec (MetaMonitorModeSpec *monitor_mode_spec,
+ GError **error);
+
+gboolean meta_verify_monitor_spec (MetaMonitorSpec *monitor_spec,
+ GError **error);
+
+gboolean meta_verify_monitor_config (MetaMonitorConfig *monitor_config,
+ GError **error);
+
+gboolean meta_verify_logical_monitor_config (MetaLogicalMonitorConfig *logical_monitor_config,
+ GError **error);
+
+gboolean meta_verify_monitors_config (MetaMonitorsConfig *config,
+ GError **error);
+
#endif /* META_MONITOR_CONFIG_MANAGER_H */
diff --git a/src/backends/meta-monitor-config-store.c b/src/backends/meta-monitor-config-store.c
index 4ce8dbb..40460ae 100644
--- a/src/backends/meta-monitor-config-store.c
+++ b/src/backends/meta-monitor-config-store.c
@@ -27,7 +27,6 @@
#include <string.h>
#include "backends/meta-monitor-config-manager.h"
-#include "core/boxes-private.h"
/*
* Example configuration:
@@ -356,91 +355,6 @@ handle_start_element (GMarkupParseContext *context,
}
static gboolean
-verify_monitor_spec (MetaMonitorSpec *monitor_spec,
- GError **error)
-{
- if (monitor_spec->connector &&
- monitor_spec->vendor &&
- monitor_spec->product &&
- monitor_spec->serial)
- {
- return TRUE;
- }
- else
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Monitor spec incomplete");
- return FALSE;
- }
-}
-
-static gboolean
-verify_monitor_mode (MetaMonitorModeSpec *monitor_mode_spec,
- GError **error)
-{
- if (monitor_mode_spec->width > 0 &&
- monitor_mode_spec->height > 0 &&
- monitor_mode_spec->refresh_rate > 0.0f)
- {
- return TRUE;
- }
- else
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Monitor mode invalid");
- return FALSE;
- }
-}
-
-static gboolean
-verify_monitor_config (MetaMonitorConfig *monitor_config,
- GError **error)
-{
- if (monitor_config->monitor_spec && monitor_config->mode_spec)
- {
- return TRUE;
- }
- else
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Monitor config incomplete");
- return FALSE;
- }
-}
-
-static gboolean
-verify_logical_monitor_config (MetaLogicalMonitorConfig *logical_monitor_config,
- GError **error)
-{
- if (logical_monitor_config->scale < 1)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Invalid logical monitor config scale %d",
- logical_monitor_config->scale);
- return FALSE;
- }
-
- if (logical_monitor_config->layout.x < 0 ||
- logical_monitor_config->layout.y < 0)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Invalid logical monitor position (%d, %d)",
- logical_monitor_config->layout.x,
- logical_monitor_config->layout.y);
- return FALSE;
- }
-
- if (!logical_monitor_config->monitor_configs)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Logical monitor is empty");
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
derive_logical_monitor_layout (MetaLogicalMonitorConfig *logical_monitor_config,
GError **error)
{
@@ -471,63 +385,6 @@ derive_logical_monitor_layout (MetaLogicalMonitorConfig *logical_monitor_config,
return TRUE;
}
-static gboolean
-verify_config (MetaMonitorsConfig *config,
- GError **error)
-{
- gboolean has_primary;
- GList *region;
- GList *l;
-
- if (!config->logical_monitor_configs)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Monitors config incomplete");
- return FALSE;
- }
-
- region = NULL;
- has_primary = FALSE;
- for (l = config->logical_monitor_configs; l; l = l->next)
- {
- MetaLogicalMonitorConfig *logical_monitor_config = l->data;
-
- if (meta_rectangle_overlaps_with_region (region,
- &logical_monitor_config->layout))
- {
- g_list_free (region);
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Logical monitors overlap");
- return FALSE;
- }
-
- if (has_primary && logical_monitor_config->is_primary)
- {
- g_list_free (region);
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Config contains multiple primary logical monitors");
- return FALSE;
- }
- else if (logical_monitor_config->is_primary)
- {
- has_primary = TRUE;
- }
-
- region = g_list_prepend (region, &logical_monitor_config->layout);
- }
-
- g_list_free (region);
-
- if (!has_primary)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Config is missing primary logical");
- return FALSE;
- }
-
- return TRUE;
-}
-
static void
handle_end_element (GMarkupParseContext *context,
const char *element_name,
@@ -561,7 +418,7 @@ handle_end_element (GMarkupParseContext *context,
{
g_assert (g_str_equal (element_name, "monitorspec"));
- if (!verify_monitor_spec (parser->current_monitor_spec, error))
+ if (!meta_verify_monitor_spec (parser->current_monitor_spec, error))
return;
parser->current_monitor_config->monitor_spec =
@@ -584,7 +441,8 @@ handle_end_element (GMarkupParseContext *context,
{
g_assert (g_str_equal (element_name, "mode"));
- if (!verify_monitor_mode (parser->current_monitor_mode_spec, error))
+ if (!meta_verify_monitor_mode_spec (parser->current_monitor_mode_spec,
+ error))
return;
parser->current_monitor_config->mode_spec =
@@ -609,7 +467,7 @@ handle_end_element (GMarkupParseContext *context,
g_assert (g_str_equal (element_name, "monitor"));
- if (!verify_monitor_config (parser->current_monitor_config, error))
+ if (!meta_verify_monitor_config (parser->current_monitor_config, error))
return;
logical_monitor_config = parser->current_logical_monitor_config;
@@ -633,7 +491,7 @@ handle_end_element (GMarkupParseContext *context,
if (logical_monitor_config->scale == 0)
logical_monitor_config->scale = 1;
- if (!verify_logical_monitor_config (logical_monitor_config, error))
+ if (!meta_verify_logical_monitor_config (logical_monitor_config, error))
return;
if (!derive_logical_monitor_layout (logical_monitor_config, error))
@@ -657,7 +515,7 @@ handle_end_element (GMarkupParseContext *context,
config =
meta_monitors_config_new (parser->current_logical_monitor_configs);
- if (!verify_config (config, error))
+ if (!meta_verify_monitors_config (config, error))
{
g_object_unref (config);
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]