Gio.VolumeMonitor.adopt_orphan_mount
Description: Reference for Gio.VolumeMonitor.adopt_orphan_mount

### Function

# Gio VolumeMonitoradopt_orphan_mount

deprecated: 2.20

#### Declaration

    GVolume*
    g_volume_monitor_adopt_orphan_mount (
      GMount* mount
    )

#### Description

This function should be called by any `GVolumeMonitor` implementation when a new `GMount` object is created that is not associated with a `GVolume` object. It must be called just before emitting the `mount_added` signal.

If the return value is not `NULL`, the caller must associate the returned `GVolume` object with the `GMount`. This involves returning it in its `g_mount_get_volume()` implementation. The caller must also listen for the “removed” signal on the returned object and give up its reference when handling that signal

Similarly, if implementing g_volume_monitor_adopt_orphan_mount(), the implementor must take a reference to `mount` and return it in its `g_volume_get_mount()` implemented. Also, the implementor must listen for the “unmounted” signal on `mount` and give up its reference upon handling that signal.

There are two main use cases for this function.

One is when implementing a user space file system driver that reads blocks of a block device that is already represented by the native volume monitor (for example a CD Audio file system driver). Such a driver will generate its own `GMount` object that needs to be associated with the `GVolume` object that represents the volume.

The other is for implementing a `GVolumeMonitor` whose sole purpose is to return `GVolume` objects representing entries in the users “favorite servers” list or similar.

Deprecated since: 2.20

Instead of using this function, `GVolumeMonitor` implementations should instead create shadow mounts with the URI of the mount they intend to adopt. See the proxy volume monitor in gvfs for an example of this. Also see g_mount_is_shadowed(), `g_mount_shadow()` and `g_mount_unshadow()` functions.

#### Parameters

`mount`

  Type: `GMount`

  A `GMount` object to find a parent for.

  The data is owned by the caller of the function.

#### Return value

Type: `GVolume`

The `GVolume` object that is the parent for `mount` or `NULL` if no wants to adopt the `GMount`.

The caller of the function takes ownership of the data, and is responsible for freeing it.