diff options
author | Andy Green <andy@warmcat.com> | 2016-04-05 07:31:11 +0800 |
---|---|---|
committer | Andy Green <andy@warmcat.com> | 2016-04-05 07:31:11 +0800 |
commit | 934cc80d95a3ae321e894cca8fc20e0fb85ce8f6 (patch) | |
tree | 410b396dda6e085f46310fb3ef2a9c9de1d7010e | |
parent | 8b832663011c4ff7b853b218361855efd18d8510 (diff) | |
download | libwebsockets-934cc80d95a3ae321e894cca8fc20e0fb85ce8f6.tar.gz libwebsockets-934cc80d95a3ae321e894cca8fc20e0fb85ce8f6.tar.bz2 libwebsockets-934cc80d95a3ae321e894cca8fc20e0fb85ce8f6.zip |
libuv win32 fixes
Signed-off-by: Andy Green <andy@warmcat.com>
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | lib/libuv.c | 13 | ||||
-rw-r--r-- | lib/private-libwebsockets.h | 6 |
3 files changed, 19 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 49e256fc..a6d2740e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -864,7 +864,7 @@ if (NOT LWS_WITHOUT_TESTAPPS) "test-server/test-server-status.c" "test-server/test-server-echogen.c") endif() - if (UNIX AND NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + if (NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND LWS_WITH_LIBEV) create_test_app(test-server-libev "test-server/test-server-libev.c" @@ -874,7 +874,7 @@ if (NOT LWS_WITHOUT_TESTAPPS) "test-server/test-server-status.c" "test-server/test-server-echogen.c") endif() - if (UNIX AND NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + if (NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND LWS_WITH_LIBUV) create_test_app(test-server-libuv "test-server/test-server-libuv.c" diff --git a/lib/libuv.c b/lib/libuv.c index 9b1e515c..d86d43bf 100644 --- a/lib/libuv.c +++ b/lib/libuv.c @@ -38,7 +38,11 @@ lws_io_cb(uv_poll_t *watcher, int status, int revents) struct lws_context *context = lws_io->context; struct lws_pollfd eventfd; +#if defined(WIN32) || defined(_WIN32) + eventfd.fd = watcher->sock; +#else eventfd.fd = watcher->io_watcher.fd; +#endif eventfd.events = 0; eventfd.revents = 0; @@ -221,8 +225,13 @@ lws_libuv_io(struct lws *wsi, int flags) { struct lws_context *context = lws_get_context(wsi); struct lws_context_per_thread *pt = &wsi->context->pt[(int)wsi->tsi]; +#if defined(WIN32) || defined(_WIN32) + int current_events = wsi->w_read.uv_watcher.io.events & + (UV_READABLE | UV_WRITABLE); +#else int current_events = wsi->w_read.uv_watcher.io_watcher.pevents & (UV_READABLE | UV_WRITABLE); +#endif struct lws_io_watcher *w = &wsi->w_read; if (!LWS_LIBUV_ENABLED(context)) @@ -343,8 +352,8 @@ lws_uv_getloop(struct lws_context *context, int tsi) static void lws_libuv_closewsi(uv_handle_t* handle) { - struct lws *n = NULL, *wsi = (struct lws *)(((void *)handle) - - (void *)(&n->w_read.uv_watcher)); + struct lws *n = NULL, *wsi = (struct lws *)(((char *)handle) - + (char *)(&n->w_read.uv_watcher)); struct lws_context *context = lws_get_context(wsi); lws_close_free_wsi_final(wsi); diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 6454615f..ca5be466 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -232,6 +232,12 @@ typedef unsigned __int64 u_int64_t; #endif #endif +#include <stddef.h> + +#ifndef container_of +#define container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M))) +#endif + #else #include <sys/stat.h> |