From 3a54e4f8372e050c5d373d62319a07f9816aaf0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Mon, 22 Jun 2026 13:39:00 +0200 Subject: [PATCH] fpi-log: Add atomic and unique check for FP_DEBUG_TRANSFER Rather than check it all the times the variable, just rely on an atomic check that is just done once for all --- doc/libfprint-2-sections.txt | 1 + libfprint/fpi-log.c | 21 +++++++++++++++++++++ libfprint/fpi-log.h | 2 ++ libfprint/fpi-spi-transfer.c | 2 +- libfprint/fpi-usb-transfer.c | 3 ++- 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/libfprint-2-sections.txt b/doc/libfprint-2-sections.txt index e6bb0ef3..d37d8404 100644 --- a/doc/libfprint-2-sections.txt +++ b/doc/libfprint-2-sections.txt @@ -353,6 +353,7 @@ fp_dbg_hex_dump_data fp_info fp_warn fp_err +fpi_log_is_debug_transfer_enabled BUG_ON BUG diff --git a/libfprint/fpi-log.c b/libfprint/fpi-log.c index 40e223ca..daeb5281 100644 --- a/libfprint/fpi-log.c +++ b/libfprint/fpi-log.c @@ -21,6 +21,27 @@ #include "fpi-log.h" +/** + * fpi_log_is_debug_transfer_enabled: + * + * Checks if the %FP_DEBUG_TRANSFER environment variable is set. + * + * Returns: %TRUE if %FP_DEBUG_TRANSFER is set, %FALSE otherwise + */ +gboolean +fpi_log_is_debug_transfer_enabled (void) +{ + static gsize debug_transfer_enabled = 0; + + if (g_once_init_enter (&debug_transfer_enabled)) + { + gsize enabled = g_getenv ("FP_DEBUG_TRANSFER") != NULL ? TRUE : G_MAXSIZE; + g_once_init_leave (&debug_transfer_enabled, enabled); + } + + return debug_transfer_enabled == TRUE; +} + /** * fpi_dbg_hex_dump_data: * @buf: Bytes buffer to dump diff --git a/libfprint/fpi-log.h b/libfprint/fpi-log.h index cbc7026b..46380289 100644 --- a/libfprint/fpi-log.h +++ b/libfprint/fpi-log.h @@ -124,3 +124,5 @@ void (fpi_dbg_hex_dump_bytes) (const gchar *log_domain, #define fp_dbg_hex_dump_bytes(bytes) \ (fpi_dbg_hex_dump_bytes) \ (G_LOG_DOMAIN, (bytes)) + +gboolean fpi_log_is_debug_transfer_enabled (void); diff --git a/libfprint/fpi-spi-transfer.c b/libfprint/fpi-spi-transfer.c index 79931ae4..fdba4aae 100644 --- a/libfprint/fpi-spi-transfer.c +++ b/libfprint/fpi-spi-transfer.c @@ -52,7 +52,7 @@ G_DEFINE_BOXED_TYPE (FpiSpiTransfer, fpi_spi_transfer, fpi_spi_transfer_ref, fpi static void log_transfer (FpiSpiTransfer *transfer, gboolean submit, GError *error) { - if (g_getenv ("FP_DEBUG_TRANSFER")) + if (fpi_log_is_debug_transfer_enabled ()) { if (submit) { diff --git a/libfprint/fpi-usb-transfer.c b/libfprint/fpi-usb-transfer.c index 721a2510..9defff08 100644 --- a/libfprint/fpi-usb-transfer.c +++ b/libfprint/fpi-usb-transfer.c @@ -18,6 +18,7 @@ */ #include "fpi-usb-transfer.h" +#include "fpi-log.h" /** * SECTION:fpi-usb-transfer @@ -38,7 +39,7 @@ G_DEFINE_BOXED_TYPE (FpiUsbTransfer, fpi_usb_transfer, fpi_usb_transfer_ref, fpi static void log_transfer (FpiUsbTransfer *transfer, gboolean submit, GError *error) { - if (g_getenv ("FP_DEBUG_TRANSFER")) + if (fpi_log_is_debug_transfer_enabled ()) { if (!submit) {