Skip to content

Implement concurrency

This MR implement concurrency (from QtConcurrent) to shift heavy computations to a different GUI thread and not lock the entire GUI while processing. Note that QtConcurrent requires Qt6, and as such Qt5 support has been removed.

  • Replace ProgressView with ProgressBar; the progress bar is no longer a dialogue, but is instead a part of the status bar. PeakFinder will no longer lock up the GUI while the calculation is running. Note that this currently does not work for any algorithm using the parallel_for loop, e.g. prediction and integration, since these may try to use the main GUI thread.
  • Use concurrency to populate the peak tables, which tends to be the heaviest GUI computation, and causes the GUI to lock for a second while loading certain subframes, noteable SubframeIntegrate and SubframeRefine. Note that this has not been implemented for SubframeMerge, for which the relevant computation belongs to the core, or SubframeReject, which is not feature-complete.
  • Implemented statemachine for GUI safety using QStateMachine

Test protocol: run the entire workflow as in the tutorial.

Try using other controls when the GUI is busy processing. Please report any segfaults.

Resolves #352, #725

Edited by Zamaan Raza

Merge request reports

Loading