[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog backend/sound_handler_sdl.cpp
From: |
Tomas Groth |
Subject: |
[Gnash-commit] gnash ChangeLog backend/sound_handler_sdl.cpp |
Date: |
Wed, 23 May 2007 11:38:22 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Tomas Groth <tgc> 07/05/23 11:38:22
Modified files:
. : ChangeLog
backend : sound_handler_sdl.cpp
Log message:
Fixed a crash when removing attached sounds from the aux_streamer
list.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3314&r2=1.3315
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler_sdl.cpp?cvsroot=gnash&r1=1.63&r2=1.64
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3314
retrieving revision 1.3315
diff -u -b -r1.3314 -r1.3315
--- ChangeLog 23 May 2007 07:41:45 -0000 1.3314
+++ ChangeLog 23 May 2007 11:38:21 -0000 1.3315
@@ -2,6 +2,7 @@
* backend/sound_handler_sdl.cpp: Made it a bit more thread-safe by
locking when attaching/detaching a aux_streamer.
+ Fixed a crash when removing attached sounds from the aux_streamer
list.
* libbase/FLVParser.{h,cpp}: Added audioFrameDelay(), and a fixes.
* libbase/curl_adapter.cpp: Changed min and max sleep.
* server/asobj/NetStreamFfmpeg.{h,cpp}: Cleanup! Splitted the big
Index: backend/sound_handler_sdl.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler_sdl.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- backend/sound_handler_sdl.cpp 23 May 2007 07:41:46 -0000 1.63
+++ backend/sound_handler_sdl.cpp 23 May 2007 11:38:22 -0000 1.64
@@ -18,7 +18,7 @@
// Based on sound_handler_sdl.cpp by Thatcher Ulrich http://tulrich.com 2003
// which has been donated to the Public Domain.
-// $Id: sound_handler_sdl.cpp,v 1.63 2007/05/23 07:41:46 tgc Exp $
+// $Id: sound_handler_sdl.cpp,v 1.64 2007/05/23 11:38:22 tgc Exp $
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -684,23 +684,27 @@
Uint8* buffer = stream;
memset(buffer, 0, buffer_length);
- // call NetStream audio callbacks
+ // call NetStream or Sound audio callbacks
if (handler->m_aux_streamer.size() > 0)
{
Uint8* buf = new Uint8[buffer_length];
- for (hash_wrapper< void*,
gnash::sound_handler::aux_streamer_ptr >::iterator it =
- handler->m_aux_streamer.begin();
- it != handler->m_aux_streamer.end(); ++it)
- {
+ // Loop through the attached sounds
+ hash_wrapper< void*, gnash::sound_handler::aux_streamer_ptr
>::iterator it = handler->m_aux_streamer.begin();
+ hash_wrapper< void*, gnash::sound_handler::aux_streamer_ptr
>::iterator end = handler->m_aux_streamer.end();
+ while (it != end) {
memset(buf, 0, buffer_length);
SDL_sound_handler::aux_streamer_ptr aux_streamer =
it->second; //handler->m_aux_streamer[i]->ptr;
void* owner = it->first;
+
+ // If false is returned the sound doesn't want to be
attached anymore
bool ret = (aux_streamer)(owner, buf, buffer_length);
if (!ret) {
- handler->m_aux_streamer.erase(it);
+ handler->m_aux_streamer.erase(it++);
handler->soundsPlaying--;
+ } else {
+ ++it;
}
SDL_MixAudio(stream, buf, buffer_length,
SDL_MIX_MAXVOLUME);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog backend/sound_handler_sdl.cpp,
Tomas Groth <=