mcallegari / qlcplus

Q Light Controller Plus (QLC+) is a free and cross-platform software to control DMX or analog lighting systems like moving heads, dimmers, scanners etc. This project is a fork of the great QLC project written by Heikki Junnila that aims to continue the QLC development and to introduce new features.
Apache License 2.0
991 stars 356 forks source link

Show Editor freezing QLC+ for several seconds when first track is infinite #1572

Closed qfulmina closed 4 months ago

qfulmina commented 4 months ago

Hi there.

Describe the bug I can confirm a bug report from the forums: https://forum.qlcplus.org/viewtopic.php?p=64701

Every switch to and from the Shows tab completely freezes QLC+ 4.13.0 for several seconds when hold of the first track is set to infinite and a second track exists within this show.

To Reproduce Steps to reproduce the behavior: In a new QLC+ session. No fixture needed.

  1. Create two (empty) Scenes.
  2. Create a Show in the Shows tab.
  3. Add the first Scene to the Show at the very beginning. Set Hold to infinite.
  4. Add the second Scene to the Show.
  5. Switch to e.g. Functions tab.

Now the damage is done. One CPU core maximizes to 100% and QLC+ hangs for several seconds. And each time one switches to or from the Shows tab happens the same.

This does however not happen when the hold duration of the first scene is not infinite but incredibly high.

Expected behavior No freezing.

Desktop (please complete the following information):

Additional context Debug Level 0 output:

Universe thread started 0
Universe thread started 1
Universe thread started 2
Universe thread started 3
SimpleDeskEngine::SimpleDeskEngine(Doc*)
void SimpleDesk::slotUniversePageChanged(int)
CueStack* SimpleDeskEngine::createCueStack()
[InputOutputPatchEditor] Fill tree for universe:  0
virtual void ShowManager::showEvent(QShowEvent*)
virtual void ShowManager::hideEvent(QHideEvent*)
virtual void FunctionManager::showEvent(QShowEvent*)
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
SceneEditor::SceneEditor(QWidget*, Scene*, Doc*, bool)
SceneEditor::SceneEditor(QWidget*, Scene*, Doc*, bool)
virtual SceneEditor::~SceneEditor()
virtual void FunctionManager::hideEvent(QHideEvent*)
void SceneEditor::slotFunctionManagerActive(bool)
virtual void ShowManager::showEvent(QShowEvent*)
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[ShowManager] updateMultiTrackView...
QXcbConnection: XCB error: 3 (BadWindow), sequence: 1010, resource id: 19459778, major code: 40 (TranslateCoords), minor code: 0
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
Start time: 4294967295 Duration: 0
virtual void ShowItem::mouseReleaseEvent(QGraphicsSceneMouseEvent*) mouse RELEASE event - < 120 > - < 49 >
void MultiTrackView::slotItemMoved(QGraphicsSceneMouseEvent*, ShowItem*) event - < 120 > - < 49 >
SceneEditor::SceneEditor(QWidget*, Scene*, Doc*, bool)
Idx:  0 , steps:  1
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
[FunctionsTreeWidget] TREE item changed
Start time: 4294967295 Duration: 0
virtual void ShowManager::hideEvent(QHideEvent*)
void SceneEditor::slotFunctionManagerActive(bool)
Function stop(). Name: "New Sequence 3" ID:  3 source: 4294967295 0
virtual SceneEditor::~SceneEditor()
qfulmina commented 4 months ago

Thanks!