Rework how volumes, drives and volume monitoring is done. Previosly the
authorDavid Zeuthen <davidz@redhat.com>
Tue, 11 Dec 2007 21:23:55 +0000 (21:23 +0000)
committerDavid Zeuthen <davidz@src.gnome.org>
Tue, 11 Dec 2007 21:23:55 +0000 (21:23 +0000)
commit3ca9fd4dbb134088bf70f2f6584f14a559e6820a
treee8710b5925b7cee6b4e80af5109afc629ef3aa79
parentc2643afd246f3f7b1b5d616fc5ea29b0e2b718b7
Rework how volumes, drives and volume monitoring is done. Previosly the

2007-12-11  David Zeuthen  <davidz@redhat.com>

Rework how volumes, drives and volume monitoring is
done. Previosly the model was

 GDrive <1-1> GVolume

where a GDrive instance represented a mount point and a GVolume
instance represented a mounted file system. This patch changes it
the model to

GDrive <1-N> GVolume <1-1> GMount

where GMount now serves the purpose of the old GVolume and the new
GVolume serves the purpose of the old GDrive. In addition the new
GDrive interface is used to represent a collection of GVolume
instances (typically partitions) and also contains utility to query
the state of the physical drive the GDrive object represents (such
as checking for media, polling the drive, ejecting the media etc.).

Also implement mounting and unmounting in the Unix volume monitor
backend. A subquent patch will introduce GDrive support for ejection
of media.

* Makefile.am:
* gdrive.c: (g_drive_is_media_check_automatic),
(g_drive_is_media_removable), (g_drive_has_media),
(g_drive_can_poll_for_media), (g_drive_eject),
(g_drive_eject_finish), (g_drive_poll_for_media),
(g_drive_poll_for_media_finish):
* gdrive.h:
* gfile.c: (g_file_find_enclosing_mount):
* gfile.h:
* gio.symbols:
* glocaldirectorymonitor.c:
(g_local_directory_monitor_constructor), (mounts_changed):
* glocalfile.c: (get_mount_info),
(g_local_file_find_enclosing_mount),
(g_local_file_file_iface_init):
* gnativevolumemonitor.h:
* gunionvolumemonitor.c: (get_mounts), (get_volumes),
(get_connected_drives), (g_union_volume_monitor_class_init),
(child_volume_added), (child_volume_removed),
(child_volume_changed), (child_mount_added), (child_mount_removed),
(child_mount_pre_unmount), (child_mount_changed),
(child_drive_changed), (g_union_volume_monitor_add_monitor),
(g_union_volume_monitor_remove_monitor),
(_g_mount_get_for_mount_path):
* gunixmounts.c: (g_unix_is_mount_path_system_internal),
(guess_system_internal), (_g_get_unix_mounts),
(_g_get_unix_mount_points), (g_get_unix_mount_at),
(g_unix_mount_free), (g_unix_mount_compare),
(g_unix_mount_get_mount_path), (g_unix_mount_get_device_path),
(g_unix_mount_get_fs_type), (g_unix_mount_is_readonly),
(g_unix_mount_is_system_internal), (g_unix_mount_guess_type),
(type_to_icon), (g_unix_mount_guess_name),
(g_unix_mount_guess_icon), (g_unix_mount_point_guess_name),
(g_unix_mount_point_guess_icon), (_canonicalize_filename),
(_resolve_symlink), (_resolve_dev_root):
* gunixmounts.h:
* gunixvolume.c: (g_unix_volume_finalize), (_g_unix_volume_new),
(_g_unix_volume_disconnected), (_g_unix_volume_set_mount),
(_g_unix_volume_unset_mount), (g_unix_volume_get_icon),
(g_unix_volume_get_name), (g_unix_volume_can_mount),
(g_unix_volume_get_drive), (g_unix_volume_get_mount),
(_g_unix_volume_has_mount_path), (mount_cb), (mount_read_error),
(g_unix_volume_mount), (g_unix_volume_mount_finish),
(g_unix_volume_volume_iface_init):
* gunixvolume.h:
* gunixvolumemonitor.c: (g_unix_volume_monitor_finalize),
(get_mounts), (get_volumes), (get_connected_drives),
(get_mount_for_mount_path), (g_unix_volume_monitor_class_init),
(mountpoints_changed), (mounts_changed),
(g_unix_volume_monitor_init),
(_g_unix_volume_monitor_lookup_volume_for_mount_path),
(find_mount_by_mountpath), (update_volumes), (update_mounts):
* gunixvolumemonitor.h:
* gvolume.c: (g_volume_get_mount), (g_volume_can_mount),
(g_volume_mount), (g_volume_mount_finish):
* gvolume.h:
* gvolumemonitor.c: (g_volume_monitor_class_init),
(g_volume_monitor_get_connected_drives),
(g_volume_monitor_get_volumes), (g_volume_monitor_get_mounts):
* gvolumemonitor.h:

svn path=/trunk/; revision=6095
29 files changed:
gio/ChangeLog
gio/Makefile.am
gio/gdrive.c
gio/gdrive.h
gio/gfile.c
gio/gfile.h
gio/gio.symbols
gio/glocaldirectorymonitor.c
gio/glocalfile.c
gio/gmount.c [new file with mode: 0644]
gio/gmount.h [new file with mode: 0644]
gio/gmountprivate.h [moved from gio/gvolumeprivate.h with 94% similarity]
gio/gnativevolumemonitor.h
gio/gunionvolumemonitor.c
gio/gunionvolumemonitor.h
gio/gunixdrive.c [deleted file]
gio/gunixdrive.h [deleted file]
gio/gunixmount.c [new file with mode: 0644]
gio/gunixmount.h [new file with mode: 0644]
gio/gunixmounts.c
gio/gunixmounts.h
gio/gunixvolume.c
gio/gunixvolume.h
gio/gunixvolumemonitor.c
gio/gunixvolumemonitor.h
gio/gvolume.c
gio/gvolume.h
gio/gvolumemonitor.c
gio/gvolumemonitor.h