copying the latest Sys.Web.Services from trunk.
[mono.git] / mcs / class / System / System.IO / FileSystemWatcher.cs
index c23400daefe061bcf8b7498655e2ad50083e63b4..e4018da121066702c4b881f7e59770a51b775630 100644 (file)
@@ -57,7 +57,6 @@ namespace System.IO {
                bool disposed;
                string mangledFilter;
                static IFileWatcher watcher;
-               static object lockobj = new object ();
 
                #endregion // Fields
 
@@ -105,7 +104,7 @@ namespace System.IO {
 
                void InitWatcher ()
                {
-                       lock (lockobj) {
+                       lock (typeof (FileSystemWatcher)) {
                                if (watcher != null)
                                        return;
 
@@ -115,21 +114,13 @@ namespace System.IO {
                                        mode = InternalSupportsFSW ();
 
                                bool ok = false;
-                               switch (mode) {
-                               case 1: // windows
+                               if (mode == 3)
+                                       ok = KeventWatcher.GetInstance (out watcher);
+                               else if (mode == 2)
+                                       ok = FAMWatcher.GetInstance (out watcher);
+                               else if (mode == 1)
                                        ok = DefaultWatcher.GetInstance (out watcher);
                                        //ok = WindowsWatcher.GetInstance (out watcher);
-                                       break;
-                               case 2: // libfam
-                                       ok = FAMWatcher.GetInstance (out watcher, false);
-                                       break;
-                               case 3: // kevent
-                                       ok = KeventWatcher.GetInstance (out watcher);
-                                       break;
-                               case 4: // libgamin
-                                       ok = FAMWatcher.GetInstance (out watcher, true);
-                                       break;
-                               }
 
                                if (mode == 0 || !ok)
                                        DefaultWatcher.GetInstance (out watcher);