X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fcrossthread.posix.cc;h=5035bc49da9d60ba6da8860a234650a4d1ea9bb6;hb=8b52b698104f336053f2228370139d821b7c43c1;hp=6dbca9dcec148ab4832e7097c77d100eda171316;hpb=91fac4c96dc6210dcc056da70dc608700d7eb570;p=ardour.git diff --git a/libs/pbd/crossthread.posix.cc b/libs/pbd/crossthread.posix.cc index 6dbca9dcec..5035bc49da 100644 --- a/libs/pbd/crossthread.posix.cc +++ b/libs/pbd/crossthread.posix.cc @@ -2,6 +2,7 @@ CrossThreadChannel::CrossThreadChannel (bool non_blocking) : receive_channel (0) + , receive_source (0) { fds[0] = -1; fds[1] = -1; @@ -16,7 +17,7 @@ CrossThreadChannel::CrossThreadChannel (bool non_blocking) 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; @@ -28,19 +29,20 @@ CrossThreadChannel::CrossThreadChannel (bool non_blocking) CrossThreadChannel::~CrossThreadChannel () { - if (receive_channel) { + if (receive_channel) { g_io_channel_unref (receive_channel); + receive_channel = 0; } if (fds[0] >= 0) { close (fds[0]); fds[0] = -1; - } + } if (fds[1] >= 0) { close (fds[1]); fds[1] = -1; - } + } } void @@ -87,7 +89,7 @@ CrossThreadChannel::poll_for_request() return false; } -int +int CrossThreadChannel::receive (char& msg, bool wait) { if (wait) {