backends: Move MonitorManager creation to MetaBackend as well

This commit is contained in:
Jasper St. Pierre
2014-04-21 19:41:11 -04:00
parent 48dc544bef
commit c44b1d730d
9 changed files with 57 additions and 58 deletions

View File

@ -42,14 +42,32 @@ meta_get_backend (void)
return _backend;
}
G_DEFINE_ABSTRACT_TYPE (MetaBackend, meta_backend, G_TYPE_OBJECT);
struct _MetaBackendPrivate
{
MetaMonitorManager *monitor_manager;
};
typedef struct _MetaBackendPrivate MetaBackendPrivate;
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MetaBackend, meta_backend, G_TYPE_OBJECT);
static void
meta_backend_constructed (GObject *object)
{
MetaBackend *backend = META_BACKEND (object);
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
priv->monitor_manager = META_BACKEND_GET_CLASS (backend)->create_monitor_manager (backend);
}
static void
meta_backend_finalize (GObject *object)
{
MetaBackend *backend = META_BACKEND (object);
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
int i;
g_clear_object (&priv->monitor_manager);
for (i = 0; i <= backend->device_id_max; i++)
{
if (backend->device_monitors[i])
@ -64,6 +82,7 @@ meta_backend_class_init (MetaBackendClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->constructed = meta_backend_constructed;
object_class->finalize = meta_backend_finalize;
}
@ -105,6 +124,14 @@ meta_backend_get_idle_monitor (MetaBackend *backend,
return backend->device_monitors[device_id];
}
MetaMonitorManager *
meta_backend_get_monitor_manager (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
return priv->monitor_manager;
}
static GType
get_backend_type (void)
{