[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp serv...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp serv... |
Date: |
Wed, 19 Mar 2008 20:50:56 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/03/19 20:50:56
Modified files:
. : ChangeLog
server : sprite_instance.cpp sprite_instance.h
server/parser : sound_definition.cpp
server/vm : ASHandlers.cpp
Log message:
always stop any streaming sound when the sprite is stopped or unloaded.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5980&r2=1.5981
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.487&r2=1.488
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.171&r2=1.172
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sound_definition.cpp?cvsroot=gnash&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.219&r2=1.220
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5980
retrieving revision 1.5981
diff -u -b -r1.5980 -r1.5981
--- ChangeLog 19 Mar 2008 18:27:48 -0000 1.5980
+++ ChangeLog 19 Mar 2008 20:50:55 -0000 1.5981
@@ -1,3 +1,11 @@
+2008-03-19 Sandro Santilli <address@hidden>
+
+ * server/sprite_instance.{cpp,h}: always stop any streaming
+ sound when the sprite is stopped or unloaded.
+ * server/parser/sound_definition.cpp, server/vm/ASHandlers.cpp:
+ update calls to cleaned up streaming sound interface of
+ sprite_instance.
+
2008-03-19 Benjamin Wolsey <address@hidden>
* testsuite/swfdec/swfdec_gnash_tester: use more complicated
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.487
retrieving revision 1.488
diff -u -b -r1.487 -r1.488
--- server/sprite_instance.cpp 18 Mar 2008 11:27:51 -0000 1.487
+++ server/sprite_instance.cpp 19 Mar 2008 20:50:55 -0000 1.488
@@ -180,16 +180,6 @@
sprite->set_play_state(sprite_instance::STOP);
- // Stop sound stream as well, if such exist
- int stream_id = sprite->get_sound_stream_id();
- if (sprite->get_sound_stream_id() != -1) {
- media::sound_handler* sh = get_sound_handler();
- if (sh != NULL) sh->stop_sound(stream_id);
- sprite->set_sound_stream_id(-1);
- }
-
-/* media::sound_handler* sh = get_sound_handler();
- if (sh != NULL) sh->stop_all_sounds();*/
return as_value();
}
@@ -2235,6 +2225,8 @@
sprite_instance::~sprite_instance()
{
+ stopStreamSound();
+
// We might have been deleted by Quit...
//assert(isDestroyed());
@@ -2419,10 +2411,12 @@
return;
}
+#if 0 // why would we want to do this ?
// Set the current sound_stream_id to -1, meaning that no stream are
// active. If there are an active stream it will be updated while
// executing the ControlTags.
set_sound_stream_id(-1);
+#endif
// Execute the ControlTag actions
// We set _callingFrameActions to true so that add_action_buffer
@@ -3037,12 +3031,9 @@
}
// Unless the target frame is the next one, stop playback of soundstream
- int stream_id = get_sound_stream_id();
- if (target_frame_number != m_current_frame+1 && stream_id != -1)
+ if (target_frame_number != m_current_frame+1 )
{
- media::sound_handler* sh = get_sound_handler();
- if (sh != NULL) sh->stop_sound(stream_id);
- set_sound_stream_id(-1);
+ stopStreamSound();
}
size_t loaded_frames = get_loaded_frames();
@@ -4152,6 +4143,9 @@
log_debug(_("Unloading sprite '%s'"), getTargetPath().c_str());
#endif
+ // stop any pending streaming sounds
+ stopStreamSound();
+
bool childHaveUnloadHandler = m_display_list.unload();
// We won't be displayed again, so worth releasing
@@ -4494,6 +4488,8 @@
void
sprite_instance::destroy()
{
+ stopStreamSound();
+
m_display_list.destroy();
/// We don't need these anymore
@@ -4551,4 +4547,37 @@
}
+void
+sprite_instance::setStreamSoundId(int id)
+{
+ if ( id != m_sound_stream_id )
+ {
+ log_debug("Stream sound id from %d to %d, stopping old",
m_sound_stream_id, id);
+ stopStreamSound();
+ }
+ m_sound_stream_id = id;
+}
+
+void
+sprite_instance::stopStreamSound()
+{
+ if ( m_sound_stream_id == -1 ) return; // nothing to do
+
+ media::sound_handler* handler = get_sound_handler(); // TODO: chache ?
+ if (handler)
+ {
+ handler->stop_sound(m_sound_stream_id);
+ }
+
+ m_sound_stream_id = -1;
+}
+
+void
+sprite_instance::set_play_state(play_state s)
+{
+ if ( s == m_play_state ) return; // nothing to do
+ if ( s == sprite_instance::STOP ) stopStreamSound();
+ m_play_state = s;
+}
+
} // namespace gnash
Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.171
retrieving revision 1.172
diff -u -b -r1.171 -r1.172
--- server/sprite_instance.h 20 Feb 2008 14:46:28 -0000 1.171
+++ server/sprite_instance.h 19 Mar 2008 20:50:56 -0000 1.172
@@ -179,11 +179,11 @@
}
/// Stop or play the sprite.
- void set_play_state(play_state s)
- {
- //if (m_play_state != s) m_time_remainder = 0;
- m_play_state = s;
- }
+ //
+ /// If stopped, any stream sound associated with this sprite
+ /// will also be stopped.
+ ///
+ void set_play_state(play_state s);
play_state get_play_state() const { return m_play_state; }
@@ -743,11 +743,11 @@
#endif
}
- /// Set the current m_sound_stream_id
- virtual void set_sound_stream_id(int id){ m_sound_stream_id = id; }
-
- /// Get the current m_sound_stream_id
- virtual int get_sound_stream_id() { return m_sound_stream_id;}
+ /// Set the currently playing m_sound_stream_id
+ //
+ // TODO: rename to setStreamingSoundId
+ //
+ void setStreamSoundId(int id);
/// Remove this sprite from the stage.
//
@@ -877,6 +877,8 @@
private:
+ void stopStreamSound();
+
/// Register this sprite as a listener of core broadcasters
//
/// This is currently only used for key events broadcaster
Index: server/parser/sound_definition.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sound_definition.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- server/parser/sound_definition.cpp 24 Nov 2007 17:21:45 -0000 1.10
+++ server/parser/sound_definition.cpp 19 Mar 2008 20:50:56 -0000 1.11
@@ -48,7 +48,7 @@
if (handler)
{
// This makes it possible to stop only the stream when
framejumping.
- m->set_sound_stream_id(m_handler_id);
+ m->setStreamSoundId(m_handler_id);
handler->play_sound(m_handler_id, 0, 0, m_start, NULL);
}
}
Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.219
retrieving revision 1.220
diff -u -b -r1.219 -r1.220
--- server/vm/ASHandlers.cpp 18 Mar 2008 14:01:00 -0000 1.219
+++ server/vm/ASHandlers.cpp 19 Mar 2008 20:50:56 -0000 1.220
@@ -534,16 +534,8 @@
assert( code[thread.pc] == SWF::ACTION_STOP );
#endif
- media::sound_handler* s = get_sound_handler();
-
sprite_instance* tgt = env.get_target()->to_movie();
assert(tgt);
- int stream_id = tgt->get_sound_stream_id();
-
- if (s != NULL && stream_id != -1)
- {
- s->stop_sound(stream_id);
- }
tgt->set_play_state(sprite_instance::STOP);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp serv...,
Sandro Santilli <=