mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-26 20:30:08 +01:00
libnm: refactor name-owner check for object-manager
(cherry picked from commit 196bae36bb)
This commit is contained in:
parent
a90ab3a401
commit
c0844be7a2
1 changed files with 14 additions and 12 deletions
|
|
@ -2274,13 +2274,23 @@ objects_created (NMClient *client, GDBusObjectManager *object_manager, GError **
|
|||
|
||||
static void name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data);
|
||||
|
||||
static gboolean
|
||||
_om_has_name_owner (GDBusObjectManager *object_manager)
|
||||
{
|
||||
gs_free char *name_owner = NULL;
|
||||
|
||||
nm_assert (G_IS_DBUS_OBJECT_MANAGER_CLIENT (object_manager));
|
||||
|
||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (object_manager));
|
||||
return !!name_owner;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
|
||||
{
|
||||
NMClient *client = NM_CLIENT (initable);
|
||||
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
|
||||
GList *objects, *iter;
|
||||
gchar *name_owner;
|
||||
|
||||
priv->object_manager = g_dbus_object_manager_client_new_for_bus_sync (_nm_dbus_bus_type (),
|
||||
G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START,
|
||||
|
|
@ -2292,9 +2302,7 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
|
|||
if (!priv->object_manager)
|
||||
return FALSE;
|
||||
|
||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (priv->object_manager));
|
||||
if (name_owner) {
|
||||
g_free (name_owner);
|
||||
if (_om_has_name_owner (priv->object_manager)) {
|
||||
if (!objects_created (client, priv->object_manager, error))
|
||||
return FALSE;
|
||||
|
||||
|
|
@ -2420,7 +2428,6 @@ got_object_manager (GObject *object, GAsyncResult *result, gpointer user_data)
|
|||
NMClient *client;
|
||||
NMClientPrivate *priv;
|
||||
GList *objects, *iter;
|
||||
gchar *name_owner;
|
||||
GError *error = NULL;
|
||||
GDBusObjectManager *object_manager;
|
||||
|
||||
|
|
@ -2435,9 +2442,7 @@ got_object_manager (GObject *object, GAsyncResult *result, gpointer user_data)
|
|||
priv = NM_CLIENT_GET_PRIVATE (client);
|
||||
priv->object_manager = object_manager;
|
||||
|
||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (priv->object_manager));
|
||||
if (name_owner) {
|
||||
g_free (name_owner);
|
||||
if (_om_has_name_owner (priv->object_manager)) {
|
||||
if (!objects_created (client, priv->object_manager, &error)) {
|
||||
g_simple_async_result_take_error (init_data->result, error);
|
||||
init_async_complete (init_data);
|
||||
|
|
@ -2497,13 +2502,10 @@ name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data)
|
|||
NMClient *self = user_data;
|
||||
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self);
|
||||
GDBusObjectManager *object_manager = G_DBUS_OBJECT_MANAGER (object);
|
||||
gchar *name_owner;
|
||||
|
||||
nm_assert (object_manager == priv->object_manager);
|
||||
|
||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (object));
|
||||
if (name_owner) {
|
||||
g_free (name_owner);
|
||||
if (_om_has_name_owner (object_manager)) {
|
||||
g_clear_object (&priv->object_manager);
|
||||
nm_clear_g_cancellable (&priv->new_object_manager_cancellable);
|
||||
priv->new_object_manager_cancellable = g_cancellable_new ();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue