mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-15 02:13:13 +02:00
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:
parent
c21892ee13
commit
833c24f45a
@ -423,58 +423,9 @@ g_union_volume_monitor_remove_monitor (GUnionVolumeMonitor *union_monitor,
|
|||||||
static GType
|
static GType
|
||||||
get_default_native_class (gpointer data)
|
get_default_native_class (gpointer data)
|
||||||
{
|
{
|
||||||
GNativeVolumeMonitorClass *klass, *native_class, **native_class_out;
|
return _g_io_module_get_default_type (G_NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME,
|
||||||
const char *use_this;
|
"GIO_USE_VOLUME_MONITOR",
|
||||||
GIOExtensionPoint *ep;
|
G_STRUCT_OFFSET (GVolumeMonitorClass, is_supported));
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We return the class, with a ref taken.
|
/* We return the class, with a ref taken.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user