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

Reply via email to