Remove PathScanner::run_scan and use PathScanner::run_scan_internal directly
[ardour.git] / libs / pbd / pbd / semutils.h
index 1d4a7eb83842d3f916a8b7e0d45898f331f113ff..5c0191e25bfea4cb291d838117200d43d98b4ab3 100644 (file)
 #ifndef __pbd_semutils_h__
 #define __pbd_semutils_h__
 
+#ifdef PLATFORM_WINDOWS
+#include <windows.h>
+#else
 #include <semaphore.h>
+#endif
+
+#include "pbd/libpbd_visibility.h"
 
 namespace PBD {
 
-class ProcessSemaphore {
+class LIBPBD_API ProcessSemaphore {
   private:
-#ifdef __APPLE__
+#ifdef PLATFORM_WINDOWS
+       HANDLE _sem;
+
+#elif __APPLE__
        sem_t* _sem;
        sem_t* ptr_to_sem() const { return _sem; }
 #else
-       sem_t _sem;
+       mutable sem_t _sem;
        sem_t* ptr_to_sem() const { return &_sem; }
 #endif
 
@@ -37,8 +46,15 @@ class ProcessSemaphore {
        ProcessSemaphore (const char* name, int val);
        ~ProcessSemaphore ();
 
+#ifdef PLATFORM_WINDOWS
+
+       int signal ();
+       int wait ();
+
+#else
        int signal () { return sem_post (ptr_to_sem()); }
        int wait () { return sem_wait (ptr_to_sem()); }
+#endif
 };
 
 }