diff options
-rw-r--r-- | libs/pbd/crossthread.win.cc | 8 | ||||
-rw-r--r-- | libs/pbd/pbd.cc | 19 |
2 files changed, 19 insertions, 8 deletions
diff --git a/libs/pbd/crossthread.win.cc b/libs/pbd/crossthread.win.cc index 32f52fc12c..5309916ddb 100644 --- a/libs/pbd/crossthread.win.cc +++ b/libs/pbd/crossthread.win.cc @@ -25,13 +25,6 @@ CrossThreadChannel::CrossThreadChannel (bool non_blocking) , receive_socket() , recv_address() { - WSADATA wsaData; - - if(WSAStartup(MAKEWORD(1,1),&wsaData) != 0) { - std::cerr << "CrossThreadChannel::CrossThreadChannel() Winsock initialization failed with error: " << WSAGetLastError() << std::endl; - return; - } - struct sockaddr_in send_address; // Create Send Socket @@ -104,7 +97,6 @@ CrossThreadChannel::~CrossThreadChannel () closesocket(send_socket); closesocket(receive_socket); - WSACleanup(); } void diff --git a/libs/pbd/pbd.cc b/libs/pbd/pbd.cc index 145e1b91a8..858d870c1a 100644 --- a/libs/pbd/pbd.cc +++ b/libs/pbd/pbd.cc @@ -34,6 +34,10 @@ #include "pbd/id.h" #include "pbd/enumwriter.h" +#ifdef PLATFORM_WINDOWS +#include <winsock2.h> +#endif + #include "i18n.h" extern void setup_libpbd_enums (); @@ -68,6 +72,17 @@ PBD::init () // Essential!! Make sure that any files used by Ardour // will be created or opened in BINARY mode! _fmode = O_BINARY; + + WSADATA wsaData; + + /* Initialize windows socket DLL for PBD::CrossThreadChannel + */ + + if (WSAStartup(MAKEWORD(1,1),&wsaData) != 0) { + fatal << "Windows socket initialization failed with error: " << WSAGetLastError() << endmsg; + /*NOTREACHED*/ + return; + } #endif if (!Glib::thread_supported()) { @@ -89,5 +104,9 @@ PBD::init () void PBD::cleanup () { +#ifdef PLATFORM_WINDOWS + WSACleanup(); +#endif + EnumWriter::destroy (); } |