move WSAStartup() and WSACleanup() out of per-object methods into per-library init/cleanup methods

This commit is contained in:
Paul Davis
2014-12-04 10:07:11 -05:00
parent 4e8dfda880
commit 697c397f37
2 changed files with 19 additions and 8 deletions

View File

@@ -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

View File

@@ -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 ();
}