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>
This commit is contained in:
Philip Withnall 2018-09-12 23:45:46 +01:00
parent be10f19752
commit 92b3f22ad5

View File

@ -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))
{
/* Dont debug here, since were 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;
}