Up to now, notification of invalidated subareas was available for controls
but yet, the layout always ended up being totally rebuilt. For instance,
a small animated image meant a total rebuild of everything. For simple skins,
this could go unnoticed, but old computers had much difficulty with more
complex skins (e.g wmp11), that were mostly busy rebuilding layouts
over and over.
This patch ensures that only what needs to be rebuilt is rebuilt. Some skins
like wmp11 on Linux do show dramatic improvement with this one patch.
This patch does the following:
- fix skins that could not be saved, because their ids contained the space
character. Names are now enclosed between "" to preserve those spaces.
- show windows only when the init and check work is done. This avoids
fleeting windows that sometimes occur (usually visible on Linux)
This patch is mainly intended to work out the async queue getting
bigger and bigger when skins cannot keep up with command processing.
Since flushing the queue is an infinite loop, this ends up in vlc
hanging (frozen GUI). This happens when skins are complex (many controls,
many timers, animated images, scrolling text, ...)
With this patch, new commands of a given type can now replace pending
commands not yet processed when that makes sense (e.g position, volume, ...).
The position is really the one responsible for overflooding the queue.
text controls were far from being optimized
- a notifyLayout was executed at creation of text control, leading
to rebuilding the layout twice.
- the init of the variable was done after the control was created
which means still more rebuild of the layout.
This patch ensures that no rebuild is done at init since we are already in the
process of rebuilding the entire layout.
This reverts commit 989ec97aa4.
Sadly, config_SaveConfigFile cannot be used that way as it will save randomly
modified settings as well (at least as long as config_Put* is in use in
the core/modules).