mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-02 10:00:13 +01:00
libnm/nm-manager: don't block the object creation on permissions
The GetPermissions call is very expensive (~400ms here, an extra NM->polkit call for every known permission while polkit being really slow to answer) yet seldom needed. There's no methods to access the permissions -- they're only communicated via signals. Unfortunately, we don't know when a signal is hooked, so we still need to kick of the call. Nevertheless, we don't need to wait for it to finish.
This commit is contained in:
parent
01a20015e0
commit
32dfa563d1
1 changed files with 8 additions and 5 deletions
|
|
@ -1199,18 +1199,18 @@ init_async_complete (NMManagerInitData *init_data)
|
|||
static void
|
||||
init_async_got_permissions (GObject *object, GAsyncResult *result, gpointer user_data)
|
||||
{
|
||||
NMManagerInitData *init_data = user_data;
|
||||
NMManager *manager = user_data;
|
||||
GVariant *permissions;
|
||||
|
||||
if (nmdbus_manager_call_get_permissions_finish (NMDBUS_MANAGER (object),
|
||||
&permissions,
|
||||
result, NULL)) {
|
||||
update_permissions (init_data->manager, permissions);
|
||||
update_permissions (manager, permissions);
|
||||
g_variant_unref (permissions);
|
||||
} else
|
||||
update_permissions (init_data->manager, NULL);
|
||||
update_permissions (manager, NULL);
|
||||
|
||||
init_async_complete (init_data);
|
||||
g_object_unref (manager);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -1228,7 +1228,10 @@ init_async_parent_inited (GObject *source, GAsyncResult *result, gpointer user_d
|
|||
|
||||
nmdbus_manager_call_get_permissions (priv->manager_proxy,
|
||||
init_data->cancellable,
|
||||
init_async_got_permissions, init_data);
|
||||
init_async_got_permissions,
|
||||
g_object_ref (init_data->manager));
|
||||
|
||||
init_async_complete (init_data);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue