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.
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");
}