gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r9668: Plug leak.


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r9668: Plug leak.
Date: Wed, 03 Sep 2008 19:28:12 +0200
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9668
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Wed 2008-09-03 19:28:12 +0200
message:
  Plug leak.
modified:
  libcore/asobj/NetStreamFfmpeg.cpp
  libcore/asobj/NetStreamFfmpeg.h
    ------------------------------------------------------------
    revno: 9667.1.1
    committer: Benjamin Wolsey <address@hidden>
    branch nick: work
    timestamp: Wed 2008-09-03 18:50:45 +0200
    message:
      Delete audio queue data in NetStreamFfmpeg dtor.
    modified:
      libcore/asobj/NetStreamFfmpeg.cpp
      libcore/asobj/NetStreamFfmpeg.h
=== modified file 'libcore/asobj/NetStreamFfmpeg.cpp'
--- a/libcore/asobj/NetStreamFfmpeg.cpp 2008-09-02 22:57:53 +0000
+++ b/libcore/asobj/NetStreamFfmpeg.cpp 2008-09-03 16:50:45 +0000
@@ -56,6 +56,12 @@
 
 namespace gnash {
 
+static void
+cleanQueue(NetStreamFfmpeg::AudioQueue::value_type data)
+{
+    delete data;
+}
+
 // AS-volume adjustment
 void adjust_volume(boost::int16_t* data, int size, int volume)
 {
@@ -112,6 +118,12 @@
 {
        GNASH_REPORT_FUNCTION;
 
+    // Delete any samples in the audio queue.
+       {
+               boost::mutex::scoped_lock lock(_audioQueueMutex);
+               std::for_each(_audioQueue.begin(), _audioQueue.end(), 
&cleanQueue);
+    }
+
        // When closing gnash before playback is finished, the soundhandler 
        // seems to be removed before netstream is destroyed.
        if (_soundHandler)
@@ -546,11 +558,7 @@
 
        { // cleanup audio queue, so won't be consumed while seeking
                boost::mutex::scoped_lock lock(_audioQueueMutex);
-               for (AudioQueue::iterator i=_audioQueue.begin(), 
e=_audioQueue.end();
-                               i!=e; ++i)
-               {
-                       delete (*i);
-               }
+               std::for_each(_audioQueue.begin(), _audioQueue.end(), 
&cleanQueue);
                _audioQueue.clear();
        }
        

=== modified file 'libcore/asobj/NetStreamFfmpeg.h'
--- a/libcore/asobj/NetStreamFfmpeg.h   2008-08-18 23:53:04 +0000
+++ b/libcore/asobj/NetStreamFfmpeg.h   2008-09-03 16:50:45 +0000
@@ -66,6 +66,9 @@
 
 class NetStreamFfmpeg: public NetStream {
 public:
+
+       typedef std::deque<media::raw_mediadata_t*> AudioQueue;
+
        NetStreamFfmpeg();
        ~NetStreamFfmpeg();
 
@@ -249,8 +252,6 @@
        ///
        std::auto_ptr<IOChannel> _inputStream;
 
-       typedef std::deque<media::raw_mediadata_t*> AudioQueue;
-
        /// This is where audio frames are pushed by ::advance
        /// and consumed by sound_handler callback (audio_streamer)
        AudioQueue _audioQueue;


reply via email to

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