see: http://www.mail-archive.com/plasma-devel@kde.org/msg134=
94.html
this introduces a Theme object used by Svg to cache the rendering of svg=
9;s asking to be colorized, but which are not part of the theme. this requi=
res an independent cache and set of color files, therefore a second Theme o=
bject. SvgPrivate::actualTheme() is thus overridden by SvgPrivate::cacheAnd=
ColorsTheme() whenever caching or colors are used.
there are two remaining defects of varying severity, though neither is very=
high imho:
a) if the system color palette changes when the application is not running =
(or an svg using such a theme is not running) the cache will not be dropped=
. this is an existing issue, however, not something introduce by this patch=
set
b) the new system color theme is shared for performance reasons, but once c=
reated it is never deleted. it ought to be reference counted so it can be c=
leaned up after in use, but this is currently not done.
several other fixes crept into this patchset (sorry :/) including:
* not dropping the cache just because we change themes; this made sense whe=
n just plasma-desktop used this or when the apps using Plasma::Theme all us=
ed the same theme. this is no longer the case, really, and having applicati=
ons changing themes randomly kicking the cache out from underneath other ap=
ps that may still be using it is undesirable. this does mean that cache fil=
es will accumulate. not sure that's a big issue as they don't tend =
to be large and are in an area marked as "cache" (so ripe for cle=
an-without-care)
* consolidate the signal/slot connections in SvgPrivate::checkColorHints, a=
nd now the check is consistent on all paths (previously, it wasn't!)
* missing (and possible cause of cache key ambiguity) separator in CACHE_ID=
_WITH_SIZE
* cleanups such as getting rid of superfluous use of Plasma:: namespacing i=
n code that is now in libplasma, such as the stylesheeting. (it was from a =
plasmoid sebas wrote originally, iirc, explaining the historical reason for=
the explicit namespacing)
in any case, consider this a draft at this stage. i'm interested in get=
ing feedback, improvements and testing.
|