[mutter] backend: Add a backend release function



commit 6db7d8f830974fd6e542afeef1299c84da10e6b1
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Fri Sep 11 12:14:13 2020 +0200

    backend: Add a backend release function
    
    Mutter still relies heavily on singletons such as its MetaBackend.
    
    For that, the backend implementation has a meta_init_backend() function
    which is called at startup from meta_init(), which creates the desired
    backend and sets the singleton which is returned by meta_get_backend().
    
    Unfortunately, that means that the backend is never actually freed, and
    all the code from the backend finalize function never actually get
    called.
    
    Add a meta_release_backend() to free the backend singleton.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1438

 src/backends/meta-backend-private.h | 1 +
 src/backends/meta-backend.c         | 6 ++++++
 2 files changed, 7 insertions(+)
---
diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h
index 6d7d3ad758..168dae453d 100644
--- a/src/backends/meta-backend-private.h
+++ b/src/backends/meta-backend-private.h
@@ -108,6 +108,7 @@ struct _MetaBackendClass
 };
 
 void meta_init_backend (GType backend_gtype);
+void meta_release_backend (void);
 
 #ifdef HAVE_WAYLAND
 MetaWaylandCompositor * meta_backend_get_wayland_compositor (MetaBackend *backend);
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 97c7714076..c4bba30006 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -1393,6 +1393,12 @@ meta_init_backend (GType backend_gtype)
     }
 }
 
+void
+meta_release_backend (void)
+{
+  g_clear_object (&_backend);
+}
+
 /**
  * meta_is_stage_views_enabled:
  *


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