From ff45d292ee75b0e49c3de3677211218445659884 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 18 May 2021 10:41:55 +0200 Subject: [PATCH] libmm-glib: setup common helper to register DBus errors --- libmm-glib/mm-common-helpers.c | 22 ++++++++++++++++++++++ libmm-glib/mm-common-helpers.h | 3 +++ libmm-glib/mm-manager.c | 20 ++------------------ src/main.c | 23 +++++++---------------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c index 58277930..50c4c830 100644 --- a/libmm-glib/mm-common-helpers.c +++ b/libmm-glib/mm-common-helpers.c @@ -1889,3 +1889,25 @@ mm_utils_check_for_single_value (guint32 value) return TRUE; } + +/*****************************************************************************/ +/* DBus error handling */ + +gboolean +mm_common_register_errors (void) +{ + static volatile guint32 aux = 0; + + if (G_LIKELY (aux)) + return FALSE; + + /* Register all known own errors */ + aux |= MM_CORE_ERROR; + aux |= MM_MOBILE_EQUIPMENT_ERROR; + aux |= MM_CONNECTION_ERROR; + aux |= MM_SERIAL_ERROR; + aux |= MM_MESSAGE_ERROR; + aux |= MM_CDMA_ACTIVATION_ERROR; + + return TRUE; +} diff --git a/libmm-glib/mm-common-helpers.h b/libmm-glib/mm-common-helpers.h index 0ad6ea4c..a0037cd0 100644 --- a/libmm-glib/mm-common-helpers.h +++ b/libmm-glib/mm-common-helpers.h @@ -201,4 +201,7 @@ gboolean mm_utils_ishexstr (const gchar *hex); gboolean mm_utils_check_for_single_value (guint32 value); +/* DBus error handling */ +gboolean mm_common_register_errors (void); + #endif /* MM_COMMON_HELPERS_H */ diff --git a/libmm-glib/mm-manager.c b/libmm-glib/mm-manager.c index d22c2136..c37daab3 100644 --- a/libmm-glib/mm-manager.c +++ b/libmm-glib/mm-manager.c @@ -24,6 +24,7 @@ #include #include "mm-helpers.h" +#include "mm-common-helpers.h" #include "mm-errors-types.h" #include "mm-gdbus-manager.h" #include "mm-manager.h" @@ -960,27 +961,10 @@ mm_manager_uninhibit_device_sync (MMManager *manager, /*****************************************************************************/ -static void -register_dbus_errors (void) -{ - static volatile guint32 aux = 0; - - if (aux) - return; - - /* Register all known own errors */ - aux |= MM_CORE_ERROR; - aux |= MM_MOBILE_EQUIPMENT_ERROR; - aux |= MM_CONNECTION_ERROR; - aux |= MM_SERIAL_ERROR; - aux |= MM_MESSAGE_ERROR; - aux |= MM_CDMA_ACTIVATION_ERROR; -} - static void mm_manager_init (MMManager *manager) { - register_dbus_errors (); + mm_common_register_errors (); /* Setup private data */ manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, diff --git a/src/main.c b/src/main.c index d11383c3..0067583e 100644 --- a/src/main.c +++ b/src/main.c @@ -133,23 +133,14 @@ name_lost_cb (GDBusConnection *connection, static void register_dbus_errors (void) { - static volatile guint32 aux = 0; + /* This method will always return success once during runtime */ + if (!mm_common_register_errors ()) + return; - if (aux) - return; - - /* Register all known own errors */ - aux |= MM_CORE_ERROR; - aux |= MM_MOBILE_EQUIPMENT_ERROR; - aux |= MM_CONNECTION_ERROR; - aux |= MM_SERIAL_ERROR; - aux |= MM_MESSAGE_ERROR; - aux |= MM_CDMA_ACTIVATION_ERROR; - - /* We no longer use MM_CORE_ERROR_CANCELLED in the daemon, we rely on - * G_IO_ERROR_CANCELLED internally */ - g_dbus_error_unregister_error (MM_CORE_ERROR, MM_CORE_ERROR_CANCELLED, MM_CORE_ERROR_DBUS_PREFIX ".Cancelled"); - g_dbus_error_register_error (G_IO_ERROR, G_IO_ERROR_CANCELLED, MM_CORE_ERROR_DBUS_PREFIX ".Cancelled"); + /* We no longer use MM_CORE_ERROR_CANCELLED in the daemon, we rely on + * G_IO_ERROR_CANCELLED internally */ + g_dbus_error_unregister_error (MM_CORE_ERROR, MM_CORE_ERROR_CANCELLED, MM_CORE_ERROR_DBUS_PREFIX ".Cancelled"); + g_dbus_error_register_error (G_IO_ERROR, G_IO_ERROR_CANCELLED, MM_CORE_ERROR_DBUS_PREFIX ".Cancelled"); } int