diff options
-rw-r--r-- | src/xcb_conn.c | 4 | ||||
-rw-r--r-- | src/xcb_util.c | 13 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/xcb_conn.c b/src/xcb_conn.c index f79de33..725502a 100644 --- a/src/xcb_conn.c +++ b/src/xcb_conn.c @@ -315,6 +315,10 @@ void xcb_disconnect(xcb_connection_t *c) _xcb_xid_destroy(c); free(c); + +#ifdef _WIN32 + WSACleanup(); +#endif } /* Private interface */ diff --git a/src/xcb_util.c b/src/xcb_util.c index 64a1f6d..9329b81 100644 --- a/src/xcb_util.c +++ b/src/xcb_util.c @@ -426,11 +426,22 @@ xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *displayname, if(!parsed) { c = _xcb_conn_ret_error(XCB_CONN_CLOSED_PARSE_ERR); goto out; - } else + } else { +#ifdef _WIN32 + WSADATA wsaData; + if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { + c = (xcb_connection_t *) &error_connection; + goto out; + } +#endif fd = _xcb_open(host, protocol, display); + } if(fd == -1) { c = _xcb_conn_ret_error(XCB_CONN_ERROR); +#ifdef _WIN32 + WSACleanup(); +#endif goto out; } |