From 66676af57b01d463d6645a23d910ecc67687ddf2 Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Wed, 17 Feb 2010 19:33:20 +0100 Subject: [PATCH] Agguinti Gdk.Threads.Enter () e Gdk.Threads.Leave () per non far morire il loop gtk. --- Dizzy/AuthDialog.cs | 5 +++++ Dizzy/EventManager.cs | 36 +++++++++++++++++++++++++++++++----- Dizzy/Protocol.cs | 8 ++++---- 3 files changed, 40 insertions(+), 9 deletions(-) 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 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"); } -- 2.1.4