]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/socket.cpp
Made listctrl header BG grey again
[wxWidgets.git] / src / common / socket.cpp
index 0585cddd1b6d16832c1aaa3d1fd6e7d486cabb52..c568508af135f840b873484b0a4f25db722f6d55 100644 (file)
@@ -209,8 +209,6 @@ wxSocketBase::~wxSocketBase()
   // First, close the file descriptor.
   Close();
 
-  m_internal->FinalizeSocket();
-
   if (m_unread)
     free(m_unread);
   // Unregister from the handler database.
@@ -228,8 +226,8 @@ bool wxSocketBase::Close()
 {
   if (m_fd != INVALID_SOCKET) 
   {
-    // Pause all running socket thread.
-    m_internal->PauseSocket();
+    if (m_notify_state == TRUE)
+      Notify(FALSE);
 
     // Shutdown the connection.
     shutdown(m_fd, 2);
@@ -545,20 +543,25 @@ void wxSocketBase::SetNotify(wxRequestNotify flags)
   if (m_type != SOCK_SERVER)
     flags &= ~REQ_ACCEPT;
 
+  m_internal->AcquireData();
   m_neededreq = flags;
+  m_internal->ReleaseData();
   if (m_neededreq == 0)
-    m_internal->DisableWaiter();
+    m_internal->StopWaiter();
   else
     Notify(m_notify_state);
 }
 
 void wxSocketBase::Notify(bool notify)
 {
+  m_notify_state = notify;
+  if (m_fd == INVALID_SOCKET)
+    return;
+
   if (notify)
-    m_internal->EnableWaiter();
+    m_internal->ResumeWaiter();
   else
-    m_internal->DisableWaiter();
-  m_notify_state = notify;
+    m_internal->StopWaiter();
 }
 
 void wxSocketBase::OnRequest(wxRequestEvent req_evt)
@@ -574,7 +577,7 @@ void wxSocketBase::OnRequest(wxRequestEvent req_evt)
     // OldOnNotify(req_evt);
 
     // We disable the event reporting.
-    SetNotify(m_neededreq & ~notify);
+    m_neededreq &= ~notify;
   }
 }
 
@@ -586,14 +589,14 @@ wxSocketEvent::wxSocketEvent(int id)
   SetEventType(type);
 }
 
-wxObject *wxSocketEvent::Clone() const
+void wxSocketEvent::CopyObject(wxObject& obj_d) const
 {
-  wxSocketEvent *event = (wxSocketEvent *)wxEvent::Clone();
+  wxSocketEvent *event = (wxSocketEvent *)&obj_d;
+
+  wxEvent::CopyObject(obj_d);
 
   event->m_skevt = m_skevt;
   event->m_socket = m_socket;
-
-  return event;
 }
 
 void wxSocketBase::OldOnNotify(wxRequestEvent evt)
@@ -679,7 +682,7 @@ void wxSocketBase::WantBuffer(char *buffer, size_t nbytes,
   SockRequest *buf = new SockRequest;
 
   SaveState();
-  m_internal->DisableWaiter(); 
+  m_internal->StopWaiter(); 
   buf->buffer = buffer;
   buf->size = nbytes;
   buf->done = FALSE;
@@ -690,10 +693,10 @@ void wxSocketBase::WantBuffer(char *buffer, size_t nbytes,
   buf->timeout = 1000;
   buf_timed_out = FALSE;
 
-  if (m_flags & SPEED
+  if ((m_flags & SPEED) != 0
     m_internal->QueueRequest(buf, FALSE);
   else
-    if (m_flags & NOWAIT
+    if ((m_flags & NOWAIT) != 0
       m_internal->QueueRequest(buf, TRUE);
     else 
       m_internal->QueueRequest(buf, TRUE);
@@ -735,7 +738,9 @@ wxSocketServer::wxSocketServer(wxSockAddress& addr_man,
     return;
   }
 
-  m_internal->InitializeSocket();
+  m_internal->SetFD(m_fd);
+
+  Notify(TRUE);
 }
 
 // --------------------------------------------------------------
@@ -746,8 +751,12 @@ bool wxSocketServer::AcceptWith(wxSocketBase& sock)
 {
   int fd2;
 
-  if ((fd2 = accept(m_fd, 0, 0)) < 0)
+  m_internal->AcquireFD();
+  if ((fd2 = accept(m_fd, 0, 0)) < 0) {
+    m_internal->ReleaseFD();
     return FALSE;
+  }
+  m_internal->ReleaseFD();
 
   struct linger linger;
   linger.l_onoff = 0;
@@ -762,7 +771,9 @@ bool wxSocketServer::AcceptWith(wxSocketBase& sock)
   sock.m_fd = fd2;
   sock.m_connected = TRUE;
 
-  sock.m_internal->InitializeSocket();
+  sock.m_internal->SetFD(fd2);
+
+  sock.m_internal->ResumeWaiter();
 
   return TRUE;
 }
@@ -844,9 +855,7 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool WXUNUSED(wait) )
   if (connect(m_fd, remote, len) != 0)
     return FALSE;
 
-  // Initializes the background threads ...
-  // --------------------------------------
-  m_internal->InitializeSocket();
+  m_internal->SetFD(m_fd);
 
   // Enables bg events.
   // ------------------
@@ -872,11 +881,10 @@ void wxSocketClient::OnRequest(wxRequestEvent evt)
   {
     if (m_connected) 
     {
-      SetNotify(m_neededreq & ~REQ_CONNECT);
+      m_neededreq &= ~REQ_CONNECT;
       return;
     }
     m_connected = TRUE;
-    OldOnNotify(EVT_CONNECT);
     return;
   }
   wxSocketBase::OnRequest(evt);
@@ -1060,31 +1068,6 @@ wxSocketClient *wxSocketHandler::CreateClient(wxSocketBase::wxSockFlags flags)
   return client;
 }
 
-#ifdef __WINDOWS__
-// --------------------------------------------------------------
-// --------- wxSocketHandler: Windows specific methods ----------
-// --------------------------------------------------------------
-
-UINT wxSocketHandler::NewMessage(wxSocketBase *sock)
-{
-  internal->firstAvailableMsg++;
-  smsg_list->Append(internal->firstAvailableMsg, sock);
-  return internal->firstAvailableMsg;
-}
-
-void wxSocketHandler::DestroyMessage(UINT msg)
-{
-  wxNode *node = smsg_list->Find(msg);
-  delete node;
-}
-
-HWND wxSocketHandler::GetHWND() const
-{
-  return internal->sockWin;
-}
-
-#endif
-
 bool wxSocketModule::OnInit() 
 {
   wxSocketHandler::master = new wxSocketHandler();