Stefan Schuermans commited on 2017-09-24 08:46:27
Showing 5 changed files, with 34 additions and 4 deletions.
... | ... |
@@ -80,6 +80,21 @@ ifeq ($(patsubst MINGW32%,MINGW32,$(OS_RAW)),MINGW32) |
80 | 80 |
EX_LIBS += -lwsock32 |
81 | 81 |
endif |
82 | 82 |
|
83 |
+ifeq ($(CROSS_WIN),1) |
|
84 |
+ OS := mingw32 |
|
85 |
+ CC := x86_64-w64-mingw32-gcc |
|
86 |
+ AR := ar |
|
87 |
+ RANLIB := ranlib |
|
88 |
+ LEXT := dll |
|
89 |
+ LEXTSUF := |
|
90 |
+ BSUF := .exe |
|
91 |
+ INSTALL := install |
|
92 |
+ DEFINES += -DWINDOWS |
|
93 |
+ SH_LDFLAGS += -shared |
|
94 |
+ SH_LIBS += -lwsock32 |
|
95 |
+ EX_LIBS += -lwsock32 |
|
96 |
+endif |
|
97 |
+ |
|
83 | 98 |
ifeq ($(OS),) |
84 | 99 |
$(error unsupported operating system $(OS_RAW)) |
85 | 100 |
endif |
... | ... |
@@ -36,11 +36,11 @@ |
36 | 36 |
# define ETP_THREAD_FUNC(func) void * (func)(void *vp_displayer) |
37 | 37 |
#endif |
38 | 38 |
|
39 |
-/** return a void pointer from a thread function */ |
|
39 |
+/** return values for thread functions */ |
|
40 | 40 |
#ifdef WINDOWS |
41 |
-# define ETP_THREAD_RETURN(vp) return (DWORD)(vp); |
|
41 |
+# define ETP_THREAD_RETURN_OK (0) |
|
42 | 42 |
#else |
43 |
-# define ETP_THREAD_RETURN(vp) return (vp); |
|
43 |
+# define ETP_THREAD_RETURN_OK (NULL) |
|
44 | 44 |
#endif |
45 | 45 |
|
46 | 46 |
/** type for a thread ID */ |
... | ... |
@@ -78,7 +78,18 @@ etp_display_t *etp_display_create(const char *sz_config_file, |
78 | 78 |
/* set up UDP socket */ |
79 | 79 |
|
80 | 80 |
/* create socket */ |
81 |
+#ifdef WINDOWS |
|
82 |
+ p_display->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); |
|
83 |
+ if (p_display->sock != INVALID_SOCKET) { |
|
84 |
+ u_long arg = 1; |
|
85 |
+ if (ioctlsocket(p_display->sock, FIONBIO, &arg) != 0) { |
|
86 |
+ closesocket(p_display->sock); |
|
87 |
+ p_display->sock = INVALID_SOCKET; |
|
88 |
+ } |
|
89 |
+ } |
|
90 |
+#else |
|
81 | 91 |
p_display->sock = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK, IPPROTO_UDP); |
92 |
+#endif |
|
82 | 93 |
if (!etp_sock_is_valid(p_display->sock)) { |
83 | 94 |
etp_display_free(p_display); |
84 | 95 |
if (p_msg_func) { |
... | ... |
@@ -20,6 +20,7 @@ |
20 | 20 |
#include <sys/time.h> |
21 | 21 |
#include <stdlib.h> |
22 | 22 |
|
23 |
+#include <intern/net.h> // first because of winsock2.h ordering |
|
23 | 24 |
#include <etherpix/display.h> |
24 | 25 |
#include <etherpix/displayer.h> |
25 | 26 |
#include <etherpix/msg.h> |
... | ... |
@@ -313,6 +314,6 @@ ETP_THREAD_FUNC(etp_displayer_thread) |
313 | 314 |
|
314 | 315 |
etp_thread_mutex_unlock(&p_displayer->mtx); |
315 | 316 |
|
316 |
- ETP_THREAD_RETURN(NULL); |
|
317 |
+ return ETP_THREAD_RETURN_OK; |
|
317 | 318 |
} |
318 | 319 |
|
319 | 320 |