]> git.saurik.com Git - wxWidgets.git/commitdiff
wxMemoryStream doc updated
authorGuilhem Lavaux <lavaux@easynet.fr>
Sun, 1 Aug 1999 07:26:36 +0000 (07:26 +0000)
committerGuilhem Lavaux <lavaux@easynet.fr>
Sun, 1 Aug 1999 07:26:36 +0000 (07:26 +0000)
Added auto-destruction in wxThread::Delete and wxThread::Kill
Fixed thread destruction in thread sample

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/strmmem.tex
include/wx/gsocket.h
samples/thread/test.cpp
src/common/event.cpp
src/unix/threadpsx.cpp

index f22a4bdaa0bb53af154d487dd95315100b1d53db..523b4977fb099b7b94ab34775d25d20f64e133d1 100644 (file)
 
 \helpref{wxStreamBuffer}{wxstreamBuffer}
 
-\wxheading{Remark}
-
-You can create a similar stream by this way:
-
-\begin{verbatim}
-  wxStreamBuffer *sb = new wxStreamBuffer(wxStreamBuffer::read);
-  wxInputStream *input = new wxInputStream(sb);
-
-  sb->SetBufferIO(data, data\_end);
-\end{verbatim}
-
 % ----------
 % Members
 % ----------
@@ -61,33 +50,6 @@ Destructor.
 
 \helpref{wxStreamBuffer}{wxstreamBuffer}
 
-\wxheading{Remark}
-
-You can create a similar stream by this way:
-
-\begin{verbatim}
-  wxStreamBuffer *sb = new wxStreamBuffer(wxStreamBuffer::write);
-  wxOutputStream *input = new wxOutputStream(sb);
-
-  // If there are data
-    sb->SetBufferIO(data, data\_end);
-  // Else
-    sb->Fixed(FALSE);
-\end{verbatim}
-
-This way is also useful to create read/write memory stream:
-
-\begin{verbatim}
-  wxStreamBuffer *sb = new wxStreamBuffer(wxStreamBuffer::read\_write);
-  wxOutputStream *output = new wxOutputStream(sb);
-  wxInputStream *input = new wxInputStream(sb);
-
-  // If there are data
-    sb->SetBufferIO(data, data\_end);
-  // Else
-    sb->Fixed(FALSE);
-\end{verbatim}
-
 % ----------
 % Members
 % ----------
@@ -111,3 +73,15 @@ stream.
 
 Destructor.
 
+\membersection{wxMemoryOutputStream::CopyTo}
+
+\constfunc{size\_t}{CopyTo}{\param{char *}{buffer}, \param{size\_t }{len}}
+
+CopyTo allowed you to transfer data from the internal buffer of
+wxMemoryOutputStream to an external buffer. \it{len} specifies the size of
+the buffer.
+
+\wxheading{Returned value}
+
+CopyTo returns the number of bytes copied to the buffer. Generally it is either
+len or the size of the stream buffer.
index 59739c14c59f8f26b376d4f239176db9732491bc..212a7063ce677d81a77a540bf7b24a1369695878 100644 (file)
@@ -46,7 +46,8 @@ typedef enum {
   GSOCK_INVADDR,
   GSOCK_INVSOCK,
   GSOCK_NOHOST,
-  GSOCK_INVPORT
+  GSOCK_INVPORT,
+  GSOCK_TRYAGAIN
 } GSocketError;
 
 typedef enum {
index b350260d8efba3f56ef6a17803979e7840fbc991..706ac23584b93f8c2efd8f5d67672c89ecdd86b9 100644 (file)
@@ -404,7 +404,9 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
     size_t count = m_threads.Count();
     for ( size_t i = 0; i < count; i++ )
     {
-        m_threads[i]->Delete();
+       // We must always use 0 because Delete() calls OnThreadExit() and 
+        // OnThreadExit() removed 0 from the array.
+        m_threads[0]->Delete();
     }
 
     Close(TRUE);
index 831b257dcdb5c822895982f5c4ef8f423f37ff60..d0e063d025d75db9c5f64f92525b7e837add2992 100644 (file)
@@ -562,6 +562,7 @@ bool wxEvtHandler::ProcessThreadEvent(wxEvent& event)
     wxPendingEvents->Append(this);
     wxPendingEventsLocker->Leave();
 
+    // TODO: Wake up idle handler for the other platforms.
 #ifdef __WXGTK__
     if (g_isIdle) 
         wxapp_install_idle_handler();
index a6f79d8db1ca920b157e2feb86a430ac7bf6e685..75b3bff75778af1046ad249e378c425ca393443a 100644 (file)
@@ -100,8 +100,12 @@ public:
 
 wxMutex::wxMutex()
 {
+    pthread_mutexattr_t attr_type;
+
+    pthread_mutexattr_settype( &attr_type, PTHREAD_MUTEX_FAST_NP );
+
     p_internal = new wxMutexInternal;
-    pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL );
+    pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) &attr_type );
     m_locked = 0;
 }
 
@@ -696,6 +700,8 @@ wxThread::ExitCode wxThread::Delete()
             // wait until the thread stops
             p_internal->Wait();
     }
+    //GL: As we must auto-destroy, the destruction must happen here.
+    delete this;
 
     return NULL;
 }
@@ -717,6 +723,8 @@ wxThreadError wxThread::Kill()
 
                 return wxTHREAD_MISC_ERROR;
             }
+           //GL: As we must auto-destroy, the destruction must happen here (2).
+           delete this;
 
             return wxTHREAD_NO_ERROR;
     }