move WSAStartup() and WSACleanup() out of per-object methods into per-library init/cleanup methods
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user