On a deeper analisys I think a better fix would be
exposing a protected setParsingComplete() method
in MediaParser and have that call waitIfNeeded.
Doing so we'd make sure the "ifNeeded" check is only
performed when the important conditions actually change:
- Buffer pushed to
- Parsing completed
I'm working on a patch for testing if you don't beat
me to it. The patch would also make waitIfNeeded()
and _parsingCompleted private.
--strk;
On Sun, Aug 08, 2010 at 02:30:44PM -0700, John Gilmore wrote:
> > 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.
>
> Since I only check code into gnash every three or four years, it takes
> me hours to figure out how to do it. It's an incredible jumble of ssh
> keys in a format I never otherwise use, and savannah, and bzr, and
> NFS, and stuff like that. (And now it looks like there's a git repo
> too!) Could somebody check in this four-line change for me?
>
> > > > === 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);
> > > > + }
> > > > }
> > > > }
>
> John
>
> _______________________________________________
> Gnash-dev mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/gnash-dev
--
() Free GIS & Flash consultant/developer
/\ http://strk.keybit.net/services.html
_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev