The source holds a reference to the channel; both must be unref'ed/destroyed in order to
fully clean up resources
CrossThreadChannel::CrossThreadChannel (bool non_blocking)
: receive_channel (0)
+ , receive_source (0)
{
fds[0] = -1;
fds[1] = -1;
CrossThreadChannel::~CrossThreadChannel ()
{
- if (receive_channel) {
+ if (receive_source) {
+ g_source_destroy (receive_source);
+ receive_source = 0;
+ }
+
+ if (receive_channel) {
g_io_channel_unref (receive_channel);
+ receive_channel = 0;
}
if (fds[0] >= 0) {