gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cpp [gnash_0


From: Bastiaan Jacques
Subject: [Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cpp [gnash_0_8_3_branch]
Date: Sun, 11 May 2008 18:39:03 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         gnash_0_8_3_branch
Changes by:     Bastiaan Jacques <bjacques>     08/05/11 18:39:03

Modified files:
        .              : ChangeLog 
        server/asobj   : NetStreamFfmpeg.cpp 

Log message:
        Mutex-protect m_imageframe, because it's used across threads.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&only_with_tag=gnash_0_8_3_branch&r1=1.6573.2.3&r2=1.6573.2.4
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.cpp?cvsroot=gnash&only_with_tag=gnash_0_8_3_branch&r1=1.116&r2=1.116.2.1

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6573.2.3
retrieving revision 1.6573.2.4
diff -u -b -r1.6573.2.3 -r1.6573.2.4
--- ChangeLog   10 May 2008 11:05:42 -0000      1.6573.2.3
+++ ChangeLog   11 May 2008 18:39:02 -0000      1.6573.2.4
@@ -1,3 +1,8 @@
+2008-05-10 Bastiaan Jacques <address@hidden>
+
+       * server/asobj/NetStreamFfmpeg.cpp: Mutex-protect m_imageframe,
+       which is used across threads.
+
 2008-05-10 Sandro Santilli <address@hidden>
 
        * libbase/utility.h: add smallestMultipleContaining

Index: server/asobj/NetStreamFfmpeg.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.cpp,v
retrieving revision 1.116
retrieving revision 1.116.2.1
diff -u -b -r1.116 -r1.116.2.1
--- server/asobj/NetStreamFfmpeg.cpp    9 May 2008 10:08:08 -0000       1.116
+++ server/asobj/NetStreamFfmpeg.cpp    11 May 2008 18:39:03 -0000      
1.116.2.1
@@ -163,8 +163,11 @@
                m_FormatCtx = NULL;
        }
 
+       {
+               boost::mutex::scoped_lock lock(image_mutex);
        delete m_imageframe;
        m_imageframe = NULL;
+       }
        delete m_unqueued_data;
        m_unqueued_data = NULL;
 
@@ -566,6 +569,9 @@
        // Allocate a frame to store the decoded frame in
        m_Frame = avcodec_alloc_frame();
        
+       {
+               boost::mutex::scoped_lock lock(image_mutex);
+
        // Determine required buffer size and allocate buffer
        if (m_videoFrameFormat == render::YUV)
        {
@@ -576,6 +582,8 @@
                m_imageframe = new image::rgb(m_VCodecCtx->width,       
m_VCodecCtx->height);
        }
 
+       }
+
        media::sound_handler* s = get_sound_handler();
        if (m_audio_index >= 0 && s != NULL)
        {
@@ -938,6 +946,8 @@
        avcodec_decode_video(m_VCodecCtx, m_Frame, &got, packet->data, 
packet->size);
        if (!got) return false;
 
+       boost::mutex::scoped_lock lock(image_mutex);
+
        if (m_imageframe == NULL)
        {
                if (m_videoFrameFormat == render::YUV)




reply via email to

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