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

Reply via email to