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

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] tools/dtdriver/engine csrchdlr.cpp,1.5,1.6
From:       stanb () helixcommunity ! org
Date:       2011-10-24 16:20:23
[Download RAW message or body]

Update of /cvsroot/datatype/tools/dtdriver/engine
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv10034/dtdriver/engine

Modified Files:
	csrchdlr.cpp 
Log Message:
Modified by: stanb@real.com
Date: 10/21/2011
Project: WinAgent (UNIFI), RealPlayer 15

Bug Number: 404918

Synopsis: For each FLV file processing a new MiniContext/CHXMediaPlatform is created \
and never destroyed.

Overview: Another reference to MiniContext/CHXMediaPlatform stays open because of \
particular implementation of CSecureSourceHandler in \
datatype_rn\tools\dtdriver\engine. It actually proxies all AddRef, Release and \
QueryInterface calls to it’s m_pOwner->m_pTrueSourceSink. The problem is that \
CSourceTransferPort::OnTermination() causes m_pTrueSourceSink of the m_pOwner to get \
released (inside CSecureSourceHandler::Close()), so the following \
HX_RELEASE(pSourceSink) has no effect whatsoever. This fix gets actual “True” \
SourceSink via m_pSourceSink->QueryInterface(IID_IUnknown,..) which makes sure we do \
AddRef() / OnTermination() / Release() on the same object.



Files Modified:
datatype/tools/dtdriver/engine/csrchdlr.cpp 

Branch: 310atlas, HEAD



Index: csrchdlr.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/engine/csrchdlr.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- csrchdlr.cpp	10 Jul 2008 16:40:36 -0000	1.5
+++ csrchdlr.cpp	24 Oct 2011 16:20:21 -0000	1.6
@@ -268,11 +268,11 @@
 
     if (m_pSourceSink)
     {
-	IHXSourceInput* pSourceSink= m_pSourceSink;
-	pSourceSink->AddRef();
+	IUnknown* pUnkSourceSink = NULL;
+        m_pSourceSink->QueryInterface(IID_IUnknown, (void**)&pUnkSourceSink);
 	HX_RELEASE(m_pSourceSink);
-	retVal = pSourceSink->OnTermination(status);
-	HX_RELEASE(pSourceSink);
+	retVal = ((IHXSourceInput*)pUnkSourceSink)->OnTermination(status);
+	HX_RELEASE(pUnkSourceSink);
     }
 
     return retVal;


_______________________________________________
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