mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-12 12:26:17 +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
|
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…
Reference in New Issue
Block a user