Reinstate code removed that allows building with mingw and the pthreads-win32 library
authorTim Mayberry <mojofunk@gmail.com>
Thu, 8 May 2014 04:06:18 +0000 (14:06 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Tue, 13 May 2014 23:47:40 +0000 (09:47 +1000)
Newer versions of mingw-w64 can be built with an included pthread implementation
called winpthreads which uses an integer type for pthread_t but pthreads-win32 does
not.

libs/pbd/pbd/abstract_ui.h

index 8e386aa4ebed3f6212093ff3d7623aa8d0d5de70..a8602c7d7877663b00081e04d03c5321a8f3aadc 100644 (file)
@@ -75,8 +75,20 @@ class ABSTRACT_UI_API AbstractUI : public BaseUI
         };
        typedef typename RequestBuffer::rw_vector RequestBufferVector;
 
+#if defined(COMPILER_MINGW) && defined(PTW32_VERSION)
+       struct pthread_cmp
+       {
+               bool operator() (const ptw32_handle_t& thread1, const ptw32_handle_t& thread2)
+               {
+                       return thread1.p < thread2.p;
+               }
+       };
+       typedef typename std::map<pthread_t,RequestBuffer*, pthread_cmp>::iterator RequestBufferMapIterator;
+       typedef std::map<pthread_t,RequestBuffer*, pthread_cmp> RequestBufferMap;
+#else
        typedef typename std::map<pthread_t,RequestBuffer*>::iterator RequestBufferMapIterator;
        typedef std::map<pthread_t,RequestBuffer*> RequestBufferMap;
+#endif
 
        RequestBufferMap request_buffers;
         static Glib::Threads::Private<RequestBuffer> per_thread_request_buffer;