[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog libmedia/MediaDecoder.cpp
From: |
Benjamin Wolsey |
Subject: |
[Gnash-commit] gnash ChangeLog libmedia/MediaDecoder.cpp |
Date: |
Tue, 04 Dec 2007 09:20:29 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Benjamin Wolsey <bwy> 07/12/04 09:20:29
Modified files:
. : ChangeLog
libmedia : MediaDecoder.cpp
Log message:
* libmedia/MediaDecoder.cpp: make sure we can stop decoding
before the
buffer is full. Avoids waiting interminably for the thread to
finish
if gnash is closed in the decoding loop.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5077&r2=1.5078
http://cvs.savannah.gnu.org/viewcvs/gnash/libmedia/MediaDecoder.cpp?cvsroot=gnash&r1=1.1&r2=1.2
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5077
retrieving revision 1.5078
diff -u -b -r1.5077 -r1.5078
--- ChangeLog 4 Dec 2007 08:25:26 -0000 1.5077
+++ ChangeLog 4 Dec 2007 09:20:28 -0000 1.5078
@@ -1,3 +1,9 @@
+2007-12-04 Benjamin Wolsey <address@hidden>
+
+ * libmedia/MediaDecoder.cpp: make sure we can stop decoding before the
+ buffer is full. Avoids waiting interminably for the thread to finish
+ if gnash is closed in the decoding loop.
+
2007-12-04 Sandro Santilli <address@hidden>
* testsuite/libbase/: Makefile.am, IntTypesTest.cpp:
Index: libmedia/MediaDecoder.cpp
===================================================================
RCS file: /sources/gnash/gnash/libmedia/MediaDecoder.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libmedia/MediaDecoder.cpp 30 Nov 2007 00:24:00 -0000 1.1
+++ libmedia/MediaDecoder.cpp 4 Dec 2007 09:20:29 -0000 1.2
@@ -16,7 +16,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-// $Id: MediaDecoder.cpp,v 1.1 2007/11/30 00:24:00 tgc Exp $
+// $Id: MediaDecoder.cpp,v 1.2 2007/12/04 09:20:29 bwy Exp $
#include "MediaDecoder.h"
@@ -34,40 +34,52 @@
return statusQueue;
}
- bool decodingFailed = false;
-
void MediaDecoder::decodingLoop()
{
+
+ bool decodingFailed = false;
+
// The decode loop
- while (_running) {
+ while (_running)
+ {
// If the buffer is not full, put something into it!
- if (!_buffer->isFull()) {
- while (!_buffer->isFull()) {
- if (!decodeAndBufferFrame()) {
+ if (!_buffer->isFull())
+ {
+ while (!_buffer->isFull() && _running)
+ {
+ if (!decodeAndBufferFrame())
+ {
decodingFailed = true;
break;
}
//log_debug("decoded a frame");
}
+ }
// "Warm up" the data.
- } else if (_streamSize > _lastConfirmedPosition) {
- if (_stream->set_position(_lastConfirmedPosition+2048)
!= 0) {
+ else if (_streamSize > _lastConfirmedPosition)
+ {
+ if (_stream->set_position(_lastConfirmedPosition+2048)
!= 0)
+ {
// We assume we're done now
// TODO: check for errors
_lastConfirmedPosition = _streamSize;
- } else {
+ }
+ else
+ {
_lastConfirmedPosition += 2048;
}
//log_debug("warming up the file");
-
}
- if (_buffer->isFull()) {
+
+ if (_buffer->isFull())
+ {
pushOnStatus(bufferFull);
// If download is complete there is nothing to do, so
we take a break.
- if (_streamSize <= _lastConfirmedPosition) {
+ if (_streamSize <= _lastConfirmedPosition)
+ {
relax();
continue;
}
@@ -75,9 +87,11 @@
// If decoding failed, there's a good chance playback has
ended, so
// we take a breake until someone tells us to wake up.
- if (decodingFailed) {
+ if (decodingFailed)
+ {
relax();
}
+
}
log_debug("Left the decoding loop");
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog libmedia/MediaDecoder.cpp,
Benjamin Wolsey <=