From 4c78012103a901dcb02573b50b50604e82f9666b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Fri, 6 Nov 2020 18:42:21 +0100 Subject: [PATCH] device: Use meson to generate fprint device permission flags --- src/device.c | 44 ++------------------------------------------ src/fprintd.h | 7 +++++++ src/meson.build | 5 +++++ 3 files changed, 14 insertions(+), 42 deletions(-) diff --git a/src/device.c b/src/device.c index 4b43768..0c8d3ca 100644 --- a/src/device.c +++ b/src/device.c @@ -30,6 +30,7 @@ #include #include "fprintd.h" +#include "fprintd-enums.h" #include "storage.h" static const char *FINGERS_NAMES[] = { @@ -68,13 +69,6 @@ typedef enum { STATE_IGNORED, } FprintDeviceClaimState; -typedef enum { - FPRINT_DEVICE_PERMISSION_NONE = 0, - FPRINT_DEVICE_PERMISSION_ENROLL = (1 << 0), - FPRINT_DEVICE_PERMISSION_SETUSERNAME = (1 << 1), - FPRINT_DEVICE_PERMISSION_VERIFY = (1 << 2), -} FprintDevicePermission; - typedef struct { /* current method invocation */ GDBusMethodInvocation *invocation; @@ -135,39 +129,6 @@ enum fprint_device_signals { static guint32 last_id = ~0; static guint signals[NUM_SIGNALS] = { 0, }; -static GType -fprint_device_permission_get_type (void) -{ - static volatile gsize define_type_id = 0; - - if (g_once_init_enter (&define_type_id)) { - static const GFlagsValue values[] = { - { - FPRINT_DEVICE_PERMISSION_ENROLL, - "FPRINT_DEVICE_PERMISSION_ENROLL", - "net.reactivated.fprint.device.enroll" - }, - { - FPRINT_DEVICE_PERMISSION_SETUSERNAME, - "FPRINT_DEVICE_PERMISSION_SETUSERNAME", - "net.reactivated.fprint.device.setusername" - }, - { - FPRINT_DEVICE_PERMISSION_VERIFY, - "FPRINT_DEVICE_PERMISSION_VERIFY", - "net.reactivated.fprint.device.verify" - }, - { 0, NULL, NULL } - }; - - GType type_id = g_flags_register_static ( - "FprintDevicePermission", values); - g_once_init_leave (&define_type_id, type_id); - } - - return define_type_id; -} - static void session_data_free(SessionData *session) { g_clear_pointer(&session->sender, g_free); @@ -525,8 +486,7 @@ fprint_device_check_polkit_for_permissions (FprintDevice *rdev, if (permissions == FPRINT_DEVICE_PERMISSION_NONE) return TRUE; - permission_flags = - g_type_class_ref (fprint_device_permission_get_type ()); + permission_flags = g_type_class_ref (FPRINT_TYPE_DEVICE_PERMISSION); for (i = 0; i < permission_flags->n_values; ++i) { GFlagsValue *value = &permission_flags->values[i]; diff --git a/src/fprintd.h b/src/fprintd.h index 99ef433..26755c1 100644 --- a/src/fprintd.h +++ b/src/fprintd.h @@ -45,6 +45,13 @@ typedef enum { FPRINT_ERROR_NO_SUCH_DEVICE, /* device does not exist */ } FprintError; +typedef enum { + FPRINT_DEVICE_PERMISSION_NONE = 0, + FPRINT_DEVICE_PERMISSION_ENROLL = (1 << 0), /*< nick=net.reactivated.fprint.device.enroll >*/ + FPRINT_DEVICE_PERMISSION_SETUSERNAME = (1 << 1), /*< nick=net.reactivated.fprint.device.setusername >*/ + FPRINT_DEVICE_PERMISSION_VERIFY = (1 << 2), /*< nick=net.reactivated.fprint.device.verify >*/ +} FprintDevicePermission; + /* Manager */ #define FPRINT_TYPE_MANAGER (fprint_manager_get_type()) G_DECLARE_FINAL_TYPE (FprintManager, fprint_manager, FPRINT, MANAGER, GObject) diff --git a/src/meson.build b/src/meson.build index 2b7a61e..a35d3c1 100644 --- a/src/meson.build +++ b/src/meson.build @@ -22,11 +22,16 @@ fprintd_dbus_sources = gnome.gdbus_codegen('fprintd-dbus', object_manager: true, ) +fprintd_enum_files = gnome.mkenums_simple('fprintd-enums', + sources: 'fprintd.h', +) + fprintd_deps = declare_dependency( include_directories: [ include_directories('..'), ], sources: [ + fprintd_enum_files, fprintd_dbus_sources, ], dependencies: [