aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c b/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c
index 96bb6d8d..3f9ad8e8 100644
--- a/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c
+++ b/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c
@@ -33,6 +33,17 @@
#if defined(WIN32) || GFX_USE_OS_WIN32
#include <winsock.h>
+
+ static void StopSockets(void) {
+ WSACleanup();
+ }
+ static void StartSockets(void) {
+ WSADATA wsaData;
+ if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
+ gfxHalt("GDISP: uGFXnet - WSAStartup failed");
+ atexit(StopSockets);
+ }
+
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -42,6 +53,7 @@
#define closesocket(fd) close(fd)
#define ioctlsocket(fd,cmd,arg) ioctl(fd,cmd,arg)
+ #define StartSockets()
#ifndef SOCKET
#define SOCKET int
#endif
@@ -72,6 +84,7 @@
#define GNETCODE_MOUSE_X 0x0007 // This is only ever received - never sent. Response is 0x0007,x
#define GNETCODE_MOUSE_Y 0x0008 // This is only ever received - never sent. Response is 0x0008,y
#define GNETCODE_MOUSE_B 0x0009 // This is only ever received - never sent. Response is 0x0009,buttons
+#define GNETCODE_KILL 0xFFFE // This is only ever received - never sent. Response is 0xFFFE,retcode
#define GNETCODE_VERSION 0x0100 // V1.0
@@ -88,7 +101,7 @@ typedef struct netPriv {
static gfxThreadHandle hThread;
static GDisplay * mouseDisplay;
-static DECLARE_THREAD_STACK(waNetThread, 256);
+static DECLARE_THREAD_STACK(waNetThread, 512);
static DECLARE_THREAD_FUNCTION(NetThread, param) {
SOCKET listenfd, fdmax, i, clientfd;
int len;
@@ -100,6 +113,9 @@ static DECLARE_THREAD_FUNCTION(NetThread, param) {
netPriv * priv;
(void)param;
+ // Start the sockets layer
+ StartSockets();
+
/* clear the master and temp sets */
FD_ZERO(&master);
FD_ZERO(&read_fds);
@@ -237,6 +253,10 @@ static DECLARE_THREAD_FUNCTION(NetThread, param) {
priv->databytes = 0;
g->flags |= GDISP_FLG_HAVEDATA;
break;
+ case GNETCODE_KILL:
+ gfxHalt("GDISP: uGFXnet - Display sent KILL command");
+ break;
+
default:
// Just ignore unrecognised data
break;