brasero r1690 - in trunk: . src/plugins/checksum src/plugins/dvdcss src/plugins/libburnia src/plugins/local-track



Author: philippr
Date: Mon Jan  5 17:25:10 2009
New Revision: 1690
URL: http://svn.gnome.org/viewvc/brasero?rev=1690&view=rev

Log:
2009-01-05  Philippe Rouquier  <ykw localhost localdomain>

	Fix a very rare race condition problem with little amount of data

	* src/plugins/checksum/burn-checksum-files.c
	(brasero_checksum_files_start):
	* src/plugins/checksum/burn-checksum-image.c
	(brasero_checksum_image_start):
	* src/plugins/dvdcss/burn-dvdcss.c (brasero_dvdcss_start):
	* src/plugins/libburnia/burn-libisofs.c
	(brasero_libisofs_create_image), (brasero_libisofs_create_volume):
	* src/plugins/local-track/burn-local-image.c
	(brasero_local_track_start_thread):
	* src/plugins/local-track/burn-uri.c (brasero_burn_uri_thread),
	(brasero_burn_uri_start_thread):


Modified:
   trunk/ChangeLog
   trunk/src/plugins/checksum/burn-checksum-files.c
   trunk/src/plugins/checksum/burn-checksum-image.c
   trunk/src/plugins/dvdcss/burn-dvdcss.c
   trunk/src/plugins/libburnia/burn-libisofs.c
   trunk/src/plugins/local-track/burn-local-image.c
   trunk/src/plugins/local-track/burn-uri.c

Modified: trunk/src/plugins/checksum/burn-checksum-files.c
==============================================================================
--- trunk/src/plugins/checksum/burn-checksum-files.c	(original)
+++ trunk/src/plugins/checksum/burn-checksum-files.c	Mon Jan  5 17:25:10 2009
@@ -1139,10 +1139,12 @@
 
 	/* we start a thread for the exploration of the graft points */
 	priv = BRASERO_CHECKSUM_FILES_PRIVATE (job);
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_checksum_files_thread,
 					BRASERO_CHECKSUM_FILES (job),
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
 
 	if (!priv->thread)
 		return BRASERO_BURN_ERR;

Modified: trunk/src/plugins/checksum/burn-checksum-image.c
==============================================================================
--- trunk/src/plugins/checksum/burn-checksum-image.c	(original)
+++ trunk/src/plugins/checksum/burn-checksum-image.c	Mon Jan  5 17:25:10 2009
@@ -611,10 +611,13 @@
 
 	/* we start a thread for the exploration of the graft points */
 	priv = BRASERO_CHECKSUM_IMAGE_PRIVATE (job);
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_checksum_image_thread,
 					BRASERO_CHECKSUM_IMAGE (job),
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
+
 	if (!priv->thread)
 		return BRASERO_BURN_ERR;
 

Modified: trunk/src/plugins/dvdcss/burn-dvdcss.c
==============================================================================
--- trunk/src/plugins/dvdcss/burn-dvdcss.c	(original)
+++ trunk/src/plugins/dvdcss/burn-dvdcss.c	Mon Jan  5 17:25:10 2009
@@ -550,10 +550,12 @@
 	if (!brasero_dvdcss_library_init (error))
 		return BRASERO_BURN_ERR;
 
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_dvdcss_write_image_thread,
 					self,
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
 
 	if (!priv->thread)
 		return BRASERO_BURN_ERR;

Modified: trunk/src/plugins/libburnia/burn-libisofs.c
==============================================================================
--- trunk/src/plugins/libburnia/burn-libisofs.c	(original)
+++ trunk/src/plugins/libburnia/burn-libisofs.c	Mon Jan  5 17:25:10 2009
@@ -312,10 +312,12 @@
 
 	iso_set_msgs_severities ("NEVER", "ALL", "brasero (libisofs)");
 
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_libisofs_thread_started,
 					self,
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
 	if (!priv->thread)
 		return BRASERO_BURN_ERR;
 
@@ -840,10 +842,12 @@
 	}
 
 	iso_set_msgs_severities ("NEVER", "ALL", "brasero (libisofs)");
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_libisofs_create_volume_thread,
 					self,
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
 	if (!priv->thread)
 		return BRASERO_BURN_ERR;
 

Modified: trunk/src/plugins/local-track/burn-local-image.c
==============================================================================
--- trunk/src/plugins/local-track/burn-local-image.c	(original)
+++ trunk/src/plugins/local-track/burn-local-image.c	Mon Jan  5 17:25:10 2009
@@ -784,10 +784,13 @@
 	if (priv->thread)
 		return BRASERO_BURN_RUNNING;
 
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_local_track_thread,
 					self,
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
+
 	if (!priv->thread) 
 		return BRASERO_BURN_ERR;
 

Modified: trunk/src/plugins/local-track/burn-uri.c
==============================================================================
--- trunk/src/plugins/local-track/burn-uri.c	(original)
+++ trunk/src/plugins/local-track/burn-uri.c	Mon Jan  5 17:25:10 2009
@@ -342,15 +342,15 @@
 
 end:
 
-	 if (!g_cancellable_is_cancelled (priv->cancel))
+	if (!g_cancellable_is_cancelled (priv->cancel))
 		priv->thread_id = g_idle_add ((GSourceFunc) brasero_burn_uri_thread_finished, self);
 
 	/* End thread */
 	g_mutex_lock (priv->mutex);
-	priv->thread = NULL;
+	g_atomic_pointer_set (&priv->thread, NULL);
 	g_cond_signal (priv->cond);
 	g_mutex_unlock (priv->mutex);
- 
+
 	g_thread_exit (NULL);
 
 	return NULL;
@@ -367,10 +367,12 @@
 	if (priv->thread)
 		return BRASERO_BURN_RUNNING;
 
+	g_mutex_lock (priv->mutex);
 	priv->thread = g_thread_create (brasero_burn_uri_thread,
 					self,
 					TRUE,
 					error);
+	g_mutex_unlock (priv->mutex);
 	if (!priv->thread) 
 		return BRASERO_BURN_ERR;
 



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