[brasero] 2009-05-06 Philippe Rouquier <bonfire-app wanadoo fr>



commit 17fe5311b9895c9aa6811ec6cd99808a29936d5a
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Wed May 6 20:36:28 2009 +0200

    2009-05-06  Philippe Rouquier  <bonfire-app wanadoo fr>
    
    	Some cleanup regarding BraseroIO. Now brasero_io_* () functions can be
    	called without the BraseroIO object as an argument since we always passed
    	a default object anyway.
    
    	* libbrasero-burn/brasero-data-session.c
    	(brasero_io_image_directory_contents_destroy),
    	(brasero_io_image_directory_contents_thread),
    	(brasero_io_load_image_directory),
    	(brasero_data_session_load_directory_contents_real),
    	(brasero_data_session_stop_io):
    	* libbrasero-burn/brasero-data-vfs.c
    	(brasero_data_vfs_load_directory), (brasero_data_vfs_load_node),
    	(brasero_data_vfs_require_higher_priority),
    	(brasero_data_vfs_require_directory_contents),
    	(brasero_data_vfs_require_node_load), (brasero_data_vfs_load_mime),
    	(brasero_data_vfs_clear), (brasero_data_vfs_init),
    	(brasero_data_vfs_finalize):
    	* libbrasero-burn/brasero-track-stream-cfg.c
    	(brasero_track_stream_cfg_get_info):
    	* libbrasero-burn/burn-basics.c (brasero_burn_library_stop):
    	* libbrasero-utils/brasero-io.c (brasero_io_get_default),
    	(brasero_io_return_result), (brasero_io_push_job),
    	(brasero_io_job_free), (brasero_io_job_destroy),
    	(brasero_io_get_file_info_thread), (brasero_io_new_file_info_job),
    	(brasero_io_get_file_info), (brasero_io_parse_playlist_thread),
    	(brasero_io_parse_playlist), (brasero_io_get_file_count_destroy),
    	(brasero_io_get_file_count_thread), (brasero_io_get_file_count),
    	(brasero_io_load_directory_destroy),
    	(brasero_io_load_directory_playlist),
    	(brasero_io_load_directory_thread), (brasero_io_load_directory),
    	(brasero_io_cancel_by_base), (brasero_io_cancel_by_data),
    	(brasero_io_find_urgent), (brasero_io_free_async_queue),
    	(brasero_io_shutdown):
    	* libbrasero-utils/brasero-io.h:
    	* src/brasero-audio-disc.c (brasero_audio_disc_reset_real),
    	(brasero_audio_disc_finalize),
    	(brasero_audio_disc_visit_dir_async),
    	(brasero_audio_disc_add_playlist),
    	(brasero_audio_disc_add_uri_real),
    	(brasero_audio_disc_inotify_move),
    	(brasero_audio_disc_inotify_attributes_changed),
    	(brasero_audio_disc_inotify_monitor_cb):
    	* src/brasero-player.c (brasero_player_retrieve_metadata),
    	(brasero_player_set_uri), (brasero_player_destroy):
    	* src/brasero-playlist.c (brasero_playlist_init),
    	(brasero_playlist_destroy), (brasero_playlist_add_uri_playlist):
    	* src/brasero-project-manager.c
    	(brasero_project_manager_selected_uris_preview),
    	(brasero_project_manager_selected_uris_changed),
    	(brasero_project_manager_sidepane_changed),
    	(brasero_project_manager_finalize):
    	* src/brasero-video-project.c (brasero_video_project_reset),
    	(brasero_video_project_add_directory_contents),
    	(brasero_video_project_add_uri),
    	(brasero_video_project_file_modified):
---
 ChangeLog                                  |   58 +++++++++
 libbrasero-burn/brasero-data-session.c     |   25 ++---
 libbrasero-burn/brasero-data-vfs.c         |   36 ++----
 libbrasero-burn/brasero-track-stream-cfg.c |    7 +-
 libbrasero-burn/burn-basics.c              |    5 +
 libbrasero-utils/brasero-io.c              |  176 +++++++++++++++-------------
 libbrasero-utils/brasero-io.h              |   61 +++--------
 src/brasero-audio-disc.c                   |   80 ++++---------
 src/brasero-player.c                       |   20 +---
 src/brasero-playlist.c                     |   17 +--
 src/brasero-project-manager.c              |   31 ++----
 src/brasero-video-project.c                |   27 ++---
 12 files changed, 244 insertions(+), 299 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 08a808b..0621eb9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,63 @@
 2009-05-06  Philippe Rouquier  <bonfire-app wanadoo fr>
 
+	Some cleanup regarding BraseroIO. Now brasero_io_* () functions can be
+	called without the BraseroIO object as an argument since we always passed
+	a default object anyway.
+
+	* libbrasero-burn/brasero-data-session.c
+	(brasero_io_image_directory_contents_destroy),
+	(brasero_io_image_directory_contents_thread),
+	(brasero_io_load_image_directory),
+	(brasero_data_session_load_directory_contents_real),
+	(brasero_data_session_stop_io):
+	* libbrasero-burn/brasero-data-vfs.c
+	(brasero_data_vfs_load_directory), (brasero_data_vfs_load_node),
+	(brasero_data_vfs_require_higher_priority),
+	(brasero_data_vfs_require_directory_contents),
+	(brasero_data_vfs_require_node_load), (brasero_data_vfs_load_mime),
+	(brasero_data_vfs_clear), (brasero_data_vfs_init),
+	(brasero_data_vfs_finalize):
+	* libbrasero-burn/brasero-track-stream-cfg.c
+	(brasero_track_stream_cfg_get_info):
+	* libbrasero-burn/burn-basics.c (brasero_burn_library_stop):
+	* libbrasero-utils/brasero-io.c (brasero_io_get_default),
+	(brasero_io_return_result), (brasero_io_push_job),
+	(brasero_io_job_free), (brasero_io_job_destroy),
+	(brasero_io_get_file_info_thread), (brasero_io_new_file_info_job),
+	(brasero_io_get_file_info), (brasero_io_parse_playlist_thread),
+	(brasero_io_parse_playlist), (brasero_io_get_file_count_destroy),
+	(brasero_io_get_file_count_thread), (brasero_io_get_file_count),
+	(brasero_io_load_directory_destroy),
+	(brasero_io_load_directory_playlist),
+	(brasero_io_load_directory_thread), (brasero_io_load_directory),
+	(brasero_io_cancel_by_base), (brasero_io_cancel_by_data),
+	(brasero_io_find_urgent), (brasero_io_free_async_queue),
+	(brasero_io_shutdown):
+	* libbrasero-utils/brasero-io.h:
+	* src/brasero-audio-disc.c (brasero_audio_disc_reset_real),
+	(brasero_audio_disc_finalize),
+	(brasero_audio_disc_visit_dir_async),
+	(brasero_audio_disc_add_playlist),
+	(brasero_audio_disc_add_uri_real),
+	(brasero_audio_disc_inotify_move),
+	(brasero_audio_disc_inotify_attributes_changed),
+	(brasero_audio_disc_inotify_monitor_cb):
+	* src/brasero-player.c (brasero_player_retrieve_metadata),
+	(brasero_player_set_uri), (brasero_player_destroy):
+	* src/brasero-playlist.c (brasero_playlist_init),
+	(brasero_playlist_destroy), (brasero_playlist_add_uri_playlist):
+	* src/brasero-project-manager.c
+	(brasero_project_manager_selected_uris_preview),
+	(brasero_project_manager_selected_uris_changed),
+	(brasero_project_manager_sidepane_changed),
+	(brasero_project_manager_finalize):
+	* src/brasero-video-project.c (brasero_video_project_reset),
+	(brasero_video_project_add_directory_contents),
+	(brasero_video_project_add_uri),
+	(brasero_video_project_file_modified):
+
+2009-05-06  Philippe Rouquier  <bonfire-app wanadoo fr>
+
 	Remove unneeded function
 
 	* libbrasero-burn/burn-debug.c:
diff --git a/libbrasero-burn/brasero-data-session.c b/libbrasero-burn/brasero-data-session.c
index f8f58d4..e874e3b 100644
--- a/libbrasero-burn/brasero-data-session.c
+++ b/libbrasero-burn/brasero-data-session.c
@@ -56,7 +56,6 @@
 typedef struct _BraseroDataSessionPrivate BraseroDataSessionPrivate;
 struct _BraseroDataSessionPrivate
 {
-	BraseroIO *io;
 	BraseroIOJobBase *load_dir;
 
 	/* Multisession drives that are inserted */
@@ -107,7 +106,7 @@ brasero_io_image_directory_contents_destroy (BraseroAsyncTaskManager *manager,
 	BraseroIOImageContentsData *data = callback_data;
 
 	g_free (data->dev_image);
-	brasero_io_job_free (BRASERO_IO (manager), cancelled, BRASERO_IO_JOB (data));
+	brasero_io_job_free (cancelled, BRASERO_IO_JOB (data));
 }
 
 static BraseroAsyncTaskResult
@@ -125,8 +124,7 @@ brasero_io_image_directory_contents_thread (BraseroAsyncTaskManager *manager,
 	vol = brasero_volume_source_open_device_handle (handle, &error);
 	if (!vol) {
 		brasero_device_handle_close (handle);
-		brasero_io_return_result (BRASERO_IO (manager),
-					  data->job.base,
+		brasero_io_return_result (data->job.base,
 					  data->job.uri,
 					  NULL,
 					  error,
@@ -158,8 +156,7 @@ brasero_io_image_directory_contents_thread (BraseroAsyncTaskManager *manager,
 		else
 			g_file_info_set_size (info, BRASERO_VOLUME_FILE_SIZE (file));
 
-		brasero_io_return_result (BRASERO_IO (manager),
-					  data->job.base,
+		brasero_io_return_result (data->job.base,
 					  data->job.uri,
 					  info,
 					  NULL,
@@ -178,8 +175,7 @@ static const BraseroAsyncTaskType image_contents_type = {
 };
 
 void
-brasero_io_load_image_directory (BraseroIO *self,
-				 const gchar *dev_image,
+brasero_io_load_image_directory (const gchar *dev_image,
 				 gint64 session_block,
 				 gint64 block,
 				 const BraseroIOJobBase *base,
@@ -204,8 +200,7 @@ brasero_io_load_image_directory (BraseroIO *self,
 			    options,
 			    callback_data);
 
-	brasero_io_push_job (self,
-			     BRASERO_IO_JOB (data),
+	brasero_io_push_job (BRASERO_IO_JOB (data),
 			     &image_contents_type);
 
 }
@@ -418,8 +413,6 @@ brasero_data_session_load_directory_contents_real (BraseroDataSession *self,
 	brasero_medium_get_last_data_track_address (priv->loaded,
 						    NULL,
 						    &session_block);
-	if (!priv->io)
-		priv->io = brasero_io_get_default ();
 
 	if (!priv->load_dir)
 		priv->load_dir = brasero_io_register (G_OBJECT (self),
@@ -433,8 +426,7 @@ brasero_data_session_load_directory_contents_real (BraseroDataSession *self,
 		node->is_exploring = TRUE;
 	}
 
-	brasero_io_load_image_directory (priv->io,
-					 device,
+	brasero_io_load_image_directory (device,
 					 session_block,
 					 BRASERO_FILE_NODE_IMPORTED_ADDRESS (node),
 					 priv->load_dir,
@@ -626,9 +618,8 @@ brasero_data_session_stop_io (BraseroDataSession *self)
 
 	priv = BRASERO_DATA_SESSION_PRIVATE (self);
 
-	if (priv->io) {
-		brasero_io_cancel_by_base (priv->io, priv->load_dir);
-
+	if (priv->load_dir) {
+		brasero_io_cancel_by_base (priv->load_dir);
 		g_free (priv->load_dir);
 		priv->load_dir = NULL;
 	}
diff --git a/libbrasero-burn/brasero-data-vfs.c b/libbrasero-burn/brasero-data-vfs.c
index 3460fc3..29306d9 100644
--- a/libbrasero-burn/brasero-data-vfs.c
+++ b/libbrasero-burn/brasero-data-vfs.c
@@ -63,7 +63,6 @@ struct _BraseroDataVFSPrivate
 
 	BraseroFilteredUri *filtered;
 
-	BraseroIO *io;
 	BraseroIOJobBase *load_uri;
 	BraseroIOJobBase *load_contents;
 
@@ -476,8 +475,7 @@ brasero_data_vfs_load_directory (BraseroDataVFS *self,
 							   NULL);
 
 	/* no need to require mime types here as these rows won't be visible */
-	brasero_io_load_directory (priv->io,
-				   uri,
+	brasero_io_load_directory (uri,
 				   priv->load_contents,
 				   BRASERO_IO_INFO_PERM|
 				  (priv->replace_sym ? BRASERO_IO_INFO_FOLLOW_SYMLINK:BRASERO_IO_INFO_NONE),
@@ -709,8 +707,7 @@ brasero_data_vfs_load_node (BraseroDataVFS *self,
 						      brasero_data_vfs_loading_node_end,
 						      NULL);
 
-	brasero_io_get_file_info (priv->io,
-				  uri,
+	brasero_io_get_file_info (uri,
 				  priv->load_uri,
 				  flags|
 				  (priv->replace_sym ? BRASERO_IO_INFO_FOLLOW_SYMLINK:BRASERO_IO_INFO_NONE),
@@ -789,7 +786,6 @@ brasero_data_vfs_increase_priority_cb (gpointer data, gpointer user_data)
 static gboolean
 brasero_data_vfs_require_higher_priority (BraseroDataVFS *self,
 					  BraseroFileNode *node,
-					  BraseroIO *io,
 					  BraseroIOJobBase *type)
 {
 	gchar *registered;
@@ -799,8 +795,7 @@ brasero_data_vfs_require_higher_priority (BraseroDataVFS *self,
 	registered = brasero_utils_register_string (uri);
 	g_free (uri);
 
-	brasero_io_find_urgent (io,
-				type,
+	brasero_io_find_urgent (type,
 				brasero_data_vfs_increase_priority_cb,
 				registered);
 
@@ -817,7 +812,6 @@ brasero_data_vfs_require_directory_contents (BraseroDataVFS *self,
 	priv = BRASERO_DATA_VFS_PRIVATE (self);
 	return brasero_data_vfs_require_higher_priority (self,
 							 node,
-							 priv->io,
 							 priv->load_contents);
 }
 
@@ -830,7 +824,6 @@ brasero_data_vfs_require_node_load (BraseroDataVFS *self,
 	priv = BRASERO_DATA_VFS_PRIVATE (self);
 	return brasero_data_vfs_require_higher_priority (self,
 							 node,
-							 priv->io,
 							 priv->load_uri);
 }
 
@@ -871,8 +864,7 @@ brasero_data_vfs_load_mime (BraseroDataVFS *self,
 			ref_node = brasero_data_project_reference_get (BRASERO_DATA_PROJECT (self), reference);
 			if (ref_node == node) {
 				/* Ask for a higher priority */
-				brasero_io_find_urgent (priv->io,
-							priv->load_uri,
+				brasero_io_find_urgent (priv->load_uri,
 							brasero_data_vfs_increase_priority_cb,
 							registered);
 				brasero_utils_unregister_string (registered);
@@ -886,8 +878,7 @@ brasero_data_vfs_load_mime (BraseroDataVFS *self,
 		g_hash_table_insert (priv->loading, registered, nodes);
 
 		/* Yet, ask for a higher priority */
-		brasero_io_find_urgent (priv->io,
-					priv->load_uri,
+		brasero_io_find_urgent (priv->load_uri,
 					brasero_data_vfs_increase_priority_cb,
 					registered);
 		brasero_utils_unregister_string (registered);
@@ -977,13 +968,14 @@ brasero_data_vfs_clear (BraseroDataVFS *self)
 	priv = BRASERO_DATA_VFS_PRIVATE (self);
 
 	/* Stop all VFS operations */
-	if (priv->io) {
-		brasero_io_cancel_by_base (priv->io, priv->load_uri);
-		brasero_io_cancel_by_base (priv->io, priv->load_contents);
-
+	if (priv->load_uri) {
+		brasero_io_cancel_by_base (priv->load_uri);
 		g_free (priv->load_uri);
 		priv->load_uri = NULL;
+	}
 
+	if (priv->load_contents) {
+		brasero_io_cancel_by_base (priv->load_contents);
 		g_free (priv->load_contents);
 		priv->load_contents = NULL;
 	}
@@ -1123,9 +1115,6 @@ brasero_data_vfs_init (BraseroDataVFS *object)
 	/* create the hash tables */
 	priv->loading = g_hash_table_new (g_str_hash, g_str_equal);
 	priv->directories = g_hash_table_new (g_str_hash, g_str_equal);
-
-	/* get the vfs object */
-	priv->io = brasero_io_get_default ();
 }
 
 static void
@@ -1152,11 +1141,6 @@ brasero_data_vfs_finalize (GObject *object)
 		priv->filtered = NULL;
 	}
 
-	if (priv->io) {
-		g_object_unref (priv->io);
-		priv->io = NULL;
-	}
-
 	G_OBJECT_CLASS (brasero_data_vfs_parent_class)->finalize (object);
 }
 
diff --git a/libbrasero-burn/brasero-track-stream-cfg.c b/libbrasero-burn/brasero-track-stream-cfg.c
index fab7516..889d48d 100644
--- a/libbrasero-burn/brasero-track-stream-cfg.c
+++ b/libbrasero-burn/brasero-track-stream-cfg.c
@@ -43,7 +43,6 @@
 typedef struct _BraseroTrackStreamCfgPrivate BraseroTrackStreamCfgPrivate;
 struct _BraseroTrackStreamCfgPrivate
 {
-	BraseroIO *io;
 	BraseroIOJobBase *load_uri;
 
 	GError *error;
@@ -147,9 +146,6 @@ brasero_track_stream_cfg_get_info (BraseroTrackStreamCfg *track)
 	}
 
 	/* get info async for the file */
-	if (!priv->io)
-		priv->io = brasero_io_get_default ();
-
 	if (!priv->load_uri)
 		priv->load_uri = brasero_io_register (G_OBJECT (track),
 						      brasero_video_project_result_cb,
@@ -158,8 +154,7 @@ brasero_track_stream_cfg_get_info (BraseroTrackStreamCfg *track)
 
 	priv->loading = TRUE;
 	uri = brasero_track_stream_get_source (BRASERO_TRACK_STREAM (track), TRUE);
-	brasero_io_get_file_info (priv->io,
-				  uri,
+	brasero_io_get_file_info (uri,
 				  priv->load_uri,
 				  BRASERO_IO_INFO_PERM|
 				  BRASERO_IO_INFO_MIME|
diff --git a/libbrasero-burn/burn-basics.c b/libbrasero-burn/burn-basics.c
index a405e10..e3cbb86 100644
--- a/libbrasero-burn/burn-basics.c
+++ b/libbrasero-burn/burn-basics.c
@@ -39,6 +39,8 @@
 
 #include <gconf/gconf-client.h>
 
+#include "brasero-io.h"
+
 #include "burn-basics.h"
 #include "burn-debug.h"
 #include "burn-caps.h"
@@ -252,6 +254,9 @@ brasero_burn_library_stop (void)
 		medium_manager = NULL;
 	}
 
+	/* Cleanup the io thing */
+	brasero_io_shutdown ();
+
 	/* close HAL connection */
 //	brasero_hal_watch_destroy ();
 }
diff --git a/libbrasero-utils/brasero-io.c b/libbrasero-utils/brasero-io.c
index a90eef0..b1a9d39 100644
--- a/libbrasero-utils/brasero-io.c
+++ b/libbrasero-utils/brasero-io.c
@@ -53,6 +53,28 @@
 #include "brasero-metadata.h"
 #include "brasero-async-task-manager.h"
 
+#define BRASERO_TYPE_IO             (brasero_io_get_type ())
+#define BRASERO_IO(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_IO, BraseroIO))
+#define BRASERO_IO_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), BRASERO_TYPE_IO, BraseroIOClass))
+#define BRASERO_IS_IO(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BRASERO_TYPE_IO))
+#define BRASERO_IS_IO_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), BRASERO_TYPE_IO))
+#define BRASERO_IO_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), BRASERO_TYPE_IO, BraseroIOClass))
+
+typedef struct _BraseroIOClass BraseroIOClass;
+typedef struct _BraseroIO BraseroIO;
+
+struct _BraseroIOClass
+{
+	BraseroAsyncTaskManagerClass parent_class;
+};
+
+struct _BraseroIO
+{
+	BraseroAsyncTaskManager parent_instance;
+};
+
+GType brasero_io_get_type (void) G_GNUC_CONST;
+
 typedef struct _BraseroIOPrivate BraseroIOPrivate;
 struct _BraseroIOPrivate
 {
@@ -120,6 +142,20 @@ struct _BraseroIOJobProgress {
 
 G_DEFINE_TYPE (BraseroIO, brasero_io, BRASERO_TYPE_ASYNC_TASK_MANAGER);
 
+static BraseroIO *singleton = NULL;
+
+static BraseroIO *
+brasero_io_get_default ()
+{
+	if (singleton) {
+		g_object_ref (singleton);
+		return singleton;
+	}
+
+	singleton = g_object_new (BRASERO_TYPE_IO, NULL);
+	return singleton;
+}
+
 /**
  * That's the structure to pass the progress on
  */
@@ -355,13 +391,13 @@ brasero_io_queue_result (BraseroIO *self,
 }
 
 void
-brasero_io_return_result (BraseroIO *self,
-			  const BraseroIOJobBase *base,
+brasero_io_return_result (const BraseroIOJobBase *base,
 			  const gchar *uri,
 			  GFileInfo *info,
 			  GError *error,
 			  BraseroIOResultCallbackData *callback_data)
 {
+	BraseroIO *self = brasero_io_get_default ();
 	BraseroIOJobResult *result;
 
 	/* even if it is cancelled we let the result go through to be able to 
@@ -379,6 +415,7 @@ brasero_io_return_result (BraseroIO *self,
 	}
 
 	brasero_io_queue_result (self, result);
+	g_object_unref (self);
 }
 
 /**
@@ -402,10 +439,11 @@ brasero_io_set_job (BraseroIOJob *job,
 }
 
 void
-brasero_io_push_job (BraseroIO *self,
-		     BraseroIOJob *job,
+brasero_io_push_job (BraseroIOJob *job,
 		     const BraseroAsyncTaskType *type)
 {
+	BraseroIO *self = brasero_io_get_default ();
+
 	if (job->options & BRASERO_IO_INFO_URGENT)
 		brasero_async_task_manager_queue (BRASERO_ASYNC_TASK_MANAGER (self),
 						  BRASERO_ASYNC_URGENT,
@@ -421,6 +459,7 @@ brasero_io_push_job (BraseroIO *self,
 						  BRASERO_ASYNC_NORMAL,
 						  type,
 						  job);
+	g_object_unref (self);
 }
 
 /**
@@ -428,8 +467,7 @@ brasero_io_push_job (BraseroIO *self,
  */
 
 void
-brasero_io_job_free (BraseroIO *self,
-		     gboolean cancelled,
+brasero_io_job_free (gboolean cancelled,
 		     BraseroIOJob *job)
 {
 	/* NOTE: the callback_data member is never destroyed here since it would
@@ -459,13 +497,16 @@ brasero_io_job_free (BraseroIO *self,
 
 				g_free (job->callback_data);
 			}
-			else
-				brasero_io_return_result (self,
-							  job->base,
+			else {
+				BraseroIO *self = brasero_io_get_default ();
+
+				brasero_io_return_result (job->base,
 							  NULL,
 							  NULL,
 							  NULL,
 							  job->callback_data);
+				g_object_unref (self);
+			}
 		}
 	}
 
@@ -488,7 +529,7 @@ brasero_io_job_destroy (BraseroAsyncTaskManager *manager,
 	/* NOTE: usually threads are cancelled from the main thread/loop and
 	 * block until the active task is removed which means that if we called
 	 * the destroy () then the destruction would be done in the main loop */
-	brasero_io_job_free (BRASERO_IO (manager), cancelled, job);
+	brasero_io_job_free (cancelled, job);
 }
 
 /**
@@ -1170,8 +1211,7 @@ brasero_io_get_file_info_thread (BraseroAsyncTaskManager *manager,
 	file_uri = g_file_get_uri (file);
 	g_object_unref (file);
 
-	brasero_io_return_result (BRASERO_IO (manager),
-				  job->base,
+	brasero_io_return_result (job->base,
 				  file_uri,
 				  info,
 				  error,
@@ -1187,8 +1227,7 @@ static const BraseroAsyncTaskType info_type = {
 };
 
 static void
-brasero_io_new_file_info_job (BraseroIO *self,
-			      const gchar *uri,
+brasero_io_new_file_info_job (const gchar *uri,
 			      const BraseroIOJobBase *base,
 			      BraseroIOFlags options,
 			      BraseroIOResultCallbackData *callback_data)
@@ -1202,24 +1241,25 @@ brasero_io_new_file_info_job (BraseroIO *self,
 			    options,
 			    callback_data);
 
-	brasero_io_push_job (self, job, &info_type);
+	brasero_io_push_job (job, &info_type);
 }
 
 void
-brasero_io_get_file_info (BraseroIO *self,
-			  const gchar *uri,
+brasero_io_get_file_info (const gchar *uri,
 			  const BraseroIOJobBase *base,
 			  BraseroIOFlags options,
 			  gpointer user_data)
 {
 	BraseroIOResultCallbackData *callback_data = NULL;
+	BraseroIO *self = brasero_io_get_default ();
 
 	if (user_data) {
 		callback_data = g_new0 (BraseroIOResultCallbackData, 1);
 		callback_data->callback_data = user_data;
 	}
 
-	brasero_io_new_file_info_job (self, uri, base, options, callback_data);
+	brasero_io_new_file_info_job (uri, base, options, callback_data);
+	g_object_unref (self);
 }
 
 /**
@@ -1318,8 +1358,7 @@ brasero_io_parse_playlist_thread (BraseroAsyncTaskManager *manager,
 
 	result = brasero_io_parse_playlist_get_uris (job->uri, &data, &error);
 	if (!result) {
-		brasero_io_return_result (BRASERO_IO (manager),
-					  job->base,
+		brasero_io_return_result (job->base,
 					  job->uri,
 					  NULL,
 					  error,
@@ -1343,8 +1382,7 @@ brasero_io_parse_playlist_thread (BraseroAsyncTaskManager *manager,
 						  BRASERO_IO_PLAYLIST_TITLE,
 						  data.title);
 
-	brasero_io_return_result (BRASERO_IO (manager),
-				  job->base,
+	brasero_io_return_result (job->base,
 				  job->uri,
 				  info,
 				  NULL,
@@ -1373,8 +1411,7 @@ brasero_io_parse_playlist_thread (BraseroAsyncTaskManager *manager,
 		if (!child_info)
 			continue;
 
-		brasero_io_return_result (BRASERO_IO (manager),
-					  job->base,
+		brasero_io_return_result (job->base,
 					  child,
 					  child_info,
 					  NULL,
@@ -1391,13 +1428,13 @@ static const BraseroAsyncTaskType playlist_type = {
 };
 
 void
-brasero_io_parse_playlist (BraseroIO *self,
-			   const gchar *uri,
+brasero_io_parse_playlist (const gchar *uri,
 			   const BraseroIOJobBase *base,
 			   BraseroIOFlags options,
 			   gpointer user_data)
 {
 	BraseroIOJob *job;
+	BraseroIO *self = brasero_io_get_default ();
 	BraseroIOResultCallbackData *callback_data = NULL;
 
 	if (user_data) {
@@ -1412,7 +1449,8 @@ brasero_io_parse_playlist (BraseroIO *self,
 			    options,
 			    callback_data);
 
-	brasero_io_push_job (self, job, &playlist_type);
+	brasero_io_push_job (job, &playlist_type);
+	g_object_unref (self);
 }
 
 #endif
@@ -1450,7 +1488,7 @@ brasero_io_get_file_count_destroy (BraseroAsyncTaskManager *manager,
 
 	brasero_io_job_progress_report_stop (BRASERO_IO (manager), callback_data);
 
-	brasero_io_job_free (BRASERO_IO (manager), cancelled, callback_data);
+	brasero_io_job_free (cancelled, callback_data);
 }
 
 #ifdef BUILD_PLAYLIST
@@ -1704,8 +1742,7 @@ brasero_io_get_file_count_thread (BraseroAsyncTaskManager *manager,
 		g_file_info_set_attribute_uint64 (info, BRASERO_IO_COUNT_SIZE, data->total_b);
 		g_file_info_set_attribute_uint32 (info, BRASERO_IO_COUNT_NUM, data->files_num);
 
-		brasero_io_return_result (BRASERO_IO (manager),
-					  data->job.base,
+		brasero_io_return_result (data->job.base,
 					  NULL,
 					  info,
 					  NULL,
@@ -1736,13 +1773,13 @@ static const BraseroAsyncTaskType count_type = {
 };
 
 void
-brasero_io_get_file_count (BraseroIO *self,
-			   GSList *uris,
+brasero_io_get_file_count (GSList *uris,
 			   const BraseroIOJobBase *base,
 			   BraseroIOFlags options,
 			   gpointer user_data)
 {
 	BraseroIOCountData *data;
+	BraseroIO *self = brasero_io_get_default ();
 	BraseroIOResultCallbackData *callback_data = NULL;
 
 	if (user_data) {
@@ -1761,7 +1798,8 @@ brasero_io_get_file_count (BraseroIO *self,
 			    options,
 			    callback_data);
 
-	brasero_io_push_job (self, BRASERO_IO_JOB (data), &count_type);
+	brasero_io_push_job (BRASERO_IO_JOB (data), &count_type);
+	g_object_unref (self);
 }
 
 /**
@@ -1784,7 +1822,7 @@ brasero_io_load_directory_destroy (BraseroAsyncTaskManager *manager,
 	g_slist_foreach (data->children, (GFunc) g_object_unref, NULL);
 	g_slist_free (data->children);
 
-	brasero_io_job_free (BRASERO_IO (manager), cancelled, BRASERO_IO_JOB (data));
+	brasero_io_job_free (cancelled, BRASERO_IO_JOB (data));
 }
 
 #ifdef BUILD_PLAYLIST
@@ -1832,8 +1870,7 @@ brasero_io_load_directory_playlist (BraseroIO *self,
 
 		if (result) {
 			brasero_io_set_metadata_attributes (info, &metadata);
-			brasero_io_return_result (self,
-						  data->job.base,
+			brasero_io_return_result (data->job.base,
 						  child_uri,
 						  info,
 						  NULL,
@@ -1898,8 +1935,7 @@ brasero_io_load_directory_thread (BraseroAsyncTaskManager *manager,
 		gchar *directory_uri;
 
 		directory_uri = g_file_get_uri (file);
-		brasero_io_return_result (BRASERO_IO (manager),
-					  data->job.base,
+		brasero_io_return_result (data->job.base,
 					  directory_uri,
 					  NULL,
 					  error,
@@ -1946,8 +1982,7 @@ brasero_io_load_directory_thread (BraseroAsyncTaskManager *manager,
 
 				/* since we checked for the existence of the file
 				 * an error means a looping symbolic link */
-				brasero_io_return_result (BRASERO_IO (manager),
-							  data->job.base,
+				brasero_io_return_result (data->job.base,
 							  child_uri,
 							  NULL,
 							  error,
@@ -1961,8 +1996,7 @@ brasero_io_load_directory_thread (BraseroAsyncTaskManager *manager,
 		}
 
 		if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {
-			brasero_io_return_result (BRASERO_IO (manager),
-						  data->job.base,
+			brasero_io_return_result (data->job.base,
 						  child_uri,
 						  info,
 						  NULL,
@@ -2016,8 +2050,7 @@ brasero_io_load_directory_thread (BraseroAsyncTaskManager *manager,
 			brasero_metadata_info_clear (&metadata);
 		}
 
-		brasero_io_return_result (BRASERO_IO (manager),
-					  data->job.base,
+		brasero_io_return_result (data->job.base,
 					  child_uri,
 					  info,
 					  NULL,
@@ -2042,13 +2075,13 @@ static const BraseroAsyncTaskType contents_type = {
 };
 
 void
-brasero_io_load_directory (BraseroIO *self,
-			   const gchar *uri,
+brasero_io_load_directory (const gchar *uri,
 			   const BraseroIOJobBase *base,
 			   BraseroIOFlags options,
 			   gpointer user_data)
 {
 	BraseroIOContentsData *data;
+	BraseroIO *self = brasero_io_get_default ();
 	BraseroIOResultCallbackData *callback_data = NULL;
 
 	if (user_data) {
@@ -2063,7 +2096,8 @@ brasero_io_load_directory (BraseroIO *self,
 			    options,
 			    callback_data);
 
-	brasero_io_push_job (self, BRASERO_IO_JOB (data), &contents_type);
+	brasero_io_push_job (BRASERO_IO_JOB (data), &contents_type);
+	g_object_unref (self);
 }
 
 static void
@@ -2102,12 +2136,12 @@ brasero_io_cancel_tasks_by_base_cb (BraseroAsyncTaskManager *manager,
 }
 
 void
-brasero_io_cancel_by_base (BraseroIO *self,
-			   BraseroIOJobBase *base)
+brasero_io_cancel_by_base (BraseroIOJobBase *base)
 {
 	GSList *iter;
 	GSList *next;
 	BraseroIOPrivate *priv;
+	BraseroIO *self = brasero_io_get_default ();
 
 	priv = BRASERO_IO_PRIVATE (self);
 
@@ -2131,6 +2165,8 @@ brasero_io_cancel_by_base (BraseroIO *self,
 
 		brasero_io_cancel_result (self, result);
 	}
+
+	g_object_unref (self);
 }
 
 static gboolean
@@ -2147,12 +2183,12 @@ brasero_io_cancel_tasks_by_data_cb (BraseroAsyncTaskManager *manager,
 }
 
 void
-brasero_io_cancel_by_data (BraseroIO *self,
-			   gpointer callback_data)
+brasero_io_cancel_by_data (gpointer callback_data)
 {
 	GSList *iter;
 	GSList *next;
 	BraseroIOPrivate *priv;
+	BraseroIO *self = brasero_io_get_default ();
 
 	priv = BRASERO_IO_PRIVATE (self);
 
@@ -2176,6 +2212,8 @@ brasero_io_cancel_by_data (BraseroIO *self,
 
 		brasero_io_cancel_result (self, result);
 	}
+
+	g_object_unref (self);
 }
 
 struct _BraseroIOJobCompareData {
@@ -2203,12 +2241,12 @@ brasero_io_compare_unprocessed_task (BraseroAsyncTaskManager *manager,
 }
 
 void
-brasero_io_find_urgent (BraseroIO *self,
-			const BraseroIOJobBase *base,
+brasero_io_find_urgent (const BraseroIOJobBase *base,
 			BraseroIOCompareCallback callback,
 			gpointer user_data)
 {
 	BraseroIOJobCompareData callback_data;
+	BraseroIO *self = brasero_io_get_default ();
 
 	callback_data.func = callback;
 	callback_data.base = base;
@@ -2217,6 +2255,7 @@ brasero_io_find_urgent (BraseroIO *self,
 	brasero_async_task_manager_find_urgent_task (BRASERO_ASYNC_TASK_MANAGER (self),
 						     brasero_io_compare_unprocessed_task,
 						     &callback_data);
+	g_object_unref (self);
 						     
 }
 
@@ -2264,7 +2303,7 @@ brasero_io_free_async_queue (BraseroAsyncTaskManager *manager,
 {
 	BraseroIOJob *job = callback_data;
 
-	brasero_io_job_free (BRASERO_IO (manager), TRUE, job);
+	brasero_io_job_free (TRUE, job);
 	return TRUE;
 }
 
@@ -2365,32 +2404,11 @@ brasero_io_class_init (BraseroIOClass *klass)
 	object_class->finalize = brasero_io_finalize;
 }
 
-static BraseroIO *singleton = NULL;
-
-static void
-brasero_io_last_reference_cb (gpointer null_data,
-			      GObject *object,
-			      gboolean is_last_ref)
-{
-	if (is_last_ref) {
-		singleton = NULL;
-		g_object_remove_toggle_ref (object,
-					    brasero_io_last_reference_cb,
-					    null_data);
-	}
-}
-
-BraseroIO *
-brasero_io_get_default ()
+void
+brasero_io_shutdown (void)
 {
 	if (singleton) {
-		g_object_ref (singleton);
-		return singleton;
+		singleton = NULL;
+		g_object_unref (singleton);
 	}
-
-	singleton = g_object_new (BRASERO_TYPE_IO, NULL);
-	g_object_add_toggle_ref (G_OBJECT (singleton),
-				 brasero_io_last_reference_cb,
-				 NULL);
-	return singleton;
 }
diff --git a/libbrasero-utils/brasero-io.h b/libbrasero-utils/brasero-io.h
index 75286db..80e47bc 100644
--- a/libbrasero-utils/brasero-io.h
+++ b/libbrasero-utils/brasero-io.h
@@ -37,28 +37,6 @@
 
 G_BEGIN_DECLS
 
-#define BRASERO_TYPE_IO             (brasero_io_get_type ())
-#define BRASERO_IO(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_IO, BraseroIO))
-#define BRASERO_IO_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), BRASERO_TYPE_IO, BraseroIOClass))
-#define BRASERO_IS_IO(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BRASERO_TYPE_IO))
-#define BRASERO_IS_IO_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), BRASERO_TYPE_IO))
-#define BRASERO_IO_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), BRASERO_TYPE_IO, BraseroIOClass))
-
-typedef struct _BraseroIOClass BraseroIOClass;
-typedef struct _BraseroIO BraseroIO;
-
-struct _BraseroIOClass
-{
-	BraseroAsyncTaskManagerClass parent_class;
-};
-
-struct _BraseroIO
-{
-	BraseroAsyncTaskManager parent_instance;
-};
-
-GType brasero_io_get_type (void) G_GNUC_CONST;
-
 typedef enum {
 	BRASERO_IO_INFO_NONE			= 0,
 	BRASERO_IO_INFO_MIME			= 1,
@@ -154,32 +132,29 @@ typedef struct _BraseroIOJob BraseroIOJob;
 #define BRASERO_IO_JOB(data)	((BraseroIOJob *) (data))
 
 void
-brasero_io_job_free (BraseroIO *self,
-		     gboolean cancelled,
+brasero_io_job_free (gboolean cancelled,
 		     BraseroIOJob *job);
 
 void
-brasero_io_set_job (BraseroIOJob *job,
+brasero_io_set_job (BraseroIOJob *self,
 		    const BraseroIOJobBase *base,
 		    const gchar *uri,
 		    BraseroIOFlags options,
 		    BraseroIOResultCallbackData *callback_data);
 
 void
-brasero_io_push_job (BraseroIO *self,
-		     BraseroIOJob *job,
+brasero_io_push_job (BraseroIOJob *job,
 		     const BraseroAsyncTaskType *type);
 
 void
-brasero_io_return_result (BraseroIO *self,
-			  const BraseroIOJobBase *base,
+brasero_io_return_result (const BraseroIOJobBase *base,
 			  const gchar *uri,
 			  GFileInfo *info,
 			  GError *error,
 			  BraseroIOResultCallbackData *callback_data);
 
-BraseroIO *
-brasero_io_get_default (void);
+void
+brasero_io_shutdown (void);
 
 BraseroIOJobBase *
 brasero_io_register (GObject *object,
@@ -188,22 +163,18 @@ brasero_io_register (GObject *object,
 		     BraseroIOProgressCallback progress);
 
 void
-brasero_io_cancel_by_data (BraseroIO *self,
-			   gpointer callback_data);
+brasero_io_cancel_by_data (gpointer callback_data);
 
 void
-brasero_io_cancel_by_base (BraseroIO *self,
-			   BraseroIOJobBase *base);
+brasero_io_cancel_by_base (BraseroIOJobBase *base);
 
 void
-brasero_io_find_urgent (BraseroIO *self,
-			const BraseroIOJobBase *base,
+brasero_io_find_urgent (const BraseroIOJobBase *base,
 			BraseroIOCompareCallback callback,
 			gpointer callback_data);			
 
 void
-brasero_io_load_image_directory (BraseroIO *self,
-				 const gchar *dev_image,
+brasero_io_load_image_directory (const gchar *dev_image,
 				 gint64 session_block,
 				 gint64 block,
 				 const BraseroIOJobBase *base,
@@ -211,26 +182,22 @@ brasero_io_load_image_directory (BraseroIO *self,
 				 gpointer user_data);
 
 void
-brasero_io_load_directory (BraseroIO *self,
-			   const gchar *uri,
+brasero_io_load_directory (const gchar *uri,
 			   const BraseroIOJobBase *base,
 			   BraseroIOFlags options,
 			   gpointer callback_data);
 void
-brasero_io_get_file_info (BraseroIO *self,
-			  const gchar *uri,
+brasero_io_get_file_info (const gchar *uri,
 			  const BraseroIOJobBase *base,
 			  BraseroIOFlags options,
 			  gpointer callback_data);
 void
-brasero_io_get_file_count (BraseroIO *self,
-			   GSList *uris,
+brasero_io_get_file_count (GSList *uris,
 			   const BraseroIOJobBase *base,
 			   BraseroIOFlags options,
 			   gpointer callback_data);
 void
-brasero_io_parse_playlist (BraseroIO *self,
-			   const gchar *uri,
+brasero_io_parse_playlist (const gchar *uri,
 			   const BraseroIOJobBase *base,
 			   BraseroIOFlags options,
 			   gpointer callback_data);
diff --git a/src/brasero-audio-disc.c b/src/brasero-audio-disc.c
index be34038..cabde9b 100644
--- a/src/brasero-audio-disc.c
+++ b/src/brasero-audio-disc.c
@@ -233,7 +233,6 @@ brasero_audio_disc_cancel_monitoring (BraseroAudioDisc *disc,
 #endif
 
 struct _BraseroAudioDiscPrivate {
-	BraseroIO *io;
 	BraseroIOJobBase *attr_changed;
 	BraseroIOJobBase *add_dir;
 	BraseroIOJobBase *add_uri;
@@ -802,12 +801,10 @@ brasero_audio_disc_init (BraseroAudioDisc *obj)
 static void
 brasero_audio_disc_reset_real (BraseroAudioDisc *disc)
 {
-	if (disc->priv->io) {
-		brasero_io_cancel_by_base (disc->priv->io, disc->priv->attr_changed);
-		brasero_io_cancel_by_base (disc->priv->io, disc->priv->add_dir);
-		brasero_io_cancel_by_base (disc->priv->io, disc->priv->add_uri);
-		brasero_io_cancel_by_base (disc->priv->io, disc->priv->add_playlist);
-	}
+	brasero_io_cancel_by_base (disc->priv->attr_changed);
+	brasero_io_cancel_by_base (disc->priv->add_dir);
+	brasero_io_cancel_by_base (disc->priv->add_uri);
+	brasero_io_cancel_by_base (disc->priv->add_playlist);
 
 #ifdef BUILD_INOTIFY
 
@@ -831,8 +828,8 @@ brasero_audio_disc_reset_real (BraseroAudioDisc *disc)
 		disc->priv->monitored = NULL;
 	}
 
-	if (disc->priv->reload_uri && disc->priv->io)
-		brasero_io_cancel_by_base (disc->priv->io, disc->priv->reload_uri);
+	if (disc->priv->reload_uri && disc->priv->reload_uri)
+		brasero_io_cancel_by_base (disc->priv->reload_uri);
 
 #endif
 
@@ -867,23 +864,18 @@ brasero_audio_disc_finalize (GObject *object)
 
 #endif
 	
-	if (cobj->priv->io) {
-		brasero_io_cancel_by_base (cobj->priv->io, cobj->priv->attr_changed);
-		brasero_io_cancel_by_base (cobj->priv->io, cobj->priv->add_dir);
-		brasero_io_cancel_by_base (cobj->priv->io, cobj->priv->add_uri);
-		brasero_io_cancel_by_base (cobj->priv->io, cobj->priv->add_playlist);
-		g_free (cobj->priv->attr_changed);
-		g_free (cobj->priv->add_dir);
-		g_free (cobj->priv->add_uri);
-		g_free (cobj->priv->add_playlist);
-		cobj->priv->attr_changed = NULL;
-		cobj->priv->add_dir = NULL;
-		cobj->priv->add_uri = NULL;
-		cobj->priv->add_playlist = NULL;
-
-		g_object_unref (cobj->priv->io);
-		cobj->priv->io = NULL;
-	}
+	brasero_io_cancel_by_base (cobj->priv->attr_changed);
+	brasero_io_cancel_by_base (cobj->priv->add_dir);
+	brasero_io_cancel_by_base (cobj->priv->add_uri);
+	brasero_io_cancel_by_base (cobj->priv->add_playlist);
+	g_free (cobj->priv->attr_changed);
+	g_free (cobj->priv->add_dir);
+	g_free (cobj->priv->add_uri);
+	g_free (cobj->priv->add_playlist);
+	cobj->priv->attr_changed = NULL;
+	cobj->priv->add_dir = NULL;
+	cobj->priv->add_uri = NULL;
+	cobj->priv->add_playlist = NULL;
 
 	if (cobj->priv->manager) {
 		g_object_unref (cobj->priv->manager);
@@ -1444,9 +1436,6 @@ static BraseroDiscResult
 brasero_audio_disc_visit_dir_async (BraseroAudioDisc *disc,
 				    const gchar *uri)
 {
-	if (!disc->priv->io)
-		disc->priv->io = brasero_io_get_default ();
-
 	if (!disc->priv->add_dir)
 		disc->priv->add_dir = brasero_io_register (G_OBJECT (disc),
 							   brasero_audio_disc_result,
@@ -1456,8 +1445,7 @@ brasero_audio_disc_visit_dir_async (BraseroAudioDisc *disc,
 	brasero_audio_disc_increase_activity_counter (disc);
 
 	/* we have to pass a dummy value here otherwise finished is never called */
-	brasero_io_load_directory (disc->priv->io,
-				   uri,
+	brasero_io_load_directory (uri,
 				   disc->priv->add_dir,
 				   BRASERO_IO_INFO_MIME|
 				   BRASERO_IO_INFO_PERM|
@@ -1505,9 +1493,6 @@ static BraseroDiscResult
 brasero_audio_disc_add_playlist (BraseroAudioDisc *disc,
 				 const gchar *uri)
 {
-	if (!disc->priv->io)
-		disc->priv->io = brasero_io_get_default ();
-
 	if (!disc->priv->add_playlist)
 		disc->priv->add_playlist = brasero_io_register (G_OBJECT (disc),
 								brasero_audio_disc_result,
@@ -1515,8 +1500,7 @@ brasero_audio_disc_add_playlist (BraseroAudioDisc *disc,
 								NULL);
 
 	brasero_audio_disc_increase_activity_counter (disc);
-	brasero_io_parse_playlist (disc->priv->io,
-				   uri,
+	brasero_io_parse_playlist (uri,
 				   disc->priv->add_playlist,
 				   BRASERO_IO_INFO_PERM|
 				   BRASERO_IO_INFO_MIME|
@@ -1743,9 +1727,6 @@ brasero_audio_disc_add_uri_real (BraseroAudioDisc *disc,
 		gtk_tree_path_free (treepath);
 
 	/* get info async for the file */
-	if (!disc->priv->io)
-		disc->priv->io = brasero_io_get_default ();
-
 	if (!disc->priv->add_uri)
 		disc->priv->add_uri = brasero_io_register (G_OBJECT (disc),
 							   brasero_audio_disc_new_row_cb,
@@ -1754,8 +1735,7 @@ brasero_audio_disc_add_uri_real (BraseroAudioDisc *disc,
 	/* FIXME: if cancelled ref won't be destroyed ? 
 	 * no, since the callback is always called even if there is an error */
 	brasero_audio_disc_increase_activity_counter (disc);
-	brasero_io_get_file_info (disc->priv->io,
-				  uri,
+	brasero_io_get_file_info (uri,
 				  disc->priv->add_uri,
 				  BRASERO_IO_INFO_PERM|
 				  BRASERO_IO_INFO_MIME|
@@ -4038,17 +4018,13 @@ brasero_audio_disc_inotify_move (BraseroAudioDisc *disc,
 
 			/* we are only interested if the destination is in our tree
 			 * then that means the file was modified */
-			if (!disc->priv->io)
-				disc->priv->io = brasero_io_get_default ();
-
 			if (!disc->priv->reload_uri)
 				disc->priv->reload_uri = brasero_io_register (G_OBJECT (disc),
 									      brasero_audio_disc_inotify_modify_result,
 									      NULL,
 									      NULL);
 
-			brasero_io_get_file_info (disc->priv->io,
-						  uri,
+			brasero_io_get_file_info (uri,
 						  disc->priv->reload_uri,
 						  BRASERO_IO_INFO_PERM|
 						  BRASERO_IO_INFO_MIME|
@@ -4093,9 +4069,6 @@ static gboolean
 brasero_audio_disc_inotify_attributes_changed (BraseroAudioDisc *disc,
 					       const gchar *uri)
 {
-	if (!disc->priv->io)
-		disc->priv->io = brasero_io_get_default ();
-
 	if (!disc->priv->attr_changed)
 		disc->priv->attr_changed = brasero_io_register (G_OBJECT (disc),
 								brasero_audio_disc_inotify_attributes_changed_cb,
@@ -4103,8 +4076,7 @@ brasero_audio_disc_inotify_attributes_changed (BraseroAudioDisc *disc,
 								NULL);
 
 	brasero_audio_disc_increase_activity_counter (disc);
-	brasero_io_get_file_info (disc->priv->io,
-				  uri,
+	brasero_io_get_file_info (uri,
 				  disc->priv->attr_changed,
 				  BRASERO_IO_INFO_PERM,
 				  NULL);
@@ -4243,17 +4215,13 @@ brasero_audio_disc_inotify_monitor_cb (GIOChannel *channel,
 		}
 		else if (event.mask & IN_MODIFY
 		     &&  brasero_audio_disc_inotify_is_in_selection (disc, monitored)) {
-			if (!disc->priv->io)
-				disc->priv->io = brasero_io_get_default ();
-
 			if (!disc->priv->reload_uri)
 				disc->priv->reload_uri = brasero_io_register (G_OBJECT (disc),
 									      brasero_audio_disc_inotify_modify_result,
 									      NULL,
 									      NULL);
 
-			brasero_io_get_file_info (disc->priv->io,
-						  monitored,
+			brasero_io_get_file_info (monitored,
 						  disc->priv->reload_uri,
 						  BRASERO_IO_INFO_PERM|
 						  BRASERO_IO_INFO_MIME|
diff --git a/src/brasero-player.c b/src/brasero-player.c
index c5ac485..ed8b6d9 100644
--- a/src/brasero-player.c
+++ b/src/brasero-player.c
@@ -78,7 +78,6 @@ struct BraseroPlayerPrivate {
 
 	BraseroPlayerBaconState state;
 
-	BraseroIO *io;
 	BraseroIOJobBase *meta_task;
 
 	gchar *uri;
@@ -953,17 +952,13 @@ brasero_player_metadata_completed (GObject *obj,
 static void
 brasero_player_retrieve_metadata (BraseroPlayer *player)
 {
-	if (!player->priv->io)
-		player->priv->io = brasero_io_get_default ();
-
 	if (!player->priv->meta_task)
 		player->priv->meta_task = brasero_io_register (G_OBJECT (player),
 							       brasero_player_metadata_completed,
 							       NULL,
 							       NULL);
 
-	brasero_io_get_file_info (player->priv->io,
-				  player->priv->uri,
+	brasero_io_get_file_info (player->priv->uri,
 				  player->priv->meta_task,
 				  BRASERO_IO_INFO_METADATA|
 				  BRASERO_IO_INFO_MIME,
@@ -1037,9 +1032,8 @@ brasero_player_set_uri (BraseroPlayer *player,
 	player->priv->start = 0;
 	player->priv->end = 0;
 
-	if (player->priv->io)
-		brasero_io_cancel_by_base (player->priv->io,
-					   player->priv->meta_task);
+	if (player->priv->meta_task)
+		brasero_io_cancel_by_base (player->priv->meta_task);
 
 	/* That stops the pipeline from playing */
 	brasero_player_bacon_set_uri (BRASERO_PLAYER_BACON (player->priv->bacon), NULL);
@@ -1288,17 +1282,11 @@ brasero_player_destroy (GtkObject *obj)
 	}
 
 	if (player->priv->meta_task){
-		brasero_io_cancel_by_base (player->priv->io,
-					   player->priv->meta_task);
+		brasero_io_cancel_by_base (player->priv->meta_task);
 		g_free (player->priv->meta_task);
 		player->priv->meta_task = 0;
 	}
 
-	if (player->priv->io) {
-		g_object_unref (player->priv->io);
-		player->priv->io = NULL;
-	}
-
 	if (GTK_OBJECT_CLASS (parent_class)->destroy)
 		GTK_OBJECT_CLASS (parent_class)->destroy (obj);
 }
diff --git a/src/brasero-playlist.c b/src/brasero-playlist.c
index de689a8..c1aa26a 100644
--- a/src/brasero-playlist.c
+++ b/src/brasero-playlist.c
@@ -79,7 +79,6 @@ struct BraseroPlaylistPrivate {
 	GtkWidget *button_remove;
 	guint activity_counter;
 
-	BraseroIO *io;
 	BraseroIOJobBase *parse_type;
 
 	gint searched:1;
@@ -252,8 +251,6 @@ brasero_playlist_init (BraseroPlaylist *obj)
 	obj->priv = g_new0 (BraseroPlaylistPrivate, 1);
 	gtk_box_set_spacing (GTK_BOX (obj), BRASERO_PLAYLIST_SPACING);
 
-	obj->priv->io = brasero_io_get_default ();
-
 	hbox = gtk_hbox_new (FALSE, 8);
 	gtk_widget_show (hbox);
 
@@ -436,15 +433,10 @@ brasero_playlist_destroy (GtkObject *object)
 	/* NOTE: we must do it here since cancel could call brasero_playlist_end
 	 * itself calling decrease_activity_counter. In finalize the latter will
 	 * raise problems since the GdkWindow has been destroyed */
-	if (playlist->priv->io) {
-		brasero_io_cancel_by_base (playlist->priv->io,
-					   playlist->priv->parse_type);
-
+	if (playlist->priv->parse_type) {
+		brasero_io_cancel_by_base (playlist->priv->parse_type);
 		g_free (playlist->priv->parse_type);
 		playlist->priv->parse_type = NULL;
-
-		g_object_unref (playlist->priv->io);
-		playlist->priv->io = NULL;
 	}
 
 	if (GTK_OBJECT_CLASS (parent_class)->destroy)
@@ -976,11 +968,10 @@ brasero_playlist_add_uri_playlist (BraseroPlaylist *playlist,
 	if (!playlist->priv->parse_type)
 		playlist->priv->parse_type = brasero_io_register (G_OBJECT (playlist),
 								  brasero_playlist_parse_result,
-								  brasero_playlist_parse_end,
+								  brasero_playlist_parse_end, 
 								  NULL);
 
-	brasero_io_parse_playlist (playlist->priv->io,
-				   uri,
+	brasero_io_parse_playlist (uri,
 				   playlist->priv->parse_type,
 				   BRASERO_IO_INFO_PERM|
 				   BRASERO_IO_INFO_MIME|
diff --git a/src/brasero-project-manager.c b/src/brasero-project-manager.c
index eb404f4..b47fb58 100644
--- a/src/brasero-project-manager.c
+++ b/src/brasero-project-manager.c
@@ -156,7 +156,6 @@ static const char *description = {
 };
 
 struct BraseroProjectManagerPrivate {
-	BraseroIO *io;
 	BraseroProjectType type;
 	BraseroIOJobBase *size_preview;
 
@@ -319,7 +318,7 @@ brasero_project_manager_size_preview (GObject *object,
 					       invalid_num,
 					       files_num);
 }
-
+/*
 static void
 brasero_project_manager_size_preview_progress (GObject *object,
 					       BraseroIOJobProgress *progress,
@@ -336,7 +335,7 @@ brasero_project_manager_size_preview_progress (GObject *object,
 					       0,
 					       files_num);
 }
-
+*/
 static gboolean
 brasero_project_manager_selected_uris_preview (gpointer data)
 {
@@ -345,14 +344,11 @@ brasero_project_manager_selected_uris_preview (gpointer data)
 	GSList *list = NULL;
 	gchar **iter;
 
-	if (!manager->priv->io)
-		manager->priv->io = brasero_io_get_default ();
-
 	if (!manager->priv->size_preview)
 		manager->priv->size_preview = brasero_io_register (G_OBJECT (manager),
 								   brasero_project_manager_size_preview,
 								   NULL,
-								   brasero_project_manager_size_preview_progress);
+								   NULL);
     
 	for (iter = manager->priv->selected; iter && *iter; iter ++)
 		list = g_slist_prepend (list, *iter);
@@ -364,8 +360,7 @@ brasero_project_manager_selected_uris_preview (gpointer data)
 	else if (manager->priv->type == BRASERO_PROJECT_TYPE_DATA)
 		flags |= BRASERO_IO_INFO_RECURSIVE;
 
-	brasero_io_get_file_count (manager->priv->io,
-				   list,
+	brasero_io_get_file_count (list,
 				   manager->priv->size_preview,
 				   flags,
 				   NULL);
@@ -424,9 +419,8 @@ brasero_project_manager_selected_uris_changed (BraseroURIContainer *container,
 
 	/* if we are in the middle of an unfinished size seek then
 	 * cancel it and re-initialize */
-	if (manager->priv->io)
-		brasero_io_cancel_by_base (manager->priv->io,
-					   manager->priv->size_preview);
+	if (manager->priv->size_preview)
+		brasero_io_cancel_by_base (manager->priv->size_preview);
 
 	if (manager->priv->selected) {
 		g_strfreev (manager->priv->selected);
@@ -469,9 +463,8 @@ brasero_project_manager_sidepane_changed (BraseroLayout *layout,
  		GtkWidget *status;
  
 		/* If sidepane is disabled, remove any text about selection */
-		if (manager->priv->io)
-			brasero_io_cancel_by_base (manager->priv->io,
-						   manager->priv->size_preview);
+		if (manager->priv->size_preview)
+			brasero_io_cancel_by_base (manager->priv->size_preview);
 
  		status = brasero_app_get_statusbar1 (brasero_app_get_default ());
 
@@ -1166,14 +1159,10 @@ brasero_project_manager_finalize (GObject *object)
 
 	cobj = BRASERO_PROJECT_MANAGER (object);
 
-	if (cobj->priv->io) {
-		brasero_io_cancel_by_base (cobj->priv->io, cobj->priv->size_preview);
-
+	if (cobj->priv->size_preview) {
+		brasero_io_cancel_by_base (cobj->priv->size_preview);
 		g_free (cobj->priv->size_preview);
 		cobj->priv->size_preview = NULL;
-
-		g_object_unref (cobj->priv->io);
-		cobj->priv->io = NULL;
 	}
 
 	if (cobj->priv->preview_id) {
diff --git a/src/brasero-video-project.c b/src/brasero-video-project.c
index f1cece5..5bc09ee 100644
--- a/src/brasero-video-project.c
+++ b/src/brasero-video-project.c
@@ -37,7 +37,6 @@ struct _BraseroVideoProjectPrivate
 	guint ref_count;
 	GHashTable *references;
 
-	BraseroIO *io;
 	BraseroIOJobBase *load_uri;
 	BraseroIOJobBase *load_dir;
 
@@ -379,13 +378,14 @@ brasero_video_project_reset (BraseroVideoProject *self)
 	priv = BRASERO_VIDEO_PROJECT_PRIVATE (self);
 
 	/* cancel all VFS operations */
-	if (priv->io) {
-		brasero_io_cancel_by_base (priv->io, priv->load_uri);
-		brasero_io_cancel_by_base (priv->io, priv->load_dir);
-
+	if (priv->load_uri) {
+		brasero_io_cancel_by_base (priv->load_uri);
 		g_free (priv->load_uri);
 		priv->load_uri = NULL;
+	}
 
+	if (priv->load_dir) {
+		brasero_io_cancel_by_base (priv->load_dir);
 		g_free (priv->load_dir);
 		priv->load_dir = NULL;
 	}
@@ -632,9 +632,6 @@ brasero_video_project_add_directory_contents (BraseroVideoProject *self,
 
 	priv = BRASERO_VIDEO_PROJECT_PRIVATE (self);
 
-	if (!priv->io)
-		priv->io = brasero_io_get_default ();
-
 	if (!priv->load_dir)
 		priv->load_dir = brasero_io_register (G_OBJECT (self),
 						      brasero_video_project_add_directory_contents_result,
@@ -649,8 +646,7 @@ brasero_video_project_add_directory_contents (BraseroVideoProject *self,
 
 	ref = brasero_video_project_reference_new (self, sibling);
 
-	brasero_io_load_directory (priv->io,
-				   uri,
+	brasero_io_load_directory (uri,
 				   priv->load_dir,
 				   BRASERO_IO_INFO_MIME|
 				   BRASERO_IO_INFO_PERM|
@@ -818,9 +814,6 @@ brasero_video_project_add_uri (BraseroVideoProject *self,
 		klass->node_added (self, file);
 
 	/* get info async for the file */
-	if (!priv->io)
-		priv->io = brasero_io_get_default ();
-
 	if (!priv->load_uri)
 		priv->load_uri = brasero_io_register (G_OBJECT (self),
 						      brasero_video_project_result_cb,
@@ -831,8 +824,7 @@ brasero_video_project_add_uri (BraseroVideoProject *self,
 	priv->loading ++;
 
 	ref = brasero_video_project_reference_new (self, file);
-	brasero_io_get_file_info (priv->io,
-				  uri,
+	brasero_io_get_file_info (uri,
 				  priv->load_uri,
 				  BRASERO_IO_INFO_PERM|
 				  BRASERO_IO_INFO_MIME|
@@ -1103,15 +1095,14 @@ brasero_video_project_file_modified (BraseroFileMonitor *monitor,
 
 	/* priv->load_uri has already been initialized otherwise the tree would
 	 * be empty. But who knows... */
-	if (!priv->io || !priv->load_uri)
+	if (!priv->load_uri)
 		return;
 
 	file = callback_data;
 	file->is_reloading = TRUE;
 
 	ref = brasero_video_project_reference_new (BRASERO_VIDEO_PROJECT (monitor), file);
-	brasero_io_get_file_info (priv->io,
-				  file->uri,
+	brasero_io_get_file_info (file->uri,
 				  priv->load_uri,
 				  BRASERO_IO_INFO_PERM|
 				  BRASERO_IO_INFO_MIME|



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]