Need an official way to exclude parts of the SceneGraph from CSS-Processing

Tom Schindl tom.schindl at bestsolution.at
Tue Jan 24 08:16:15 UTC 2017


Hi,

Well in your sample one has the CSS-Performance hit on each Tab-Switch
for a customer I had implemented a custom TabPane who initially detached
the SG-Part once a Tab was not selected but because the sub-structures
in each Tab had been extremly complex the Tab-Switch lagged so much
finally came to the conclusion that we have to keep the SG elements.

Tom

On 21.01.17 19:17, Michael Paus wrote:
> Hi Tom,
> 
> I am wondering whether it is really necessary to provide special API
> for this case or whether this is not just an implementation issue of
> controls like the TabPane.
> 
> For performance reasons (not only CSS-processing) I normally track
> selection changes in TabPanes and similar controls and then explicitly
> remove all invisible branches from the scene graph and keep them
> elsewhere so that I can re-attach them if needed.
> 
> But I also do this tracking for a second reason because I also want
> to tell my model which tab is visible so that I can shut down all
> processing in my model which only updates properties which are
> only used in the currently invisible branches of the scene graph.
> 
> I think if currently invisible branches of the scene graph are explicitly
> detached from it, this does also solve your original problem of
> reparenting, doesn't it? It would however be nice if the TabPane would
> do the detaching/attaching itself.
> 
> Michael
> 
> 
> Am 20.01.17 um 11:43 schrieb Tom Schindl:
>> Hi,
>>
>> One of the biggest problems when working with JavaFX is that if you
>> reparent a big portion of the SceneGraph is that a full CSS-Pass is
>> applied on all reparented SG-Nodes even if those nodes are currently not
>> visible (eg. because they are part of a TabPane).
>>
>> I general I think it is ok to also applyCSS changes on currently not
>> visible nodes (eg they still have an influence on layout-bounds) but
>> there are situations like the above mentioned example of TabPane that it
>> is unnecessary overhead to apply applyCSS changes on those parts of the
>> SG until they get visible.
>>
>> I would not mind if the CSS-Pass on JavaFX would be as performant as the
>> one from current browsers but unfortunately it isn't so I'd like to
>> discuss the possibility of a API to *temporarily* exclude portions of
>> the SG from CSS-Passes.
>>
>> In JavaFX8 i was able to hack that in by overwriting impl_processCSS in
>> a subclass who changed to doProcessCSS who now is private so my hack
>> does not work anymore.
>>
>> To give you an impression on what performance gains we are talking about
>> just look at the video I recorded -
>> https://tomsondev.bestsolution.at/2016/11/25/improving-minmax-performance-in-e4-on-javafx-applications/
>>
>>
>> Tom
>>
> 


-- 
Thomas Schindl, CTO
BestSolution.at EDV Systemhaus GmbH
Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
http://www.bestsolution.at/
Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck


More information about the openjfx-dev mailing list