gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash backend/sound_handler.cpp backend/sound_h...


From: Sandro Santilli
Subject: [Gnash-commit] gnash backend/sound_handler.cpp backend/sound_h...
Date: Tue, 27 Feb 2007 09:54:49 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/02/27 09:54:49

Modified files:
        backend        : sound_handler.cpp sound_handler.h 
        gui            : gtk.cpp gui.cpp 
        server         : gnash.h impl.cpp 
        server/parser  : sound_definition.cpp 
        server/swf     : tag_loaders.cpp 

Log message:
        Never access globals::s_sound_handler directly. Actually drop that 
symbol.
        Move get_sound_handler/set_sound_handler from backend to server to avoid
        circular dependency of those two libs.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler.cpp?cvsroot=gnash&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler.h?cvsroot=gnash&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk.cpp?cvsroot=gnash&r1=1.67&r2=1.68
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gui.cpp?cvsroot=gnash&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/gnash/server/gnash.h?cvsroot=gnash&r1=1.86&r2=1.87
http://cvs.savannah.gnu.org/viewcvs/gnash/server/impl.cpp?cvsroot=gnash&r1=1.99&r2=1.100
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sound_definition.cpp?cvsroot=gnash&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/tag_loaders.cpp?cvsroot=gnash&r1=1.78&r2=1.79

Patches:
Index: backend/sound_handler.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- backend/sound_handler.cpp   27 Feb 2007 09:10:20 -0000      1.1
+++ backend/sound_handler.cpp   27 Feb 2007 09:54:48 -0000      1.2
@@ -19,27 +19,6 @@
 
 namespace gnash {
 
-namespace globals {
-
-// Callback interface to host, for handling sounds.  If it's NULL,
-// sound is ignored.
-sound_handler* s_sound_handler = 0;
-
-} // namespace gnash::global
-
-
-void   set_sound_handler(sound_handler* s)
-// Called by host, to set a handler for all sounds.
-// Can pass in 0 to disable sound.
-{
-       globals::s_sound_handler = s;
-}
-
-
-sound_handler* get_sound_handler()
-{
-       return globals::s_sound_handler;
-}
 
 
 } // namespace gnash

Index: backend/sound_handler.h
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- backend/sound_handler.h     27 Feb 2007 09:10:20 -0000      1.1
+++ backend/sound_handler.h     27 Feb 2007 09:54:48 -0000      1.2
@@ -17,7 +17,7 @@
 // 
 //
 
-/* $Id: sound_handler.h,v 1.1 2007/02/27 09:10:20 strk Exp $ */
+/* $Id: sound_handler.h,v 1.2 2007/02/27 09:54:48 strk Exp $ */
 
 /// \page sound_handler_intro Sound handler introduction
 ///
@@ -151,17 +151,6 @@
 
 };
 
-/// Pass in a sound handler, so you can handle audio on behalf of
-/// gnash.  This is optional; if you don't set a handler, or set
-/// NULL, then sounds won't be played.
-///
-/// If you want sound support, you should set this at startup,
-/// before loading or playing any movies!
-DSOEXPORT void set_sound_handler(sound_handler* s);
-
-/// You probably don't need this. (@@ make it private?)
-DSOEXPORT sound_handler* get_sound_handler();
-
 // TODO: move to appropriate specific sound handlers
 DSOEXPORT sound_handler*       create_sound_handler_sdl();
 DSOEXPORT sound_handler*       create_sound_handler_gst();

Index: gui/gtk.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gtk.cpp,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -b -r1.67 -r1.68
--- gui/gtk.cpp 27 Feb 2007 09:10:20 -0000      1.67
+++ gui/gtk.cpp 27 Feb 2007 09:54:49 -0000      1.68
@@ -17,7 +17,7 @@
 // 
 //
 
-/* $Id: gtk.cpp,v 1.67 2007/02/27 09:10:20 strk Exp $ */
+/* $Id: gtk.cpp,v 1.68 2007/02/27 09:54:49 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -30,6 +30,7 @@
 #include "rc.h"
 #include "gtksup.h"
 #include "sound_handler.h"
+#include "gnash.h" for get_sound_handler
 #include "render_handler.h"
 
 #include <iostream>

Index: gui/gui.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gui.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- gui/gui.cpp 27 Feb 2007 09:10:20 -0000      1.62
+++ gui/gui.cpp 27 Feb 2007 09:54:49 -0000      1.63
@@ -26,6 +26,7 @@
 #include "render.h"  // debug
 #include "render_handler.h"
 #include "sound_handler.h"
+#include "gnash.h" for get_sound_handler
 #include "movie_root.h"
 #include "VM.h"
 

Index: server/gnash.h
===================================================================
RCS file: /sources/gnash/gnash/server/gnash.h,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -b -r1.86 -r1.87
--- server/gnash.h      27 Feb 2007 09:10:20 -0000      1.86
+++ server/gnash.h      27 Feb 2007 09:54:49 -0000      1.87
@@ -17,7 +17,7 @@
 // 
 //
 
-/* $Id: gnash.h,v 1.86 2007/02/27 09:10:20 strk Exp $ */
+/* $Id: gnash.h,v 1.87 2007/02/27 09:54:49 strk Exp $ */
 
 /// \mainpage
 ///
@@ -77,6 +77,22 @@
 class URL;
 class rect;
 
+// Sound callbacks stuff
+
+/// \brief
+/// Pass in a sound handler, so you can handle audio on behalf of
+/// gnash.  This is optional; if you don't set a handler, or set
+/// NULL, then sounds won't be played.
+///
+/// If you want sound support, you should set this at startup,
+/// before loading or playing any movies!
+///
+DSOEXPORT void set_sound_handler(sound_handler* s);
+
+/// Get currently registered sound handler
+DSOEXPORT sound_handler* get_sound_handler();
+
+
 ///
 /// Log & error reporting control.
 ///

Index: server/impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/impl.cpp,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -b -r1.99 -r1.100
--- server/impl.cpp     27 Feb 2007 09:10:20 -0000      1.99
+++ server/impl.cpp     27 Feb 2007 09:54:49 -0000      1.100
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: impl.cpp,v 1.99 2007/02/27 09:10:20 strk Exp $ */
+/* $Id: impl.cpp,v 1.100 2007/02/27 09:54:49 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -79,6 +79,11 @@
 
 } // namespace gnash::global
 
+// global Sound handler stuff. Should this be moved to the VM class ?
+static sound_handler* _sound_handler = 0;
+void   set_sound_handler(sound_handler* s) { _sound_handler = s; }
+sound_handler* get_sound_handler() { return _sound_handler; }
+
 void
 set_base_url(const URL& url)
 {

Index: server/parser/sound_definition.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sound_definition.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- server/parser/sound_definition.cpp  27 Feb 2007 09:10:20 -0000      1.1
+++ server/parser/sound_definition.cpp  27 Feb 2007 09:54:49 -0000      1.2
@@ -16,13 +16,14 @@
 namespace gnash {
 
 
-       sound_sample::~sound_sample()
-       {
-               if (globals::s_sound_handler)
+sound_sample::~sound_sample()
+{
+       sound_handler* handler = get_sound_handler();
+       if (handler)
                {
-                       
globals::s_sound_handler->delete_sound(m_sound_handler_id);
-               }
+               handler->delete_sound(m_sound_handler_id);
        }
+}
 
 
 
@@ -77,19 +78,20 @@
 void
 start_sound_tag::execute_state(sprite_instance* /* m */)
 {
-       using globals::s_sound_handler;
+       // Make static ?
+       sound_handler* handler = get_sound_handler();
 
        //GNASH_REPORT_FUNCTION;
 
-       if (s_sound_handler)
+       if (handler)
        {
                if (m_stop_playback)
                {
-                       s_sound_handler->stop_sound(m_handler_id);
+                       handler->stop_sound(m_handler_id);
                }
                else
                {
-                       s_sound_handler->play_sound(m_handler_id, m_loop_count, 
0,0, (m_envelopes.size() == 0 ? NULL : &m_envelopes));
+                       handler->play_sound(m_handler_id, m_loop_count, 0,0, 
(m_envelopes.size() == 0 ? NULL : &m_envelopes));
                }
        }
 }
@@ -112,12 +114,13 @@
 void
 start_stream_sound_tag::execute_state(sprite_instance* m)
 {
-       using globals::s_sound_handler;
-       if (s_sound_handler)
+       // Make static ?
+       sound_handler* handler = get_sound_handler();
+       if (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);
+               handler->play_sound(m_handler_id, 0, 0, m_start, NULL);
        }
 }
 

Index: server/swf/tag_loaders.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/tag_loaders.cpp,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -b -r1.78 -r1.79
--- server/swf/tag_loaders.cpp  27 Feb 2007 09:10:20 -0000      1.78
+++ server/swf/tag_loaders.cpp  27 Feb 2007 09:54:49 -0000      1.79
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: tag_loaders.cpp,v 1.78 2007/02/27 09:10:20 strk Exp $ */
+/* $Id: tag_loaders.cpp,v 1.79 2007/02/27 09:54:49 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -60,9 +60,6 @@
        // @@ TODO get rid of this; make it the normal mode.
        extern bool s_no_recurse_while_loading;
 
-       namespace globals {
-               extern sound_handler* s_sound_handler;
-       }
 }
 
 namespace gnash {
@@ -1592,7 +1589,7 @@
 {
        assert(tag == SWF::DEFINESOUND); // 14
 
-       using globals::s_sound_handler;
+       sound_handler* handler = get_sound_handler();
 
        uint16_t        character_id = in->read_u16();
 
@@ -1614,7 +1611,7 @@
 
        // If we have a sound_handler, ask it to init this sound.
        
-       if (s_sound_handler)
+       if (handler)
        {
                int     data_bytes = 0;
                unsigned char*  data = NULL;
@@ -1663,7 +1660,7 @@
                        }
                }
                
-               int     handler_id = s_sound_handler->create_sound(
+               int     handler_id = handler->create_sound(
                        data,
                        data_bytes,
                        sample_count,
@@ -1694,7 +1691,7 @@
 void
 start_sound_loader(stream* in, tag_type tag, movie_definition* m)
 {
-       using globals::s_sound_handler;
+       sound_handler* handler = get_sound_handler();
 
        assert(tag == SWF::STARTSOUND); // 15
 
@@ -1714,7 +1711,7 @@
        }
        else
        {
-               if (s_sound_handler)
+               if (handler)
                {
                        IF_VERBOSE_MALFORMED_SWF(
                        log_swferror("start_sound_loader: sound_id %d is not 
defined", sound_id);
@@ -1728,13 +1725,13 @@
 void
 sound_stream_head_loader(stream* in, tag_type tag, movie_definition* m)
 {
-       using globals::s_sound_handler;
+       sound_handler* handler = get_sound_handler();
 
        // 18 || 45
        assert(tag == SWF::SOUNDSTREAMHEAD || tag == SWF::SOUNDSTREAMHEAD2);
 
        // If we don't have a sound_handler registered stop here
-       if (!s_sound_handler) return;
+       if (!handler) return;
 
        // FIXME:
        // no character id for soundstreams... so we make one up... 
@@ -1778,7 +1775,7 @@
        // Since the ADPCM is converted to NATIVE16, the format is set to 
that...
        if (format == sound_handler::FORMAT_ADPCM) format = 
sound_handler::FORMAT_NATIVE16;
 
-       int     handler_id = s_sound_handler->create_sound(
+       int     handler_id = handler->create_sound(
                NULL,
                data_bytes,
                sample_count,
@@ -1794,7 +1791,7 @@
 void
 sound_stream_block_loader(stream* in, tag_type tag, movie_definition* m)
 {
-       using globals::s_sound_handler;
+       sound_handler* handler = get_sound_handler();
 
        assert(tag == SWF::SOUNDSTREAMBLOCK); // 19
 
@@ -1804,7 +1801,7 @@
 
 
        // If we don't have a sound_handler registered stop here
-       if (!s_sound_handler) return;
+       if (!handler) return;
 
        int handle_id = m->get_loading_sound_stream_id();
 
@@ -1822,7 +1819,7 @@
        bool stereo = true;
        int sample_count = -1;
        
-       s_sound_handler->get_info(handle_id, &format, &stereo);
+       handler->get_info(handle_id, &format, &stereo);
 
        if (format == sound_handler::FORMAT_ADPCM)
        {
@@ -1867,7 +1864,7 @@
 
        // Fill the data on the apropiate sound, and receives the starting point
        // for later "start playing from this frame" events.
-       long start = s_sound_handler->fill_stream_data(data, data_bytes, 
sample_count, handle_id);
+       long start = handler->fill_stream_data(data, data_bytes, sample_count, 
handle_id);
 
        delete [] data;
 




reply via email to

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