mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 15:40:10 +01:00
dispatcher: keep the GDBusConnection instance in the global variable
It's anyway a singleton that is still referenced by other components. So unrefing it in the mainloop does not actually release any memory. However, the GDBusConnection singleton is fundamental for the run of the program. Keep it accessible in the global variables. Note that soon I will drop the GDBusInterfaceSkeleton and only operate on the GDBusConnection. Then it makes more sense to keep it around. Note that usually we want to keep the amount of global state small. But this connection is anyway a singleton (that we already implicitly use). So, it doesn't change the amount of global state nor does it really have much state (we either have a reference to the singleton or we don't).
This commit is contained in:
parent
3a3c807add
commit
cdea5ca795
1 changed files with 6 additions and 7 deletions
|
|
@ -37,6 +37,7 @@
|
|||
#include "nmdbus-dispatcher.h"
|
||||
|
||||
static struct {
|
||||
GDBusConnection *dbus_connection;
|
||||
GMainLoop *loop;
|
||||
gboolean debug;
|
||||
gboolean persist;
|
||||
|
|
@ -988,7 +989,6 @@ int
|
|||
main (int argc, char **argv)
|
||||
{
|
||||
gs_free_error GError *error = NULL;
|
||||
GDBusConnection *bus;
|
||||
Handler *handler = NULL;
|
||||
guint signal_id_term = 0;
|
||||
guint signal_id_int = 0;
|
||||
|
|
@ -1015,8 +1015,8 @@ main (int argc, char **argv)
|
|||
|
||||
gl.loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
|
||||
if (!bus) {
|
||||
gl.dbus_connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
|
||||
if (!gl.dbus_connection) {
|
||||
_LOG_X_W ("Could not get the system bus (%s). Make sure the message bus daemon is running!",
|
||||
error->message);
|
||||
gl.exit_with_failure = TRUE;
|
||||
|
|
@ -1025,7 +1025,7 @@ main (int argc, char **argv)
|
|||
|
||||
handler = g_object_new (HANDLER_TYPE, NULL);
|
||||
g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (handler->dbus_dispatcher),
|
||||
bus,
|
||||
gl.dbus_connection,
|
||||
NM_DISPATCHER_DBUS_PATH,
|
||||
&error);
|
||||
if (error) {
|
||||
|
|
@ -1034,13 +1034,12 @@ main (int argc, char **argv)
|
|||
goto done;
|
||||
}
|
||||
|
||||
g_bus_own_name_on_connection (bus,
|
||||
g_bus_own_name_on_connection (gl.dbus_connection,
|
||||
NM_DISPATCHER_DBUS_SERVICE,
|
||||
G_BUS_NAME_OWNER_FLAGS_NONE,
|
||||
on_name_acquired,
|
||||
on_name_lost,
|
||||
NULL, NULL);
|
||||
g_object_unref (bus);
|
||||
|
||||
quit_timeout_reschedule ();
|
||||
|
||||
|
|
@ -1061,10 +1060,10 @@ done:
|
|||
nm_clear_g_source (&signal_id_int);
|
||||
nm_clear_g_source (&gl.quit_id);
|
||||
g_clear_pointer (&gl.loop, g_main_loop_unref);
|
||||
g_clear_object (&gl.dbus_connection);
|
||||
|
||||
if (!gl.debug)
|
||||
logging_shutdown ();
|
||||
|
||||
return gl.exit_with_failure ? 1 : 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue