[glib: 1/2] giomodule: Print the type of each default GIO module



commit 92b3f22ad50fd5e5ed945393a933936c74c20bd8
Author: Philip Withnall <withnall endlessm com>
Date:   Wed Sep 12 23:45:46 2018 +0100

    giomodule: Print the type of each default GIO module
    
    This is useful for debugging in many situations. It’ll be printed with
    G_MESSAGES_DEBUG=GLib-GIO or G_MESSAGES_DEBUG=all.
    
    Mostly I need it for debugging the default GNetworkMonitor, but it will
    work for all GIO module implementations.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>

 gio/giomodule.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
---
diff --git a/gio/giomodule.c b/gio/giomodule.c
index 36c0cefed..91334cd15 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -885,6 +885,8 @@ _g_io_module_get_default (const gchar         *extension_point,
       if (g_hash_table_lookup_extended (default_modules, extension_point,
                                        &key, &impl))
        {
+          /* Don’t debug here, since we’re returning a cached object which was
+           * already printed earlier. */
          g_rec_mutex_unlock (&default_modules_lock);
          return impl;
        }
@@ -899,6 +901,8 @@ _g_io_module_get_default (const gchar         *extension_point,
 
   if (!ep)
     {
+      g_debug ("%s: Failed to find extension point ‘%s’",
+               G_STRFUNC, extension_point);
       g_warn_if_reached ();
       g_rec_mutex_unlock (&default_modules_lock);
       return NULL;
@@ -911,6 +915,7 @@ _g_io_module_get_default (const gchar         *extension_point,
       if (preferred)
        {
          impl = try_implementation (extension_point, preferred, verify_func);
+         extension = preferred;
          if (impl)
            goto done;
        }
@@ -939,6 +944,14 @@ _g_io_module_get_default (const gchar         *extension_point,
                       impl ? g_object_ref (impl) : NULL);
   g_rec_mutex_unlock (&default_modules_lock);
 
+  if (impl != NULL)
+    g_debug ("%s: Found default implementation %s (%s) for ‘%s’",
+             G_STRFUNC, g_io_extension_get_name (extension),
+             G_OBJECT_TYPE_NAME (impl), extension_point);
+  else
+    g_debug ("%s: Failed to find default implementation for ‘%s’",
+             G_STRFUNC, extension_point);
+
   return impl;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]