summaryrefslogtreecommitdiff
path: root/Source/Core/Common/SocketContext.cpp
blob: 15f9fd90109ed352f8cbf9a88d082df121c72387 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright 2021 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#include "Common/SocketContext.h"

namespace Common
{
#ifdef _WIN32
SocketContext::SocketContext()
{
  std::lock_guard<std::mutex> g(s_lock);
  if (s_num_objects == 0)
  {
    static_cast<void>(WSAStartup(MAKEWORD(2, 2), &s_data));
  }
  s_num_objects++;
}
SocketContext::~SocketContext()
{
  std::lock_guard<std::mutex> g(s_lock);
  s_num_objects--;
  if (s_num_objects == 0)
  {
    WSACleanup();
  }
}

std::mutex SocketContext::s_lock;
size_t SocketContext::s_num_objects = 0;
WSADATA SocketContext::s_data;

#else
SocketContext::SocketContext() = default;
SocketContext::~SocketContext() = default;
#endif
}  // namespace Common