[Panel-devel] svg rendering

Sean Harmer sh at theharmers.co.uk
Sun Oct 28 19:55:54 CET 2007


Hi Aaron,

On Sunday 28 October 2007 17:17:55 Aaron J. Seigo wrote:
> On Sunday 28 October 2007, Sean Harmer wrote:
> > Just for info, I'm trying a little experiment to try and make Plasma::Svg
> > use a multithreaded rendering backend. No idea if it will work yet or
> > not.
>
> brilliant; another place of threading performance improvement possibility
> will be to put all the dataengines in their own thread ... most of the
> interaction with engines happens via signal/slot and is assumed to be async
> so it should be fairly easy ..
Have I just been volunteered for something? :-D 

I'm not used to seeing the words "threading" and "easy" in the same paragraph, 
unless there's an "isn't" in there too ;-)

> connectSource() will need some work, but it shouldn't be too difficult.
>
> the query() method is one of the very few that might cause problems and
> require some re-jigging as it's a direct, assumed-to-be-synchronous call.
>
> we may be able to either get rid of query() all together or just make it
> signal-driven as well.
No promises but if my woefully single-threaded brain can take it, I'll have a 
look at the data engine threading possibilities after I tidy up the 
background rendering and give it a few more features.

I'm getting there with the SVG threading. Extra threads are launched and seem 
to be rendering OK. I think I've just eliminated a race condition where 
multiple threads were trying to use the same renderer simultaneously => 
crash.

This has highlighted that I need to be a bit smarter when I start a render job 
off as there is no point in having several threads if they are all contending 
for the same renderer (which is locked by a mutex). Should be easy to work 
around.

Back to debugging...

Sean





More information about the Panel-devel mailing list