fix import-thread SNAFU

* pressing Esc or WM close button did not cancel import thread
 * proper Abort does not wait for import thread either

It was possible to launch a 2nd (and Nth) import thread, all sharing
the Editor's ImportStatus data-structure, all having the same
registered thread-name and same thread-pool name.  Plenty of room for
crashes.
This commit is contained in:
Robin Gareus 2016-05-21 23:30:11 +02:00
parent 9ad096b611
commit 03660573e2
3 changed files with 13 additions and 1 deletions

View File

@ -507,7 +507,10 @@ Editor::import_sndfiles (vector<string> paths,
gtk_main_iteration ();
}
import_status.done = true;
// wait for thread to terminate
while (!import_status.done) {
gtk_main_iteration ();
}
int result = -1;

View File

@ -55,6 +55,14 @@ InterthreadProgressWindow::InterthreadProgressWindow (ARDOUR::InterThreadInfo* i
Glib::signal_timeout().connect (sigc::mem_fun (*this, &InterthreadProgressWindow::update), 100);
}
void
InterthreadProgressWindow::on_hide ()
{
if (!_interthread_info->done) {
_interthread_info->cancel = true;
}
}
void
InterthreadProgressWindow::cancel_clicked ()
{

View File

@ -42,6 +42,7 @@ public:
protected:
virtual bool update ();
virtual void on_hide ();
Gtk::Button _cancel_button;
Gtk::Label _cancel_label;