> On 2010-10-25 20:43:20, Marco Martin wrote: > > /trunk/KDE/kdelibs/plasma/svg.cpp, line 259 > > <http://svn.reviewboard.kde.org/r/5689/diff/3/?file=40220#file40220line259> > > > > this creates a renderer too often. > > since the purpose of the cache is avoid to create renderers this is not > > good > > Manuel Mommertz wrote: > Right, but this is solvable by inserting the size hints in > SvgPrivate::localRectCache. > > Ingomar Wesp wrote: > > Right, but this is solvable by inserting the size hints in > SvgPrivate::localRectCache. > > To be honest, I'm not sure I understand the cache related code well > enough, so please be patient with me here... > > From what I (think I) understand, you intend to move the search for the > best fit to SvgPrivate::findAndCacheElementRect and insert it into the > theme's rect cache? Because if I'm not mistaken, just adding it to the > localRectCache would not allow the entry to be persisted and would thus not > help prevent the creation of a renderer in the future. > > Manuel Mommertz wrote: > It is a bit more work than I thought. But it is doable in the following > way: > > If the renderer is created: > * Load SVG and get size hints > * Store size hints in Plasma::SvgPrivate (not in the renderer) and in > Plasma::Theme's rectscache > > If Plasma::Svg is created > * Try to load size hints from Plasma::Theme's rectscache and store them > localy > > On Rendering: > * Use the size hints > > > For this to work we need support in Plasma::Theme to get a list of > available rects. Should be easy to implement. > > > Questions: > * How fast is KConfig? If it is fast enaugh, it might not be needed to > store size hints localy. But I doubt it is. > * Should Plasma::Theme provide a full list of all rects or should > filtering for size hints take effect? Personaly I think a full list is > better, as this might be used for other things in the future.
> If the renderer is created: > * Load SVG and get size hints > * Store size hints in Plasma::SvgPrivate (not in the renderer) and in > Plasma::Theme's rectscache If we want to use the cache without any information about the actual elements that are present, this would mean that we would have to pre-create entries for all sizes below the biggest size hinted element. So in the worst case, for a (w-h) size hinted element that would mean max(w,h) entries (well, since the aspect ratio needs to match, it's not w*h entries, at least ;) BTW: Thinking about that, the algorithm I proposed for finding the best match will not work for non-square elements, because the aspect ratio of integer-sized elements will suffer from rounding errors that will be way beyond what qFuzzyCompare will tolerate :( > If Plasma::Svg is created > * Try to load size hints from Plasma::Theme's rectscache and store them localy Do we really need to do that? The entries should "bubble down" into the local cache on demand in SvgPrivate::elementRect, no? - Ingomar ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://svn.reviewboard.kde.org/r/5689/#review8349 ----------------------------------------------------------- On 2010-10-25 23:54:14, Ingomar Wesp wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://svn.reviewboard.kde.org/r/5689/ > ----------------------------------------------------------- > > (Updated 2010-10-25 23:54:14) > > > Review request for Plasma. > > > Summary > ------- > > Previously, if an SVG contained size hinted elements, they were only used > when the display size matched the size hint exactly. This patch tries to > relax this condition by searching for the smallest size hinted element that > is still bigger than the display size (in order for the element to be chosen, > it also has to have the same aspect ratio). If no such element can be found, > it falls back to the normal element id as passed. > > In order to speed up the lookup (and because it appears to be impossible to > access the DOM of an already loaded SvgRenderer), all size hinted element ids > are stored in SharedSvgRenderer at load time. > > I think it would be good to change the QRegExp based id fetching into a > proper DOM traversal. Are there any convenience functions in KDELibs that > allow easy iterating over all elements (couldn't find any) or do I have to > implement that myself based on Qt's DOM classes? > > Please tell me what you think... Have I missed something? > > > Diffs > ----- > > /trunk/KDE/kdelibs/plasma/private/svg_p.h 1189821 > /trunk/KDE/kdelibs/plasma/svg.cpp 1189821 > > Diff: http://svn.reviewboard.kde.org/r/5689/diff > > > Testing > ------- > > > Thanks, > > Ingomar > >
_______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel