gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/movie.h server/sound.cpp...


From: Tomas Groth
Subject: [Gnash-commit] gnash ChangeLog server/movie.h server/sound.cpp...
Date: Sat, 18 Nov 2006 11:12:23 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Tomas Groth <tgc>       06/11/18 11:12:23

Modified files:
        .              : ChangeLog 
        server         : movie.h sound.cpp sprite_instance.cpp 
                         sprite_instance.h 
        server/swf     : ASHandlers.cpp 

Log message:
        * server/movie.h, server/sound.cpp, server/sprite_instance.{cpp,h}, 
          server/swf/ASHandlers.cpp: Instead of stopping all sounds when
          framejumping or on sprite-stop, now only stop soundstreams. The
          id of the current playing stream is stored in the sprite.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1659&r2=1.1660
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie.h?cvsroot=gnash&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sound.cpp?cvsroot=gnash&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.81&r2=1.82
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/ASHandlers.cpp?cvsroot=gnash&r1=1.96&r2=1.97

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1659
retrieving revision 1.1660
diff -u -b -r1.1659 -r1.1660
--- ChangeLog   17 Nov 2006 23:19:57 -0000      1.1659
+++ ChangeLog   18 Nov 2006 11:12:22 -0000      1.1660
@@ -1,3 +1,10 @@
+2006-11-18 Tomas Groth Christensen <address@hidden>
+
+       * server/movie.h, server/sound.cpp, server/sprite_instance.{cpp,h}, 
+         server/swf/ASHandlers.cpp: Instead of stopping all sounds when
+         framejumping or on sprite-stop, now only stop soundstreams. The
+         id of the current playing stream is stored in the sprite.
+
 2006-11-17 Sandro Santilli <address@hidden>
 
        * testsuite/actionscript.all/Makefile.am: fixed

Index: server/movie.h
===================================================================
RCS file: /sources/gnash/gnash/server/movie.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- server/movie.h      3 Nov 2006 14:03:37 -0000       1.25
+++ server/movie.h      18 Nov 2006 11:12:22 -0000      1.26
@@ -479,6 +479,13 @@
        {
        }
 
+       // Set the current m_sound_stream_id - override to provide this
+       virtual void set_sound_stream_id(int /*id*/){ }
+
+       // Get the current m_sound_stream_id - override to provide this
+       virtual int get_sound_stream_id() { return -1;}
+
+
 };
 
 

Index: server/sound.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sound.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- server/sound.cpp    16 Oct 2006 14:33:38 -0000      1.19
+++ server/sound.cpp    18 Nov 2006 11:12:22 -0000      1.20
@@ -129,11 +129,13 @@
 
 
 void
-start_stream_sound_tag::execute(movie* /* m */)
+start_stream_sound_tag::execute(movie* m)
 {
        using globals::s_sound_handler;
        if (s_sound_handler)
        {
+               // This makes it possible to stop only the stream when 
framejumping.
+               m->set_sound_stream_id(m_handler_id);
                s_sound_handler->play_sound(m_handler_id, 0, 0, m_start, NULL);
        }
 }

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -b -r1.81 -r1.82
--- server/sprite_instance.cpp  15 Nov 2006 12:37:32 -0000      1.81
+++ server/sprite_instance.cpp  18 Nov 2006 11:12:22 -0000      1.82
@@ -102,9 +102,16 @@
        assert(sprite);
        sprite->set_play_state(movie_interface::STOP);
 
-       // Stop all sounds as well
+       // Stop sound stream as well, if such exist
+       int stream_id = sprite->get_sound_stream_id();
+       if (sprite->get_sound_stream_id() != -1) {
        sound_handler* sh = get_sound_handler();
-       if (sh != NULL) sh->stop_all_sounds();
+               if (sh != NULL) sh->stop_sound(stream_id);
+               sprite->set_sound_stream_id(-1);
+       }
+
+/*     sound_handler* sh = get_sound_handler();
+       if (sh != NULL) sh->stop_all_sounds();*/
 }
 
 //removeMovieClip() : Void
@@ -1198,6 +1205,11 @@
        size_t original_size = m_action_list.size();
 #endif
 
+       // 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 execute_tags.
+       set_sound_stream_id(-1);
+
        // Execute the execute_tag actions
 
        const PlayList& playlist = m_def->get_playlist(frame_number);
@@ -1876,10 +1888,12 @@
                return;
        }
 
-       // Unless the target frame is the next one, stop playback of sounds
-       if (target_frame_number != m_current_frame+1) {
+       // 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) {
                sound_handler* sh = get_sound_handler();
-               if (sh != NULL) sh->stop_all_sounds();
+               if (sh != NULL) sh->stop_sound(stream_id);
+               set_sound_stream_id(-1);
        }
 
        size_t loaded_frames = get_loaded_frames();

Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- server/sprite_instance.h    15 Nov 2006 10:29:00 -0000      1.38
+++ server/sprite_instance.h    18 Nov 2006 11:12:22 -0000      1.39
@@ -17,7 +17,7 @@
 // 
 //
 
-/* $Id: sprite_instance.h,v 1.38 2006/11/15 10:29:00 strk Exp $ */
+/* $Id: sprite_instance.h,v 1.39 2006/11/18 11:12:22 tgc Exp $ */
 
 // Stateful live Sprite instance
 
@@ -509,6 +509,11 @@
                                             // not stored in a 
boost::intrusive_ptr
        }
 
+       /// 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;}
 
 private:
 
@@ -586,6 +591,8 @@
        ///
        edit_text_character* get_textfield_variable(const std::string& name);
        
+       /// soundid for current playing stream. If no stream set to -1
+       int m_sound_stream_id;
 
 protected:
 

Index: server/swf/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/ASHandlers.cpp,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -b -r1.96 -r1.97
--- server/swf/ASHandlers.cpp   13 Nov 2006 09:56:31 -0000      1.96
+++ server/swf/ASHandlers.cpp   18 Nov 2006 11:12:22 -0000      1.97
@@ -16,7 +16,7 @@
 
 //
 
-/* $Id: ASHandlers.cpp,v 1.96 2006/11/13 09:56:31 bjacques Exp $ */
+/* $Id: ASHandlers.cpp,v 1.97 2006/11/18 11:12:22 tgc Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -571,9 +571,10 @@
     const action_buffer& code = thread.code;
     
     sound_handler* s = get_sound_handler();
-    if (s)
+    int stream_id = env.get_target()->get_sound_stream_id();
+    if (s != NULL && stream_id != -1)
     {
-        s->stop_all_sounds();
+        s->stop_sound(stream_id);
     }
 
     assert( code[thread.pc] == SWF::ACTION_STOP );




reply via email to

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