Refactor: extract code to make an fd non-clocking into a function.
Simply extract part of the code from evtloopunix.cpp into a reusable wxPipe::MakeNonBlocking() function to be able to reuse it elsewhere. See #12636. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65992 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -52,6 +52,16 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
// switch the given end of the pipe to non-blocking IO
|
||||
bool MakeNonBlocking(Direction which)
|
||||
{
|
||||
const int flags = fcntl(m_fds[which], F_GETFL, 0);
|
||||
if ( flags == -1 )
|
||||
return false;
|
||||
|
||||
return fcntl(m_fds[which], F_SETFL, flags | O_NONBLOCK) == 0;
|
||||
}
|
||||
|
||||
// return TRUE if we were created successfully
|
||||
bool IsOk() const { return m_fds[Read] != INVALID_FD; }
|
||||
|
||||
|
@@ -88,17 +88,14 @@ bool PipeIOHandler::Create()
|
||||
return false;
|
||||
}
|
||||
|
||||
const int fdRead = GetReadFd();
|
||||
|
||||
int flags = fcntl(fdRead, F_GETFL, 0);
|
||||
if ( flags == -1 || fcntl(fdRead, F_SETFL, flags | O_NONBLOCK) == -1 )
|
||||
if ( !m_pipe.MakeNonBlocking(wxPipe::Read) )
|
||||
{
|
||||
wxLogSysError(_("Failed to switch wake up pipe to non-blocking mode"));
|
||||
return false;
|
||||
}
|
||||
|
||||
wxLogTrace(TRACE_EVENTS, wxT("Wake up pipe (%d, %d) created"),
|
||||
fdRead, m_pipe[wxPipe::Write]);
|
||||
m_pipe[wxPipe::Read], m_pipe[wxPipe::Write]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user