[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog backend/sound_handler_sdl.cpp s...
From: |
Tomas Groth |
Subject: |
[Gnash-commit] gnash ChangeLog backend/sound_handler_sdl.cpp s... |
Date: |
Mon, 16 Oct 2006 20:41:35 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Tomas Groth <tgc> 06/10/16 20:41:35
Modified files:
. : ChangeLog
backend : sound_handler_sdl.cpp
server : sprite_instance.cpp
Log message:
Fixed stop_all_sounds() and sound_sound().
When a movie is stopped/paused or jumps to a new frame the audio
playback now stops.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1252&r2=1.1253
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler_sdl.cpp?cvsroot=gnash&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.65&r2=1.66
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1252
retrieving revision 1.1253
diff -u -b -r1.1252 -r1.1253
--- ChangeLog 16 Oct 2006 19:01:38 -0000 1.1252
+++ ChangeLog 16 Oct 2006 20:41:35 -0000 1.1253
@@ -1,3 +1,10 @@
+2006-10-16 Tomas Groth Christensen <address@hidden>
+
+ * backend/sound_handler_sdl.cpp: Fixed stop_all_sounds() and
+ sound_sound().
+ * server/sprite_instance.cpp: When a movie is stopped/paused
+ or jumps to a new frame the audio playback now stops.
+
2006-10-16 Sandro Santilli <address@hidden>
* testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp:
Index: backend/sound_handler_sdl.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler_sdl.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- backend/sound_handler_sdl.cpp 16 Oct 2006 14:33:38 -0000 1.24
+++ backend/sound_handler_sdl.cpp 16 Oct 2006 20:41:35 -0000 1.25
@@ -353,10 +353,27 @@
// Invalid handle.
} else {
- for (uint32_t i = 0; i <
m_sound_data[sound_handle]->m_active_sounds.size(); i++) {
-
m_sound_data[sound_handle]->m_active_sounds[i]->position =
m_sound_data[sound_handle]->m_active_sounds[i]->data_size;
-
m_sound_data[sound_handle]->m_active_sounds[i]->raw_position =
m_sound_data[sound_handle]->m_active_sounds[i]->raw_data_size;
-
m_sound_data[sound_handle]->m_active_sounds[i]->loop_count = 0;
+ for (int32_t i =
(int32_t)m_sound_data[sound_handle]->m_active_sounds.size()-1; i >-1; i--) {
+
+ // Stop sound, remove it from the active list (mp3)
+ if (m_sound_data[sound_handle]->format == 2) {
+#ifdef USE_FFMPEG
+
avcodec_close(m_sound_data[sound_handle]->m_active_sounds[i]->cc);
+
av_parser_close(m_sound_data[sound_handle]->m_active_sounds[i]->parser);
+#elif defined(USE_MAD)
+
mad_synth_finish(&m_sound_data[sound_handle]->m_active_sounds[i]->synth);
+
mad_frame_finish(&m_sound_data[sound_handle]->m_active_sounds[i]->frame);
+
mad_stream_finish(&m_sound_data[sound_handle]->m_active_sounds[i]->stream);
+#endif
+ delete[]
m_sound_data[sound_handle]->m_active_sounds[i]->raw_data;
+
m_sound_data[sound_handle]->m_active_sounds.erase(m_sound_data[sound_handle]->m_active_sounds.begin()
+ i);
+ soundsPlaying--;
+
+ // Stop sound, remove it from the active list
(adpcm/native16)
+ } else {
+
m_sound_data[i]->m_active_sounds.erase(m_sound_data[sound_handle]->m_active_sounds.begin()
+ i);
+ soundsPlaying--;
+ }
}
}
pthread_mutex_unlock(&mutex);
@@ -382,8 +399,8 @@
// for what sounds is associated with what SWF.
void SDL_sound_handler::stop_all_sounds()
{
- int num_sounds = m_sound_data.size();
- for (size_t i = num_sounds; i > 0; i--) //Optimized
+ int32_t num_sounds = (int32_t) m_sound_data.size()-1;
+ for (int32_t i = num_sounds; i > -1; i--) //Optimized
stop_sound(i);
}
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- server/sprite_instance.cpp 16 Oct 2006 12:12:07 -0000 1.65
+++ server/sprite_instance.cpp 16 Oct 2006 20:41:35 -0000 1.66
@@ -113,6 +113,10 @@
}
assert(sprite);
sprite->set_play_state(movie_interface::STOP);
+
+ // Stop all sounds as well
+ sound_handler* sh = get_sound_handler();
+ if (sh != NULL) sh->stop_all_sounds();
}
//removeMovieClip() : Void
@@ -1682,6 +1686,12 @@
return;
}
+ // Unless the target frame is the next one, stop playback of sounds
+ if (target_frame_number != m_current_frame+1) {
+ sound_handler* sh = get_sound_handler();
+ if (sh != NULL) sh->stop_all_sounds();
+ }
+
size_t loaded_frames = get_loaded_frames();
if ( target_frame_number > loaded_frames )
{
- [Gnash-commit] gnash ChangeLog backend/sound_handler_sdl.cpp s...,
Tomas Groth <=