mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-09 02:46:16 +01:00
Merge branch '1881-fix-gio-use-volume-monitor' into 'master'
gvolumemonitor: Use GIOModule methods for getting default type Closes #1881 See merge request GNOME/glib!1056
This commit is contained in:
commit
23f405df80
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user