gnash-commit
[Top][All Lists]
Advanced

[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);
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]