Index: OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp
===================================================================
--- OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp (revision 10809)
+++ OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp (revision 10925)
@@ -384,14 +384,19 @@
 
         SDLAudioSink(osg::AudioStream* audioStream):
-            _playing(false),
+            _started(false),
+            _paused(false),
             _audioStream(audioStream) {}
 
         ~SDLAudioSink();
 
-        virtual void startPlaying();
-        virtual bool playing() const { return _playing; }
-
-
-        bool                                _playing;
+        virtual void play();
+        virtual void pause();
+        virtual void stop();
+
+        virtual bool playing() const { return _started && !_paused; }
+
+
+        bool                                _started;
+        bool                                _paused;
         osg::observer_ptr<osg::AudioStream> _audioStream;
 };
@@ -671,17 +676,22 @@
 SDLAudioSink::~SDLAudioSink()
 {
-    if (_playing)
-    {
-
-        SDL_PauseAudio(1);
-        SDL_CloseAudio();
-
-        osg::notify(osg::NOTICE)<<"~SDLAudioSink() destructor, but still playing"<<std::endl;
-    }
-}
-
-void SDLAudioSink::startPlaying()
-{
-    _playing = true;
+    stop();
+}
+
+void SDLAudioSink::play()
+{
+    if (_started)
+    {
+        if (_paused)
+        {
+            SDL_PauseAudio(0);
+            _paused = false;
+        }
+        return;
+    }
+
+    _started = true;
+    _paused = false;
+
     osg::notify(osg::NOTICE)<<"SDLAudioSink()::startPlaying()"<<std::endl;
 
@@ -708,4 +718,23 @@
 }
 
+void SDLAudioSink::pause()
+{
+    if (_started)
+    {
+        SDL_PauseAudio(1);
+        _paused = true;
+    }
+}
+
+void SDLAudioSink::stop()
+{
+    if (_started)
+    {
+        if (!_paused) SDL_PauseAudio(1);
+        SDL_CloseAudio();
+
+        osg::notify(osg::NOTICE)<<"~SDLAudioSink() destructor, but still playing"<<std::endl;
+    }
+}
 
 #endif
