\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
% ----------
\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
% ----------
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.
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);
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;
}
// wait until the thread stops
p_internal->Wait();
}
+ //GL: As we must auto-destroy, the destruction must happen here.
+ delete this;
return NULL;
}
return wxTHREAD_MISC_ERROR;
}
+ //GL: As we must auto-destroy, the destruction must happen here (2).
+ delete this;
return wxTHREAD_NO_ERROR;
}