mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Use queued connection to thread-safe MainWindow error handling
Up to now, errors produced by threads were not directly shown in the MainWindow. Code running in the GUI thread had to manually show the errors. This can be simplified by using Qt's queued connection as message passing facility. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
1704e08012
commit
a25f54e3c2
5 changed files with 11 additions and 20 deletions
|
@ -91,21 +91,9 @@ MainWindow *MainWindow::m_Instance = NULL;
|
|||
|
||||
extern "C" void showErrorFromC()
|
||||
{
|
||||
// Show errors only if we are running in the GUI thread.
|
||||
// If we're not in the GUI thread, let errors accumulate.
|
||||
if (QThread::currentThread() != QCoreApplication::instance()->thread())
|
||||
return;
|
||||
|
||||
MainWindow *mainwindow = MainWindow::instance();
|
||||
if (mainwindow)
|
||||
mainwindow->showErrors();
|
||||
}
|
||||
|
||||
void MainWindow::showErrors()
|
||||
{
|
||||
const char *error = get_error_string();
|
||||
if (!empty_string(error))
|
||||
getNotificationWidget()->showNotification(error, KMessageWidget::Error);
|
||||
emit mainwindow->showError(get_error_string());
|
||||
}
|
||||
|
||||
MainWindow::MainWindow() : QMainWindow(),
|
||||
|
@ -219,6 +207,7 @@ MainWindow::MainWindow() : QMainWindow(),
|
|||
connect(plannerDetails->printPlan(), SIGNAL(pressed()), divePlannerWidget(), SLOT(printDecoPlan()));
|
||||
connect(this, SIGNAL(startDiveSiteEdit()), this, SLOT(on_actionDiveSiteEdit_triggered()));
|
||||
connect(information(), SIGNAL(diveSiteChanged(struct dive_site *)), mapWidget, SLOT(centerOnDiveSite(struct dive_site *)));
|
||||
connect(this, &MainWindow::showError, ui.mainErrorMessage, &NotificationWidget::showError, Qt::AutoConnection);
|
||||
|
||||
wtu = new WindowTitleUpdate();
|
||||
connect(WindowTitleUpdate::instance(), SIGNAL(updateTitle()), this, SLOT(setAutomaticTitle()));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue