[gnome-flashback] backends: add GError parameter to create_monitor_manager



commit ec25e0d7f87432e096433099a0bee30879185cd2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sun Jul 7 12:05:26 2019 +0300

    backends: add GError parameter to create_monitor_manager
    
    Based on mutter commit:
    https://gitlab.gnome.org/GNOME/mutter/commit/16a6aef5a7a79f189701

 backends/gf-backend-native.c      | 12 +++++++-----
 backends/gf-backend-private.h     |  7 ++++---
 backends/gf-backend-x11-cm.c      |  5 +++--
 backends/gf-backend-x11-nested.c  |  5 +++--
 backends/gf-backend.c             | 11 +++++++----
 backends/gf-monitor-manager-kms.c | 24 ++++++++++++++++++++++--
 6 files changed, 46 insertions(+), 18 deletions(-)
---
diff --git a/backends/gf-backend-native.c b/backends/gf-backend-native.c
index a1e4591..b09cbb0 100644
--- a/backends/gf-backend-native.c
+++ b/backends/gf-backend-native.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2014 Red Hat
- * Copyright (C) 2017 Alberts Muktupāvels
+ * Copyright (C) 2017-2019 Alberts Muktupāvels
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -41,11 +41,13 @@ gf_backend_native_post_init (GfBackend *backend)
 }
 
 static GfMonitorManager *
-gf_backend_native_create_monitor_manager (GfBackend *backend)
+gf_backend_native_create_monitor_manager (GfBackend  *backend,
+                                          GError    **error)
 {
-  return g_object_new (GF_TYPE_MONITOR_MANAGER_KMS,
-                       "backend", backend,
-                       NULL);
+  return g_initable_new (GF_TYPE_MONITOR_MANAGER_KMS,
+                         NULL, error,
+                         "backend", backend,
+                         NULL);
 }
 
 static void
diff --git a/backends/gf-backend-private.h b/backends/gf-backend-private.h
index febfb07..5bfa1df 100644
--- a/backends/gf-backend-private.h
+++ b/backends/gf-backend-private.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2014 Red Hat
- * Copyright (C) 2017 Alberts Muktupāvels
+ * Copyright (C) 2017-2019 Alberts Muktupāvels
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -37,9 +37,10 @@ struct _GfBackendClass
 {
   GObjectClass parent_class;
 
-  void               (* post_init)              (GfBackend *backend);
+  void               (* post_init)              (GfBackend  *backend);
 
-  GfMonitorManager * (* create_monitor_manager) (GfBackend *backend);
+  GfMonitorManager * (* create_monitor_manager) (GfBackend  *backend,
+                                                 GError    **error);
 };
 
 GfOrientationManager *gf_backend_get_orientation_manager (GfBackend *backend);
diff --git a/backends/gf-backend-x11-cm.c b/backends/gf-backend-x11-cm.c
index b1017f4..ed8aada 100644
--- a/backends/gf-backend-x11-cm.c
+++ b/backends/gf-backend-x11-cm.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Alberts Muktupāvels
+ * Copyright (C) 2017-2019 Alberts Muktupāvels
  * Copyright (C) 2017 Red Hat
  *
  * This program is free software: you can redistribute it and/or modify
@@ -31,7 +31,8 @@ struct _GfBackendX11Cm
 G_DEFINE_TYPE (GfBackendX11Cm, gf_backend_x11_cm, GF_TYPE_BACKEND_X11)
 
 static GfMonitorManager *
-gf_backend_x11_cm_create_monitor_manager (GfBackend *backend)
+gf_backend_x11_cm_create_monitor_manager (GfBackend  *backend,
+                                          GError    **error)
 {
   return g_object_new (GF_TYPE_MONITOR_MANAGER_XRANDR,
                        "backend", backend,
diff --git a/backends/gf-backend-x11-nested.c b/backends/gf-backend-x11-nested.c
index 5622083..2252048 100644
--- a/backends/gf-backend-x11-nested.c
+++ b/backends/gf-backend-x11-nested.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Alberts Muktupāvels
+ * Copyright (C) 2017-2019 Alberts Muktupāvels
  * Copyright (C) 2017 Red Hat
  *
  * This program is free software: you can redistribute it and/or modify
@@ -31,7 +31,8 @@ struct _GfBackendX11Nested
 G_DEFINE_TYPE (GfBackendX11Nested, gf_backend_x11_nested, GF_TYPE_BACKEND_X11)
 
 static GfMonitorManager *
-gf_backend_x11_nested_create_monitor_manager (GfBackend *backend)
+gf_backend_x11_nested_create_monitor_manager (GfBackend  *backend,
+                                              GError    **error)
 {
   return g_object_new (GF_TYPE_MONITOR_MANAGER_DUMMY,
                        "backend", backend,
diff --git a/backends/gf-backend.c b/backends/gf-backend.c
index e660a33..81bfeb3 100644
--- a/backends/gf-backend.c
+++ b/backends/gf-backend.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2014 Red Hat
- * Copyright (C) 2017 Alberts Muktupāvels
+ * Copyright (C) 2017-2019 Alberts Muktupāvels
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -51,7 +51,8 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GfBackend, gf_backend, G_TYPE_OBJECT,
                                                          initable_iface_init))
 
 static GfMonitorManager *
-create_monitor_manager (GfBackend *backend)
+create_monitor_manager (GfBackend  *backend,
+                        GError    **error)
 {
   if (g_getenv ("DUMMY_MONITORS"))
     {
@@ -60,7 +61,7 @@ create_monitor_manager (GfBackend *backend)
                            NULL);
     }
 
-  return GF_BACKEND_GET_CLASS (backend)->create_monitor_manager (backend);
+  return GF_BACKEND_GET_CLASS (backend)->create_monitor_manager (backend, error);
 }
 
 static gboolean
@@ -77,7 +78,9 @@ gf_backend_initable_init (GInitable     *initable,
   priv->settings = gf_settings_new (backend);
   priv->orientation_manager = gf_orientation_manager_new ();
 
-  priv->monitor_manager = create_monitor_manager (backend);
+  priv->monitor_manager = create_monitor_manager (backend, error);
+  if (!priv->monitor_manager)
+    return FALSE;
 
   return TRUE;
 }
diff --git a/backends/gf-monitor-manager-kms.c b/backends/gf-monitor-manager-kms.c
index 5c9117b..93db53e 100644
--- a/backends/gf-monitor-manager-kms.c
+++ b/backends/gf-monitor-manager-kms.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2013 Red Hat Inc.
- * Copyright (C) 2017 Alberts Muktupāvels
+ * Copyright (C) 2017-2019 Alberts Muktupāvels
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,7 +31,27 @@ struct _GfMonitorManagerKms
   GfMonitorManager parent;
 };
 
-G_DEFINE_TYPE (GfMonitorManagerKms, gf_monitor_manager_kms, GF_TYPE_MONITOR_MANAGER)
+static void
+initable_iface_init (GInitableIface *initable_iface);
+
+G_DEFINE_TYPE_WITH_CODE (GfMonitorManagerKms, gf_monitor_manager_kms,
+                         GF_TYPE_MONITOR_MANAGER,
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                                                initable_iface_init))
+
+static gboolean
+gf_monitor_manager_kms_initable_init (GInitable     *initable,
+                                      GCancellable  *cancellable,
+                                      GError       **error)
+{
+  return TRUE;
+}
+
+static void
+initable_iface_init (GInitableIface *initable_iface)
+{
+  initable_iface->init = gf_monitor_manager_kms_initable_init;
+}
 
 static void
 gf_monitor_manager_kms_read_current (GfMonitorManager *manager)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]