]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/socket.h
Applied patch, fixes #12090: wxGTK cursor handling revamp
[wxWidgets.git] / include / wx / socket.h
index c3d655173d56b3b467094257e569117e06b10833..e978b5ca80169a4e6dc7717a3456a3bd96d0ace1 100644 (file)
@@ -95,7 +95,7 @@ enum wxSocketType
 
 // event
 class WXDLLIMPEXP_FWD_NET wxSocketEvent;
-wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_NET, wxEVT_SOCKET, wxSocketEvent)
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_NET, wxEVT_SOCKET, wxSocketEvent);
 
 // --------------------------------------------------------------------------
 // wxSocketBase
@@ -165,7 +165,7 @@ public:
 
     wxSocketFlags GetFlags() const { return m_flags; }
     void SetFlags(wxSocketFlags flags);
-    void SetTimeout(long seconds);
+    virtual void SetTimeout(long seconds);
     long GetTimeout() const { return m_timeout; }
 
     bool GetOption(int level, int optname, void *optval, int *optlen);
@@ -179,11 +179,21 @@ public:
     void SetNotify(wxSocketEventFlags flags);
     void Notify(bool notify);
 
-    // initialize/shutdown the sockets (usually called automatically)
-    static bool IsInitialized();
+    // initialize/shutdown the sockets (done automatically so there is no need
+    // to call these functions usually)
+    //
+    // should always be called from the main thread only so one of the cases
+    // where they should indeed be called explicitly is when the first wxSocket
+    // object in the application is created in a different thread
     static bool Initialize();
     static void Shutdown();
 
+    // check if wxSocket had been already initialized
+    //
+    // notice that this function should be only called from the main thread as
+    // otherwise it is inherently unsafe because Initialize/Shutdown() may be
+    // called concurrently with it in the main thread
+    static bool IsInitialized();
 
     // Implementation from now on
     // --------------------------
@@ -264,14 +274,11 @@ private:
     wxSocketEventFlags  m_eventmask;  // which events to notify?
     wxSocketEventFlags  m_eventsgot;  // collects events received in OnRequest()
 
-    // the initialization count, wxSocket is initialized if > 0
-    static size_t m_countInit;
-
 
     friend class wxSocketReadGuard;
     friend class wxSocketWriteGuard;
 
-    DECLARE_NO_COPY_CLASS(wxSocketBase)
+    wxDECLARE_NO_COPY_CLASS(wxSocketBase);
     DECLARE_CLASS(wxSocketBase)
 };
 
@@ -291,7 +298,7 @@ public:
 
     bool WaitForAccept(long seconds = -1, long milliseconds = 0);
 
-    DECLARE_NO_COPY_CLASS(wxSocketServer)
+    wxDECLARE_NO_COPY_CLASS(wxSocketServer);
     DECLARE_CLASS(wxSocketServer)
 };
 
@@ -330,7 +337,7 @@ private:
     int m_initialRecvBufferSize;
     int m_initialSendBufferSize;
 
-    DECLARE_NO_COPY_CLASS(wxSocketClient)
+    wxDECLARE_NO_COPY_CLASS(wxSocketClient);
     DECLARE_CLASS(wxSocketClient)
 };
 
@@ -359,7 +366,7 @@ public:
      */
 
 private:
-    DECLARE_NO_COPY_CLASS(wxDatagramSocket)
+    wxDECLARE_NO_COPY_CLASS(wxDatagramSocket);
     DECLARE_CLASS(wxDatagramSocket)
 };
 
@@ -382,6 +389,7 @@ public:
     void *GetClientData() const { return m_clientData; }
 
     virtual wxEvent *Clone() const { return new wxSocketEvent(*this); }
+    virtual wxEventCategory GetEventCategory() const { return wxEVT_CATEGORY_SOCKET; }
 
 public:
     wxSocketNotify  m_event;