Hi! Gabriel M. Beddingfield wrote: > Attached is a testing-only patch against TRUNK Rev 1163. On my > system, it greatly reduces the "Jack Zombies" (a.k.a. Hollunder's bug, > a.k.a Ticket #85). However, it totally kills all logging. > Since the patch seems to help ( at least forGrammostola Rosea (btw, he was the one who created ticket 101) and you) , i suppose the question is now how we can integrate those changes into trunk without doing much damage :) > > * I did some profiling with oprofile and found that > AudioEngine::try_lock() was taking _way_ to long. > Reason? This: > > AudioEngine::get_instance()->try_lock( "string literal" ); > > The string literal get implicitly converted to a QString. > This will _always_ call the QString copy constructor. This is > fixed by making the string literal a static QString. try_lock() is used just once in our whole sourcecode, so i could live with Gabriels static solution. > > * try_lock() still sometimes took too long, > so I killed the QString assignment for the __locker > variable. For the moment we can set __locker to a static "audioEngine_process", since it is not called from anywhere else. But a very ugly hack :-/ > > * All logging is disabled. When the logging thread > is actively processing it's data, it locks the queue. > Anything in a process() cycle that wants to add > something to the logging queue has to wait. (At > least... as far as I can tell. :-)) Hm, this is not easy to solve. Maybe we could turn the whole xmlparser related messages (mostly warnings that a user don't want to read..) into INFOLOG messages, which just show up if you want a debug version. Well this solves not the problem for the debug version.
Gabriel, do you think it would help if we speed up the logging and use c-strings as an argument for ERRORLOG etc. ? At the moment we're using QString's and the logger thread makes a conversion to a c-string and prints it with fprintf, iirc. That would speed up the logger thread, but the thread which uses ERRORLOG would have to do more work when he uses dynamic strings because of the QString -> c-string conversion. > > * The audioEngine_process() aborts if not in STATE_READY > or STATE_PLAYING. Any other state doesn't make sense. ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Hydrogen-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/hydrogen-devel
