On Sat, Aug 07, 2010 at 10:53:40PM +0200, strk wrote:
> On Thu, Aug 05, 2010 at 07:46:33PM -0700, John Gilmore wrote:
> > This patch seems to fix this problem in gnash:
> > 
> > === modified file 'libmedia/MediaParser.cpp'
> > --- libmedia/MediaParser.cpp        2010-01-01 17:48:26 +0000
> > +++ libmedia/MediaParser.cpp        2010-08-06 02:34:19 +0000
> > @@ -411,7 +411,10 @@
> >     while (!parserThreadKillRequested())
> >     {
> >             parseNextChunk();
> > -           gnashSleep(100); // no rush....
> > +           {
> > +                   boost::mutex::scoped_lock lock(_qMutex);
> > +                   waitIfNeeded(lock);
> > +           }
> >     }
> >  }
> 
> I think 'parseNextChunk' is supposed to call waitIfNeeded, but
> it's been a long time...

Took a look, parseNextChunk eventually calls push{Video,Audio}Frame
which in turn (in base class) calls waitIfNeeded (having the
AV queue already locked).

Your patch seems fine, and could eventually also make the call
to waitIfNeeded deep in pushAVFrame needless.

Watch out for deadlocks, if you don't get any go ahead and commit
it for broader testing.

--strk;

  ()   Free GIS & Flash consultant/developer
  /\   http://strk.keybit.net/services.html

_______________________________________________
Gnash-dev mailing list
Gnash-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnash-dev

Reply via email to