diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | client/gdaemonvfs.c | 43 | ||||
-rw-r--r-- | client/gdaemonvfs.h | 2 | ||||
-rw-r--r-- | client/gdaemonvolume.c | 4 | ||||
-rw-r--r-- | client/gdaemonvolumemonitor.c | 30 | ||||
-rw-r--r-- | client/gdaemonvolumemonitor.h | 1 | ||||
-rw-r--r-- | common/gmounttracker.c | 10 |
7 files changed, 60 insertions, 41 deletions
@@ -1,5 +1,16 @@ 2007-10-19 Alexander Larsson <alexl@redhat.com> + * client/gdaemonvfs.[ch]: + * client/gdaemonvolume.c: + * client/gdaemonvolumemonitor.[ch]: + Implement using DEFINE_DYNAMIC_TYPE + Actually register GDaemonVolumeMonitor in giomodule + + * common/gmounttracker.c: + Update to the on-dbus format for mounts + +2007-10-19 Alexander Larsson <alexl@redhat.com> + * client/smburi.c (smb_to_uri): No port by default diff --git a/client/gdaemonvfs.c b/client/gdaemonvfs.c index a4cb5293..3d5d9b35 100644 --- a/client/gdaemonvfs.c +++ b/client/gdaemonvfs.c @@ -12,17 +12,15 @@ #include "gdbusutils.h" #include "gmountspec.h" #include "gvfsurimapper.h" +#include "gdaemonvolumemonitor.h" -#define G_TYPE_DAEMON_VFS (g_daemon_vfs_type) +#define G_TYPE_DAEMON_VFS (g_daemon_vfs_get_type ()) #define G_DAEMON_VFS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_DAEMON_VFS, GDaemonVfs)) #define G_DAEMON_VFS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_DAEMON_VFS, GDaemonVfsClass)) #define G_IS_DAEMON_VFS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_DAEMON_VFS)) #define G_IS_DAEMON_VFS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_DAEMON_VFS)) #define G_DAEMON_VFS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_DAEMON_VFS, GDaemonVfsClass)) -static void g_daemon_vfs_class_init (GDaemonVfsClass *class); -static void g_daemon_vfs_finalize (GObject *object); -static void g_daemon_vfs_init (GDaemonVfs *vfs); struct _GDaemonVfs { @@ -44,37 +42,12 @@ struct _GDaemonVfsClass GVfsClass parent_class; }; -static GType g_daemon_vfs_type = 0; +G_DEFINE_DYNAMIC_TYPE (GDaemonVfs, g_daemon_vfs, G_TYPE_VFS); + static GDaemonVfs *the_vfs = NULL; -static GObjectClass *g_daemon_vfs_parent_class = NULL; G_LOCK_DEFINE_STATIC(mount_cache); -GType -g_daemon_vfs_get_type (GTypeModule *module) -{ - if (!g_daemon_vfs_type) - { - static const GTypeInfo type_info = - { - sizeof (GDaemonVfsClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) g_daemon_vfs_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GDaemonVfs), - 0, /* n_preallocs */ - (GInstanceInitFunc) g_daemon_vfs_init - }; - - g_daemon_vfs_type = - g_type_module_register_type (module, G_TYPE_VFS, - "GDaemonVfs", &type_info, 0); - } - - return g_daemon_vfs_type; -} static void g_daemon_vfs_finalize (GObject *object) @@ -733,6 +706,11 @@ g_daemon_vfs_get_priority (GVfs *vfs) } static void +g_daemon_vfs_class_finalize (GDaemonVfsClass *klass) +{ +} + +static void g_daemon_vfs_class_init (GDaemonVfsClass *class) { GObjectClass *object_class; @@ -758,7 +736,8 @@ g_daemon_vfs_class_init (GDaemonVfsClass *class) void g_io_module_load (GIOModule *module) { - g_daemon_vfs_get_type (G_TYPE_MODULE (module)); + g_daemon_vfs_register_type (G_TYPE_MODULE (module)); + g_daemon_volume_monitor_register_types (G_TYPE_MODULE (module)); } void diff --git a/client/gdaemonvfs.h b/client/gdaemonvfs.h index 652314c7..ca1e49c6 100644 --- a/client/gdaemonvfs.h +++ b/client/gdaemonvfs.h @@ -23,7 +23,7 @@ typedef void (*GMountRefLookupCallback) (GMountRef *mount_ref, gpointer data, GError *error); -GType g_daemon_vfs_get_type (GTypeModule *module); +GType g_daemon_vfs_get_type (void); GDaemonVfs *g_daemon_vfs_new (void); diff --git a/client/gdaemonvolume.c b/client/gdaemonvolume.c index a583f347..60485d19 100644 --- a/client/gdaemonvolume.c +++ b/client/gdaemonvolume.c @@ -130,8 +130,8 @@ g_daemon_volume_unmount (GVolume *volume, static gboolean g_daemon_volume_unmount_finish (GVolume *volume, - GAsyncResult *result, - GError **error) + GAsyncResult *result, + GError **error) { return TRUE; } diff --git a/client/gdaemonvolumemonitor.c b/client/gdaemonvolumemonitor.c index c33b6021..82b887ed 100644 --- a/client/gdaemonvolumemonitor.c +++ b/client/gdaemonvolumemonitor.c @@ -15,16 +15,18 @@ struct _GDaemonVolumeMonitor { GList *volumes; }; -G_DEFINE_TYPE (GDaemonVolumeMonitor, g_daemon_volume_monitor, G_TYPE_VOLUME_MONITOR); +G_DEFINE_DYNAMIC_TYPE (GDaemonVolumeMonitor, g_daemon_volume_monitor, G_TYPE_VOLUME_MONITOR); static GList * get_mounted_volumes (GVolumeMonitor *volume_monitor) { GDaemonVolumeMonitor *monitor; GList *l; - + monitor = G_DAEMON_VOLUME_MONITOR (volume_monitor); + g_print ("get_mounted_volumes (daemon): %d\n", g_list_length (monitor->volumes)); + l = g_list_copy (monitor->volumes); g_list_foreach (l, (GFunc)g_object_ref, NULL); @@ -97,12 +99,26 @@ mount_removed (GDaemonVolumeMonitor *daemon_monitor, GMountInfo *mount_info) static void g_daemon_volume_monitor_init (GDaemonVolumeMonitor *daemon_monitor) { + GList *mounts, *l; + GDaemonVolume *volume; + daemon_monitor->mount_tracker = g_mount_tracker_new (_g_daemon_vfs_get_async_bus ()); g_signal_connect_swapped (daemon_monitor->mount_tracker, "mounted", (GCallback) mount_added, daemon_monitor); g_signal_connect_swapped (daemon_monitor->mount_tracker, "unmounted", (GCallback) mount_removed, daemon_monitor); + + /* Initialize with current list */ + mounts = g_mount_tracker_list_mounts (daemon_monitor->mount_tracker); + + g_print ("Number of mounts: %d\n", g_list_length (mounts)); + for (l = mounts; l != NULL; l = l->next) { + volume = g_daemon_volume_new (G_VOLUME_MONITOR (daemon_monitor), l->data); + daemon_monitor->volumes = g_list_prepend (daemon_monitor->volumes, volume); + } + + g_list_free (mounts); } static void @@ -125,6 +141,11 @@ g_daemon_volume_monitor_finalize (GObject *object) } static void +g_daemon_volume_monitor_class_finalize (GDaemonVolumeMonitorClass *klass) +{ +} + +static void g_daemon_volume_monitor_class_init (GDaemonVolumeMonitorClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); @@ -146,3 +167,8 @@ g_daemon_volume_monitor_new (void) return G_VOLUME_MONITOR (monitor); } +void +g_daemon_volume_monitor_register_types (GTypeModule *module) +{ + g_daemon_volume_monitor_register_type (G_TYPE_MODULE (module)); +} diff --git a/client/gdaemonvolumemonitor.h b/client/gdaemonvolumemonitor.h index 3f867984..564f20e1 100644 --- a/client/gdaemonvolumemonitor.h +++ b/client/gdaemonvolumemonitor.h @@ -25,6 +25,7 @@ struct _GDaemonVolumeMonitorClass { }; GType g_daemon_volume_monitor_get_type (void) G_GNUC_CONST; +void g_daemon_volume_monitor_register_types (GTypeModule *type_module); GVolumeMonitor *g_daemon_volume_monitor_new (void); diff --git a/common/gmounttracker.c b/common/gmounttracker.c index 18f68067..24a69794 100644 --- a/common/gmounttracker.c +++ b/common/gmounttracker.c @@ -89,10 +89,11 @@ g_mount_info_from_dbus (DBusMessageIter *iter) DBusMessageIter struct_iter; GMountInfo *info; GMountSpec *mount_spec; - gchar *display_name; - gchar *icon; - gchar *dbus_id; - gchar *obj_path; + char *display_name; + char *icon; + char *prefered_filename_encoding; + char *dbus_id; + char *obj_path; if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_STRUCT) return NULL; @@ -102,6 +103,7 @@ g_mount_info_from_dbus (DBusMessageIter *iter) if (!_g_dbus_message_iter_get_args (&struct_iter, NULL, DBUS_TYPE_STRING, &display_name, DBUS_TYPE_STRING, &icon, + DBUS_TYPE_STRING, &prefered_filename_encoding, DBUS_TYPE_STRING, &dbus_id, DBUS_TYPE_OBJECT_PATH, &obj_path, 0)) |