summaryrefslogtreecommitdiff
path: root/src/backends/meta-monitor-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/meta-monitor-manager.c')
-rw-r--r--src/backends/meta-monitor-manager.c53
1 files changed, 46 insertions, 7 deletions
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index c4ed24522..2d898c757 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -95,7 +95,13 @@ static gfloat transform_matrices[][6] = {
static int signals[SIGNALS_LAST];
-G_DEFINE_TYPE (MetaMonitorManager, meta_monitor_manager, G_TYPE_OBJECT)
+typedef struct _MetaMonitorManagerPrivate
+{
+ MetaPowerSave power_save_mode;
+} MetaMonitorManagerPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (MetaMonitorManager, meta_monitor_manager,
+ G_TYPE_OBJECT)
static void initialize_dbus_interface (MetaMonitorManager *manager);
static void monitor_manager_setup_dbus_config_handlers (MetaMonitorManager *manager);
@@ -107,6 +113,9 @@ meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
static MetaMonitor *
meta_monitor_manager_get_active_monitor (MetaMonitorManager *manager);
+static void
+meta_monitor_manager_real_read_current_state (MetaMonitorManager *manager);
+
MetaBackend *
meta_monitor_manager_get_backend (MetaMonitorManager *manager)
{
@@ -329,11 +338,24 @@ meta_monitor_manager_rebuild_logical_monitors_derived (MetaMonitorManager *manag
primary_logical_monitor);
}
+void
+meta_monitor_manager_power_save_mode_changed (MetaMonitorManager *manager,
+ MetaPowerSave mode)
+{
+ MetaMonitorManagerPrivate *priv =
+ meta_monitor_manager_get_instance_private (manager);
+
+ priv->power_save_mode = mode;
+ g_signal_emit (manager, signals[POWER_SAVE_MODE_CHANGED], 0);
+}
+
static void
power_save_mode_changed (MetaMonitorManager *manager,
GParamSpec *pspec,
gpointer user_data)
{
+ MetaMonitorManagerPrivate *priv =
+ meta_monitor_manager_get_instance_private (manager);
MetaMonitorManagerClass *klass;
int mode = meta_dbus_display_config_get_power_save_mode (manager->display_config);
@@ -341,7 +363,7 @@ power_save_mode_changed (MetaMonitorManager *manager,
return;
/* If DPMS is unsupported, force the property back. */
- if (manager->power_save_mode == META_POWER_SAVE_UNSUPPORTED)
+ if (priv->power_save_mode == META_POWER_SAVE_UNSUPPORTED)
{
meta_dbus_display_config_set_power_save_mode (manager->display_config, META_POWER_SAVE_UNSUPPORTED);
return;
@@ -351,9 +373,7 @@ power_save_mode_changed (MetaMonitorManager *manager,
if (klass->set_power_save_mode)
klass->set_power_save_mode (manager, mode);
- manager->power_save_mode = mode;
-
- g_signal_emit (manager, signals[POWER_SAVE_MODE_CHANGED], 0);
+ meta_monitor_manager_power_save_mode_changed (manager, mode);
}
void
@@ -855,6 +875,7 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
object_class->set_property = meta_monitor_manager_set_property;
klass->read_edid = meta_monitor_manager_real_read_edid;
+ klass->read_current_state = meta_monitor_manager_real_read_current_state;
signals[MONITORS_CHANGED] =
g_signal_new ("monitors-changed",
@@ -2684,6 +2705,15 @@ meta_monitor_manager_get_screen_size (MetaMonitorManager *manager,
*height = manager->screen_height;
}
+MetaPowerSave
+meta_monitor_manager_get_power_save_mode (MetaMonitorManager *manager)
+{
+ MetaMonitorManagerPrivate *priv =
+ meta_monitor_manager_get_instance_private (manager);
+
+ return priv->power_save_mode;
+}
+
static void
rebuild_monitors (MetaMonitorManager *manager)
{
@@ -2760,8 +2790,8 @@ meta_monitor_manager_is_transform_handled (MetaMonitorManager *manager,
return manager_class->is_transform_handled (manager, crtc, transform);
}
-void
-meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
+static void
+meta_monitor_manager_real_read_current_state (MetaMonitorManager *manager)
{
GList *l;
@@ -2782,6 +2812,15 @@ meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
rebuild_monitors (manager);
}
+void
+meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
+{
+ MetaMonitorManagerClass *manager_class =
+ META_MONITOR_MANAGER_GET_CLASS (manager);
+
+ manager_class->read_current_state (manager);
+}
+
static void
meta_monitor_manager_notify_monitors_changed (MetaMonitorManager *manager)
{