Submaster on chaser functions only works when moved

The issues found when using the Virtual Console
Post Reply
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

Hey guys,

in this I picked up a bug regarding submaster.
Please have a look at the attached workspace. It contains only a chaser with two functions in it. The two functions are placed in a frame with a submaster.

Steps to reproduce:
  • Start chaser, submaster at 100%
  • Watch DMX Monitor - everything as expected
  • Grab the submaster to a desired value - it limits the DMX output immediately to the value [as expected]
  • When the chaser moves on and the other scene is started, the output goes back to full intensity, the submaster is not considered [not as expected]
  • From now on the submaster is no more taken into account, until you touch it again
So basically the submaster only works as long as you move it.

Tested with latest sources on Xubuntu 14.04 64Bit (Qt5)

Regards,
siegmund
Attachments
submaster-bug.qxw
(5.34 KiB) Downloaded 65 times
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

I see what you mean, but this doesn't seem to depend on the change done for Solo frames.
Are we sure this wasn't there in 4.10.5 too ?

[EDIT] just checked. Same issue on 4.10.5b

[EDIT2] Lukas, I think we both got fooled by this "bug" report. Once I thought about it for more than one minute then everything made sense !
The buttons inside the frame are only reflecting the running/not running state. They are not actually running the functions, and even if they were, HTP would kick in, and the chaser would win.
Who runs the functions is the chaser, which is OUTSIDE the frame, and it's not affected by the submaster !

In fact, if you manually press the 2 buttons without running the chaser, the submaster value is taken into account, as expected.
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

mcallegari wrote: Fri Jul 14, 2017 3:30 pm The buttons inside the frame are only reflecting the running/not running state. They are not actually running the functions, and even if they were, HTP would kick in, and the chaser would win.
Thank you for pointing that out, I did not know that there is the possibility of a button only "monitoring" the current state. I thought the chaser starts/stops each function independently and the buttons are actually controlling the function.
So in general can one say, that if the buttons is not pressed, but gets active (green frame) from some sort of trigger (whatever this is: chaser, collection?, script?) it does not have the actual control and will only monitor the current state of the function?

What I consider a bit strange is, that as long as the submaster is moved (and for the whole current chaser step), it is taken into account. So this seems a bit inconsistent and like the buttons actually have at least some "sort of" control over the function. Since I'm willing to learn how this works, could you please try to explain this, too?
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

This is the explanation:
https://github.com/mcallegari/qlcplus/b ... n.cpp#L813

Basically:
- chaser starts
- chaser starts step 1 - Scene 1 - intensity @ 255
- button 1 is notified and detects it's its function -> border turns to green but don't actually run the function cause it's already running
- submaster is moved -> notify it to the parent frame -> frame notifies all the widgets in it
- button 1 receives an intensity adjustment -> can resolve the Function pointer, so actually adjusts the intensity
- chaser starts step 2 - Scene 2 - intensity @ 255
- chaser starts step 1 - Scene 1 - intensity @ 255
- and so on

Since chaser is outside the frame and it's the one actually running functions, the intensity it programs wins over the submaster intensity.

If, on the other hand, the Buttons were the ones running functions they would consider the submaster value, previously stored here:
https://github.com/mcallegari/qlcplus/b ... n.cpp#L824
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

In a solution where you can distinguish buttons "monitoring" a function and buttons running a function, a submaster change would have no effect all all and the reason for it would be clearer
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

mcallegari wrote: Sat Jul 15, 2017 1:47 pm In a solution where you can distinguish buttons "monitoring" a function and buttons running a function, a submaster change would have no effect all all and the reason for it would be clearer
Yes, I would consider this much better, if "monitoring" buttons do not interact with the other ones in the same frame at all.
Post Reply