gvolumemonitor: Use GIOModule methods for getting default type

This fixes use of `GIO_USE_VOLUME_MONITOR=help`, and simplifies the
code. The reason this wasn’t used already seems to just be because it
was missed when `_g_io_module_get_default_type()` was introduced in
2013. The previous `get_default_native_class()` code in
`gunionvolumemonitor.c` was introduced in 2007.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Closes: #1881
This commit is contained in:
Philip Withnall 2019-08-26 13:41:26 +03:00
parent c21892ee13
commit 833c24f45a

View File

@ -423,58 +423,9 @@ g_union_volume_monitor_remove_monitor (GUnionVolumeMonitor *union_monitor,
static GType
get_default_native_class (gpointer data)
{
GNativeVolumeMonitorClass *klass, *native_class, **native_class_out;
const char *use_this;
GIOExtensionPoint *ep;
GIOExtension *extension;
GList *l;
native_class_out = data;
use_this = g_getenv ("GIO_USE_VOLUME_MONITOR");
/* Ensure vfs in modules loaded */
_g_io_modules_ensure_loaded ();
ep = g_io_extension_point_lookup (G_NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME);
native_class = NULL;
if (use_this)
{
extension = g_io_extension_point_get_extension_by_name (ep, use_this);
if (extension)
{
klass = G_NATIVE_VOLUME_MONITOR_CLASS (g_io_extension_ref_class (extension));
if (G_VOLUME_MONITOR_CLASS (klass)->is_supported())
native_class = klass;
else
g_type_class_unref (klass);
}
}
if (native_class == NULL)
{
for (l = g_io_extension_point_get_extensions (ep); l != NULL; l = l->next)
{
extension = l->data;
klass = G_NATIVE_VOLUME_MONITOR_CLASS (g_io_extension_ref_class (extension));
if (G_VOLUME_MONITOR_CLASS (klass)->is_supported())
{
native_class = klass;
break;
}
else
g_type_class_unref (klass);
}
}
if (native_class)
{
*native_class_out = native_class;
return G_TYPE_FROM_CLASS (native_class);
}
else
return G_TYPE_INVALID;
return _g_io_module_get_default_type (G_NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME,
"GIO_USE_VOLUME_MONITOR",
G_STRUCT_OFFSET (GVolumeMonitorClass, is_supported));
}
/* We return the class, with a ref taken.