From: Paul Davis Date: Thu, 4 Dec 2014 15:07:11 +0000 (-0500) Subject: move WSAStartup() and WSACleanup() out of per-object methods into per-library init... X-Git-Tag: 4.0-rc1~1150 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=697c397f379481efd5f50cd772a9dcd659ecede7;p=ardour.git move WSAStartup() and WSACleanup() out of per-object methods into per-library init/cleanup methods --- 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 +#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 (); }