]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/private/gsocketiohandler.h
prevent crash if panel/kicker is killed, bug 1872724
[wxWidgets.git] / include / wx / private / gsocketiohandler.h
index 8db89162535099ddc296d889702656d56a465824..00c4cf3ea9cc9e8ca4fcb0859731cc6fe4ea39ce 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        wx/private/gsocketiohandler.h
 // Purpose:     class for registering GSocket in wxSelectDispatcher
 // Authors:     Lukasz Michalski
 // Name:        wx/private/gsocketiohandler.h
 // Purpose:     class for registering GSocket in wxSelectDispatcher
 // Authors:     Lukasz Michalski
-// Modified by:
 // Created:     December 2006
 // Copyright:   (c) Lukasz Michalski
 // RCS-ID:      $Id$
 // Created:     December 2006
 // Copyright:   (c) Lukasz Michalski
 // RCS-ID:      $Id$
 #define _WX_PRIVATE_GSOCKETIOHANDLER_H_
 
 #include "wx/defs.h"
 #define _WX_PRIVATE_GSOCKETIOHANDLER_H_
 
 #include "wx/defs.h"
-#include "wx/private/selectdispatcher.h"
 
 
-#if wxUSE_SOCKETS
+#if wxUSE_SOCKETS && wxUSE_SELECT_DISPATCHER
 
 
-// forward declarations
-class GSocket;
+#include "wx/private/selectdispatcher.h"
+#include "wx/gsocket.h"
 
 
-class WXDLLIMPEXP_CORE wxGSocketIOHandler : public wxFDIOHandler
+class WXDLLIMPEXP_BASE wxGSocketIOHandler : public wxFDIOHandler
 {
 public:
 {
 public:
-    wxGSocketIOHandler(GSocket* socket);
-    int GetFlags() const;
-    void RemoveFlag(wxSelectDispatcherEntryFlags flag);
-    void AddFlag(wxSelectDispatcherEntryFlags flag);
+    wxGSocketIOHandler(GSocket* socket)
+    {
+        m_socket = socket;
+        m_flags = 0;
+    }
 
 
-private:
-    virtual void OnReadWaiting(int fd);
-    virtual void OnWriteWaiting(int fd);
-    virtual void OnExceptionWaiting(int fd);
+    int GetFlags() const { return m_flags; }
+    void RemoveFlag(wxFDIODispatcherEntryFlags flag) { m_flags &= ~flag; }
+    void AddFlag(wxFDIODispatcherEntryFlags flag) { m_flags |= flag; }
 
 
+    virtual void OnReadWaiting() { m_socket->Detected_Read(); }
+    virtual void OnWriteWaiting() { m_socket->Detected_Write(); }
+    virtual void OnExceptionWaiting() { m_socket->Detected_Read(); }
+
+private:
     GSocket* m_socket;
     int m_flags;
 };
 
     GSocket* m_socket;
     int m_flags;
 };
 
-#endif // wxUSE_SOCKETS
+#endif // wxUSE_SOCKETS && wxUSE_SELECT_DISPATCHER
 
 #endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_
 
 #endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_