summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--client/gdaemonvfs.c43
-rw-r--r--client/gdaemonvfs.h2
-rw-r--r--client/gdaemonvolume.c4
-rw-r--r--client/gdaemonvolumemonitor.c30
-rw-r--r--client/gdaemonvolumemonitor.h1
-rw-r--r--common/gmounttracker.c10
7 files changed, 60 insertions, 41 deletions
diff --git a/ChangeLog b/ChangeLog
index 829d5dc5..f2979531 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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))