wxMemoryStream doc updated

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
This commit is contained in:
Guilhem Lavaux
1999-08-01 07:26:36 +00:00
parent 71cbe687e3
commit f439844be2
5 changed files with 27 additions and 41 deletions

View File

@@ -15,17 +15,6 @@
\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.

View File

@@ -46,7 +46,8 @@ typedef enum {
GSOCK_INVADDR,
GSOCK_INVSOCK,
GSOCK_NOHOST,
GSOCK_INVPORT
GSOCK_INVPORT,
GSOCK_TRYAGAIN
} GSocketError;
typedef enum {

View 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);

View 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();

View 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;
}