diff options
Diffstat (limited to 'libs/pbd/crossthread.win.cc')
-rw-r--r-- | libs/pbd/crossthread.win.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/pbd/crossthread.win.cc b/libs/pbd/crossthread.win.cc index 5eca5fb4e8..60572bde70 100644 --- a/libs/pbd/crossthread.win.cc +++ b/libs/pbd/crossthread.win.cc @@ -89,6 +89,14 @@ CrossThreadChannel::CrossThreadChannel (bool non_blocking) CrossThreadChannel::~CrossThreadChannel () { + if (receive_source) { + /* this disconnects it from any main context it was attached in + in ::attach(), this prevent its callback from being invoked + after the destructor has finished. + */ + g_source_destroy (receive_source); + } + /* glibmm hack */ if (receive_channel) { |