aboutsummaryrefslogtreecommitdiff
path: root/libxcb/src/xcb_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxcb/src/xcb_util.c')
-rw-r--r--libxcb/src/xcb_util.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/libxcb/src/xcb_util.c b/libxcb/src/xcb_util.c
index 2d23842d7..2980cb8d0 100644
--- a/libxcb/src/xcb_util.c
+++ b/libxcb/src/xcb_util.c
@@ -221,6 +221,23 @@ static int _xcb_open_decnet(const char *host, const char *protocol, const unsign
}
#endif
+#ifdef WIN32
+int InitWSA(void)
+{
+ static WSADATA wsadata;
+
+ if (!wsadata.wVersion)
+ {
+ ptw32_processInitialize();
+ if (WSAStartup(0x0202, &wsadata))
+ return -1;
+ }
+ return 0;
+}
+#else
+#define InitWSA()
+#endif
+
static int _xcb_open_tcp(char *host, char *protocol, const unsigned short port)
{
int fd = -1;
@@ -254,16 +271,8 @@ static int _xcb_open_tcp(char *host, char *protocol, const unsigned short port)
#endif
#ifdef WIN32
- {
- static WSADATA wsadata;
-
- if (!wsadata.wVersion)
- {
- if (WSAStartup(0x0202, &wsadata))
- return -1;
- ptw32_processInitialize();
- }
- }
+ if (InitWSA()<0)
+ return -1;
#endif
snprintf(service, sizeof(service), "%hu", port);