]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/gsockmsw.c
better learn the operators...
[wxWidgets.git] / src / msw / gsockmsw.c
index 4d1eaf41110d4d24210167acf961e231f0843937..60d54c682c1395e96269dc8bda9de8e48a0ae646 100644 (file)
  * PLEASE don't put C++ comments here - this is a C source file.
  */
 
  * PLEASE don't put C++ comments here - this is a C source file.
  */
 
+/* including rasasync.h (included from windows.h itself included from
+ * wx/setup.h and/or winsock.h results in this warning for
+ * RPCNOTIFICATION_ROUTINE
+ */
+#ifdef _MSC_VER
+#  pragma warning(disable:4115) /* named type definition in parentheses */
+#endif
+
 #ifndef __GSOCKET_STANDALONE__
 #ifndef __GSOCKET_STANDALONE__
+#include "wx/defs.h"
 #include "wx/setup.h"
 #endif
 
 #include "wx/setup.h"
 #endif
 
@@ -30,7 +39,7 @@
 #include "gsocket.h"
 
 /* If not using wxWindows, a global var called hInst must
 #include "gsocket.h"
 
 /* If not using wxWindows, a global var called hInst must
- * be available and it must containt the app's instance
+ * be available and it must contain the app's instance
  * handle.
  */
 #define INSTANCE hInst
  * handle.
  */
 #define INSTANCE hInst
 #include <stdlib.h>
 #include <stddef.h>
 #include <ctype.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <ctype.h>
+
 #include <winsock.h>
 
 #include <winsock.h>
 
+#ifdef _MSC_VER
+#  pragma warning(default:4115) /* named type definition in parentheses */
+#endif
+
 #define CLASSNAME  "_GSocket_Internal_Window_Class"
 #define WINDOWNAME "_GSocket_Internal_Window_Name"
 
 #define CLASSNAME  "_GSocket_Internal_Window_Class"
 #define WINDOWNAME "_GSocket_Internal_Window_Name"
 
@@ -69,7 +83,7 @@ static int firstAvailable;
 
 /* Global initializers */
 
 
 /* Global initializers */
 
-bool GSocket_Init()
+int GSocket_Init(void)
 {
   WSADATA wsaData;
   WNDCLASS winClass;
 {
   WSADATA wsaData;
   WNDCLASS winClass;
@@ -108,7 +122,7 @@ bool GSocket_Init()
   return (WSAStartup((1 << 8) | 1, &wsaData) == 0);
 }
 
   return (WSAStartup((1 << 8) | 1, &wsaData) == 0);
 }
 
-void GSocket_Cleanup()
+void GSocket_Cleanup(void)
 {
   /* Destroy internal window */
   DestroyWindow(hWin);
 {
   /* Destroy internal window */
   DestroyWindow(hWin);
@@ -123,7 +137,7 @@ void GSocket_Cleanup()
 
 /* Per-socket GUI initialization / cleanup */
 
 
 /* Per-socket GUI initialization / cleanup */
 
-bool _GSocket_GUI_Init(GSocket *socket)
+int _GSocket_GUI_Init(GSocket *socket)
 {
   int i;
 
 {
   int i;
 
@@ -240,8 +254,13 @@ void _GSocket_Enable_Events(GSocket *socket)
 
   if (socket->m_fd != INVALID_SOCKET)
   {
 
   if (socket->m_fd != INVALID_SOCKET)
   {
-    WSAAsyncSelect(socket->m_fd, hWin, socket->m_msgnumber,
-                   FD_READ | FD_WRITE | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+    /* We could probably just subscribe to all events regardless
+     * of the socket type, but MS recommends to do it this way.
+     */
+    long lEvent = socket->m_server?
+                  FD_ACCEPT : (FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE);
+
+    WSAAsyncSelect(socket->m_fd, hWin, socket->m_msgnumber, lEvent);
   }
 }
 
   }
 }
 
@@ -260,7 +279,7 @@ void _GSocket_Disable_Events(GSocket *socket)
 
 #else /* !wxUSE_SOCKETS */
 
 
 #else /* !wxUSE_SOCKETS */
 
-/* 
+/*
  * Translation unit shouldn't be empty, so include this typedef to make the
  * compiler (VC++ 6.0, for example) happy
  */
  * Translation unit shouldn't be empty, so include this typedef to make the
  * compiler (VC++ 6.0, for example) happy
  */