Agguinti Gdk.Threads.Enter () e Gdk.Threads.Leave () per non far

Leonardo Robol [2010-02-17 18:33]
Agguinti Gdk.Threads.Enter () e Gdk.Threads.Leave () per non far
morire il loop gtk.
Filename
Dizzy/AuthDialog.cs
Dizzy/EventManager.cs
Dizzy/Protocol.cs
diff --git a/Dizzy/AuthDialog.cs b/Dizzy/AuthDialog.cs
index 5fefda9..b966792 100644
--- a/Dizzy/AuthDialog.cs
+++ b/Dizzy/AuthDialog.cs
@@ -23,6 +23,11 @@ namespace Dizzy
 		public AuthDialog ()
 		{
 			this.Build ();
+			string user = GlobalConfig.GetValue("user");
+			if (user != "")
+			{
+				userEntry.Text = user;
+			}
 		}
 		protected virtual void OnUserEntryActivated (object sender, System.EventArgs e)
 		{
diff --git a/Dizzy/EventManager.cs b/Dizzy/EventManager.cs
index aa790d0..3d33f89 100644
--- a/Dizzy/EventManager.cs
+++ b/Dizzy/EventManager.cs
@@ -40,6 +40,7 @@ namespace Dizzy
 		public static void ErrorMessage (string message) {

 			GLib.Idle.Add(delegate {
+				Gdk.Threads.Enter ();
 				Log.Error (message);

 				MessageDialog d = new Gtk.MessageDialog(null,
@@ -49,6 +50,7 @@ namespace Dizzy
 				d.Markup = message;
 				d.Run ();
 				d.Destroy ();
+				Gdk.Threads.Leave ();
 				return false;
 			});
 		}
@@ -74,7 +76,13 @@ namespace Dizzy
 		}

 		public static void AuthenticationRequired () {
-			GLib.Idle.Add (delegate { return AuthenticationDialog (); });
+			GLib.Idle.Add (delegate {
+				bool val;
+				Gdk.Threads.Enter ();
+				val = AuthenticationDialog ();
+				Gdk.Threads.Leave ();
+				return val;
+			});
 			WaitForAuthentication ();
 		}

@@ -105,8 +113,10 @@ namespace Dizzy
 			else
 			{
 				GLib.Idle.Add(delegate {
+					Gdk.Threads.Enter ();
 					searchInProgress.Destroy ();
 					searchInProgress = null;
+					Gdk.Threads.Leave ();
 					return false;
 				});
 			}
@@ -151,7 +161,9 @@ namespace Dizzy
 			if (fileTreeView == null) { return; }
 			GLib.Idle.Add(delegate {
 				lock(fileTreeView) {
+					Gdk.Threads.Enter ();
 					fileTreeView.AddFile (f);
+					Gdk.Threads.Leave ();
 				}
 				return false;
 			});
@@ -161,7 +173,9 @@ namespace Dizzy
 			if (fileTreeView == null) { return; }
 			GLib.Idle.Add(delegate {
 				lock(fileTreeView) {
-				fileTreeView.Clear ();
+					Gdk.Threads.Enter ();
+					fileTreeView.Clear ();
+					Gdk.Threads.Leave ();
 				}
 				return false;
 			});
@@ -173,7 +187,9 @@ namespace Dizzy
 				return;
 			GLib.Idle.Add (delegate {
 				lock(taskTreeView) {
-				EventManager.AddIter(GUID, taskTreeView.AddTask (filename, perc));
+					Gdk.Threads.Enter ();
+					EventManager.AddIter(GUID, taskTreeView.AddTask (filename, perc));
+					Gdk.Threads.Leave ();
 				}
 				return false;
 			});
@@ -196,7 +212,9 @@ namespace Dizzy
 			}
 			GLib.Idle.Add(delegate {
 				lock (taskTreeView) {
-				taskTreeView.SetProgress (iter, perc);
+					Gdk.Threads.Enter ();
+					taskTreeView.SetProgress (iter, perc);
+					Gdk.Threads.Leave ();
 				}
 				return false;
 			});
@@ -209,7 +227,10 @@ namespace Dizzy
 			TreeIter iter = iters[GUID];
 			GLib.Idle.Add (delegate {
 				lock (taskTreeView) {
-				taskTreeView.DeleteRow (iter); }
+					Gdk.Threads.Enter ();
+					taskTreeView.DeleteRow (iter);
+					Gdk.Threads.Leave ();
+				}
 				return false;
 			});
 			iters.Remove (GUID);
@@ -240,8 +261,13 @@ namespace Dizzy
 		{
 			foreach(KeyValuePair<string, TreeIter> pair in iters)
 			{
+				Gdk.Threads.Enter ();
 				if (taskTreeView.IterToPath (pair.Value).Compare(path) == 0)
+				{
+					Gdk.Threads.Leave ();
 					return pair.Key;
+				}
+				Gdk.Threads.Leave ();
 			}
 			Log.Warning ("TreePath non trovato, ritorno null");
 			return null;
diff --git a/Dizzy/Protocol.cs b/Dizzy/Protocol.cs
index 31b6ca9..399b661 100644
--- a/Dizzy/Protocol.cs
+++ b/Dizzy/Protocol.cs
@@ -110,9 +110,9 @@ namespace Dizzy
 			}


-			// this.listUpdater = new Thread (new ThreadStart (this._UpdateFileList));
-			// this.listUpdater.Start ();
-			_UpdateFileList ();
+			this.listUpdater = new Thread (new ThreadStart (this._UpdateFileList));
+			this.listUpdater.Start ();
+			// _UpdateFileList ();
 		}


@@ -127,7 +127,7 @@ namespace Dizzy
 			{
 				Log.Info ("I dati di autenticazione non sono presenti");

-				EventManager.AuthenticationDialog ();
+				EventManager.AuthenticationRequired ();

 				Log.Info ("Ho acquisito utente e password");
 			}
ViewGit