Skip to content

Commit

Permalink
Merge pull request #38117 from robertapplin/38116-cancel-algorithm-be…
Browse files Browse the repository at this point in the history
…fore-destructing-qt-algorithm-runner

Cancel algorithm before destructing QtAlgorithmRunner
  • Loading branch information
SilkeSchomann authored Oct 2, 2024
2 parents a931470 + 2c79190 commit e997c38
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 16 deletions.
1 change: 1 addition & 0 deletions docs/source/release/v6.11.0/Inelastic/Bugfixes/38116.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Fixed a crash on the :ref:`Inelastic Bayes Fitting <interface-inelastic-bayes-fitting>` when closing the interface while it is loading data.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ GNU_DIAG_OFF_SUGGEST_OVERRIDE
class MockQtAlgorithmRunner : public QtAlgorithmRunner {
public:
MockQtAlgorithmRunner() = default;
MOCK_METHOD0(cancelRunningAlgorithm, void());
MOCK_METHOD1(startAlgorithmImpl, void(Mantid::API::IAlgorithm_sptr));
MOCK_CONST_METHOD0(getAlgorithm, Mantid::API::IAlgorithm_sptr());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class EXPORT_OPT_MANTIDQT_COMMON QtAlgorithmRunner : public QObject {
explicit QtAlgorithmRunner(QObject *parent = nullptr);
~QtAlgorithmRunner() override;

virtual void cancelRunningAlgorithm();
void cancelRunningAlgorithm();

virtual void startAlgorithm(Mantid::API::IAlgorithm_sptr alg);
virtual Mantid::API::IAlgorithm_sptr getAlgorithm() const;
Expand Down
15 changes: 1 addition & 14 deletions qt/widgets/common/src/QtAlgorithmRunner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,12 @@ using namespace Mantid::API;

namespace MantidQt::API {

//----------------------------------------------------------------------------------------------
/** Constructor
*/
QtAlgorithmRunner::QtAlgorithmRunner(QObject *parent)
: QObject(parent), m_finishedObserver(*this, &QtAlgorithmRunner::handleAlgorithmFinishedNotification),
m_progressObserver(*this, &QtAlgorithmRunner::handleAlgorithmProgressNotification),
m_errorObserver(*this, &QtAlgorithmRunner::handleAlgorithmErrorNotification), m_asyncResult(nullptr) {}

//----------------------------------------------------------------------------------------------
/** Destructor
*/
QtAlgorithmRunner::~QtAlgorithmRunner() {
if (m_asyncAlg) {
m_asyncAlg->removeObserver(m_finishedObserver);
m_asyncAlg->removeObserver(m_errorObserver);
m_asyncAlg->removeObserver(m_progressObserver);
}
delete m_asyncResult;
}
QtAlgorithmRunner::~QtAlgorithmRunner() { cancelRunningAlgorithm(); }

//--------------------------------------------------------------------------------------
/** If an algorithm is already running, cancel it.
Expand Down

0 comments on commit e997c38

Please sign in to comment.