nemo r79 - trunk/common



Author: arj
Date: Thu Feb  7 14:03:26 2008
New Revision: 79
URL: http://svn.gnome.org/viewvc/nemo?rev=79&view=rev

Log:
Much nicer way of doing a mainloop FIFO



Modified:
   trunk/common/Common.cs

Modified: trunk/common/Common.cs
==============================================================================
--- trunk/common/Common.cs	(original)
+++ trunk/common/Common.cs	Thu Feb  7 14:03:26 2008
@@ -78,18 +78,15 @@
 		// allows any number of callers to use this abstraction by identifying themselves by name
 		public static void RunOnlyOnceInMainLIFO(string name, VoidFunction func, uint timeout /* ms */)
 		{
-			int last_id = 0;
-			if (!main_last_id.ContainsKey(name))
-				main_last_id.Add(name, 0);
+			if (!main_timeout_id.ContainsKey(name))
+				main_timeout_id.Add(name, GLib.Timeout.Add(timeout, delegate { main_timeout_id.Remove(name); func(); return false; } ));
 			else {
-				last_id = ++main_last_id[name];
-				main_last_id[name] = last_id;
-			}
-			
-			GLib.Timeout.Add(timeout, delegate { if (main_last_id[name] == last_id) func(); return false; } );
+				GLib.Source.Remove(main_timeout_id[name]);
+				main_timeout_id[name] = GLib.Timeout.Add(timeout, delegate { main_timeout_id.Remove(name); func(); return false; } );
+			}			
         }
 
-		static Dictionary<string, int> main_last_id = new Dictionary<string,int>();
+		static Dictionary<string, uint> main_timeout_id = new Dictionary<string,uint>();
 
 		public static Type load<Type>(string filename)
 		{



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