[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] tools/dtdriver/dtdrplin/platform/win thrdcbmgr.cpp, 1.6.26.3, 1.6.26.4
From:       gwang () helixcommunity ! org
Date:       2013-10-23 3:12:35
[Download RAW message or body]

Update of /cvsroot/datatype/tools/dtdriver/dtdrplin/platform/win
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv9266/platform/win

Modified Files:
      Tag: PRODUCER_14_0_RN
	thrdcbmgr.cpp 
Log Message:
Synopsis
========
This CR fixing bug(HLXPROD-23)Problem Encoding Real Files with Helix 
Mobile Producer 14

Branch : PRODUCER_14_0_RN

reviewed by: Yuxin

My Fix:
  This bug is because of "CDataTypeConverter::ThreadFunc()" hanging for
waiting a never coming signal. The function "CThreadCBMgr::OnTermination"
divided event lock and unlock to two code blocks each with a control flag
which is modified by other thread.
  when this function was called very close twice. some times the unlock
logic will not be runed as the flag was modified just in time. so we just
merge them under a single logic judgement.
 
Files affected:
=========
/datatype/tools/dtdriver/dtdrplin/platform/win/thrdcbmgr.cpp

Testing Performed:
================

Unit Tests: 
   1  Using the command line 
      "-i D:\bugs\JIRA\HLXPROD-23\Test1.rm -o D:\stream\ouput1.rm -as \
ra:64@44.1#2~rv10:256@15#320x188 -ot rm -dt"   20 times

Leak Tests: None
Performance Tests: N/A

Platforms Tested: win32-i386-vc9

Builds Verified: win32-i386-vc9

QA Hints
=================
 None



Index: thrdcbmgr.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/dtdrplin/platform/win/thrdcbmgr.cpp,v
retrieving revision 1.6.26.3
retrieving revision 1.6.26.4
diff -u -d -r1.6.26.3 -r1.6.26.4
--- thrdcbmgr.cpp	11 Jul 2011 01:41:08 -0000	1.6.26.3
+++ thrdcbmgr.cpp	23 Oct 2013 03:12:31 -0000	1.6.26.4
@@ -257,7 +257,8 @@
     // we have to add ref ourself here because our caller could close us.
     // and that is the only way we can tell if we need to signal our event.
     AddRef();
-    
    IHXValues* pHeader = (IHXValues*)lParam;
+    
+    IHXValues* pHeader = (IHXValues*)lParam;
     Cvtr_OnFileHeader((HX_RESULT) wParam, pHeader);
     HX_RELEASE(pHeader);
 
@@ -276,7 +277,8 @@
     // we have to add ref ourself here because our caller could close us.
     // and that is the only way we can tell if we need to signal our event.
     AddRef();
-
    IHXValues* pHeader = (IHXValues*)lParam;
+
+    IHXValues* pHeader = (IHXValues*)lParam;
     Cvtr_OnStreamHeader((HX_RESULT) wParam, pHeader);
     HX_RELEASE(pHeader);
 
@@ -491,11 +493,11 @@
     // by the driver to avoid posting a message when the driver is
     // already stopping/closing.
     if (!m_bShutDown && !IsTerminationSent())
-	m_pPrevMessageFinished->Wait(ALLFS);
-    if (!m_bShutDown && !IsTerminationSent())
     {
-	::PostMessage(m_hWnd, HXMSG_ON_TERMINATION, (WPARAM)status, 0);
-	m_pMessageRecieved->Wait(ALLFS);
+        m_pPrevMessageFinished->Wait(ALLFS);
+
+        ::PostMessage(m_hWnd, HXMSG_ON_TERMINATION, (WPARAM)status, 0);
+        m_pMessageRecieved->Wait(ALLFS);
     }
 
     return HXR_OK;


_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic