[sysprof] perf: authorize polkit as part of source startup
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof] perf: authorize polkit as part of source startup
- Date: Fri, 21 Aug 2020 20:16:17 +0000 (UTC)
commit e968518083965be86d875a3cf61bf1f0d5db33a4
Author: Christian Hergert <chergert redhat com>
Date: Fri Aug 21 13:02:11 2020 -0700
perf: authorize polkit as part of source startup
src/libsysprof/sysprof-perf-source.c | 37 +++++++++++++++++++++++++++++-------
1 file changed, 30 insertions(+), 7 deletions(-)
---
diff --git a/src/libsysprof/sysprof-perf-source.c b/src/libsysprof/sysprof-perf-source.c
index 222520ff..8d669ed5 100644
--- a/src/libsysprof/sysprof-perf-source.c
+++ b/src/libsysprof/sysprof-perf-source.c
@@ -49,6 +49,7 @@
#include <unistd.h>
#include "sysprof-clock.h"
+#include "sysprof-helpers.h"
#include "sysprof-line-reader.h"
#include "sysprof-perf-counter.h"
#include "sysprof-perf-source.h"
@@ -757,23 +758,45 @@ sysprof_perf_source_add_pid (SysprofSource *source,
g_hash_table_add (self->pids, GINT_TO_POINTER (pid));
}
+static void
+sysprof_perf_source_auth_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ SysprofHelpers *helpers = (SysprofHelpers *)object;
+ g_autoptr(SysprofPerfSource) self = user_data;
+ g_autoptr(GError) error = NULL;
+
+ g_assert (SYSPROF_IS_HELPERS (helpers));
+ g_assert (G_IS_ASYNC_RESULT (result));
+ g_assert (SYSPROF_IS_PERF_SOURCE (self));
+
+ if (!sysprof_helpers_authorize_finish (helpers, result, &error))
+ {
+ sysprof_source_emit_failed (SYSPROF_SOURCE (self), error);
+ }
+ else
+ {
+ self->is_ready = TRUE;
+ sysprof_source_emit_ready (SYSPROF_SOURCE (self));
+ }
+}
+
static void
sysprof_perf_source_prepare (SysprofSource *source)
{
g_assert (SYSPROF_IS_PERF_SOURCE (source));
- SYSPROF_PERF_SOURCE (source)->is_ready = TRUE;
- sysprof_source_emit_ready (source);
+ sysprof_helpers_authorize_async (sysprof_helpers_get_default (),
+ NULL,
+ sysprof_perf_source_auth_cb,
+ g_object_ref (source));
}
static gboolean
sysprof_perf_source_get_is_ready (SysprofSource *source)
{
- SysprofPerfSource *self = (SysprofPerfSource *)source;
-
- g_assert (SYSPROF_IS_PERF_SOURCE (self));
-
- return self->is_ready;
+ return SYSPROF_PERF_SOURCE (source)->is_ready;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]