Hi Brett,
Am 23.07.2020 um 15:56 schrieb Stottlemyer, Brett (B.S.):
I'm still trying to wrap my head around this concept, and starting a new
thread to distinguish from the technical implementation discussion.
The two obvious cases:
* Immediate evaluation. This is the current signal-based handling
(ignoring queued for the moment).
* Evaluate-on-Read (EoR). True lazy evaluation, where computations
would never be made if no one asks. Kind of the opposite of CoW.
EoR, though, seems not too useful in many cases; it seems to shift
backwards towards polling. I expect Qt's HMI technologies (Widgets,
QML, 3D) to have to shift(?) to the third case:
* Render evaluation. When the render runs (nominally 30 or 60 frames
per second), all "dirty" elements are evaluated, and the dirty flag is
cleared. In this case, the evaluation is lazy, but the task of figuring
out when to evaluate is handled by the renderer, not passed on to the user.
I think much of the confusion stems from the fact that you can get
notifications (i.e. callbacks) without evaluating the whole binding.
From what I grok from the code, you can subscribe to "dirty" flag
changes with onValueChanged/subscribe - but this does not evaluate the
property binding. Evaluation is only done when your handler routine
actually requests the property value.
(Note that in that case "onValueChanged" might be a misnomer - the value
might not have actually changed, even though a changed dependency has
lead to it being flagged dirty).
If the goal is, however, to really get rid of all the ways to get
notified about (possibly) changed properties, then this system is
defective IMHO. Constant-rate polling with a timer might be a good
solution for *some* problems, but it leads to absolutely abysimal
performance in others (or many wasted resources). But I don't think this
is what is proposed.
Anyone with more knowledge: please correct me if I'm wrong.
Regards,
Arno
--
Arno Rehn
Tel +49 89 189 166 0
Fax +49 89 189 166 111
a.r...@menlosystems.com
www.menlosystems.com
Menlo Systems GmbH
Am Klopferspitz 19a, 82152 Martinsried, Germany
Amtsgericht München HRB 138145
Geschäftsführung: Dr. Michael Mei, Dr. Ronald Holzwarth
USt.-IdNr. DE217772017, St.-Nr. 14316170324
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development