summaryrefslogtreecommitdiff
path: root/libs/pbd/crossthread.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd/crossthread.cc')
-rw-r--r--libs/pbd/crossthread.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/libs/pbd/crossthread.cc b/libs/pbd/crossthread.cc
index 12ca19b945..553c8d52f3 100644
--- a/libs/pbd/crossthread.cc
+++ b/libs/pbd/crossthread.cc
@@ -30,7 +30,7 @@ using namespace std;
using namespace PBD;
using namespace Glib;
-CrossThreadChannel::CrossThreadChannel ()
+CrossThreadChannel::CrossThreadChannel (bool non_blocking)
{
_ios = 0;
fds[0] = -1;
@@ -41,14 +41,16 @@ CrossThreadChannel::CrossThreadChannel ()
return;
}
- if (fcntl (fds[0], F_SETFL, O_NONBLOCK)) {
- error << "cannot set non-blocking mode for x-thread pipe (read) (" << ::strerror (errno) << ')' << endmsg;
- return;
- }
-
- if (fcntl (fds[1], F_SETFL, O_NONBLOCK)) {
- error << "cannot set non-blocking mode for x-thread pipe (write) (%2)" << ::strerror (errno) << ')' << endmsg;
- return;
+ if (non_blocking) {
+ if (fcntl (fds[0], F_SETFL, O_NONBLOCK)) {
+ error << "cannot set non-blocking mode for x-thread pipe (read) (" << ::strerror (errno) << ')' << endmsg;
+ return;
+ }
+
+ if (fcntl (fds[1], F_SETFL, O_NONBLOCK)) {
+ error << "cannot set non-blocking mode for x-thread pipe (write) (%2)" << ::strerror (errno) << ')' << endmsg;
+ return;
+ }
}
}