// Purpose: Implementation of wxWakeUpPipe class.
// Author: Vadim Zeitlin
// Created: 2013-06-09 (extracted from src/unix/evtloopunix.cpp)
-// RCS-ID: $Id$
// Copyright: (c) 2013 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// wakeup handling
// ----------------------------------------------------------------------------
-void wxWakeUpPipe::WakeUp()
+void wxWakeUpPipe::WakeUpNoLock()
{
- wxCriticalSectionLocker lock(m_pipeLock);
-
// No need to do anything if the pipe already contains something.
if ( !m_pipeIsEmpty )
return;
// got wakeup from child thread, remove the data that provoked it from the
// pipe
- wxCriticalSectionLocker lock(m_pipeLock);
-
char buf[4];
for ( ;; )
{
// The pipe is empty now, so future calls to WakeUp() would need to write
// to it again.
m_pipeIsEmpty = true;
-
- // writing to the wake up pipe will make wxConsoleEventLoop return from
- // wxFDIODispatcher::Dispatch() it might be currently blocking in, nothing
- // else needs to be done
}