X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fxcb_util.c;h=e480d75c6dd8ee7ed156c97243b902c78fe5e1c5;hb=b52790e8ed4bb077eabdeca803935d2910558acc;hp=64a1f6d63b3a8e00f33202ac5bd05cb7ad761661;hpb=4aa7a2c849a9536febb2dc7773e06c12a69c5213;p=free-sw%2Fxcb%2Flibxcb diff --git a/src/xcb_util.c b/src/xcb_util.c index 64a1f6d..e480d75 100644 --- a/src/xcb_util.c +++ b/src/xcb_util.c @@ -25,6 +25,10 @@ /* Utility functions implementable using only public APIs. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -51,7 +55,6 @@ #include "xcbext.h" #include "xcbint.h" -/* must be after "xcbint.h" to get autoconf #defines */ #if defined(HAVE_TSOL_LABEL_H) && defined(HAVE_IS_SYSTEM_LABELED) # include # include @@ -175,7 +178,7 @@ static int _xcb_open(const char *host, char *protocol, const int display) if(strncmp(host, "/tmp/launch", 11) == 0) { base = host; host = ""; - protocol = NULL; + protocol = "unix"; } #endif @@ -235,6 +238,11 @@ static int _xcb_open(const char *host, char *protocol, const int display) fd = _xcb_open_unix(protocol, file); free(file); + if (fd < 0 && !protocol && *host == '\0') { + unsigned short port = X_TCP_PORT + display; + fd = _xcb_open_tcp(host, protocol, port); + } + return fd; #endif /* !_WIN32 */ return -1; /* if control reaches here then something has gone wrong */ @@ -426,11 +434,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_conn_ret_error(XCB_CONN_ERROR); + 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; }