[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