diff -r fb024d5e35fa -r 64c62431ac08 multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp --- a/multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp Mon Aug 23 17:50:26 2010 +0300 +++ b/multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp Mon Sep 06 17:32:13 2010 +0530 @@ -24,6 +24,7 @@ #include "mccanysourcesinklogs.h" #include "mccinternalevents.h" #include "mccinternaldef.h" +#include "mccdatareceiver.h" // ============================ MEMBER FUNCTIONS =============================== @@ -48,6 +49,7 @@ void CMccAnySource::ConstructSourceL( const TDesC8& /*aInitData*/ ) { __ANYSOURCESINK_CONTROLL( "CMccAnySource::ConstructSourceL" ) + iDataReceiver = CMccDataReceiver::NewL( *this ); } // ----------------------------------------------------------------------------- @@ -65,6 +67,11 @@ CMccAnySource::~CMccAnySource() { __ANYSOURCESINK_CONTROLL( "CMccAnySource::~CMccAnySource" ) + + iBufferToBeFilled = NULL; + iConsumer = NULL; + + delete iDataReceiver; } @@ -213,12 +220,13 @@ // ----------------------------------------------------------------------------- // void CMccAnySource::FillBufferL( - CMMFBuffer* /*aBuffer*/, - MDataSink* /*aConsumer*/, + CMMFBuffer* aBuffer, + MDataSink* aConsumer, TMediaId /*aMediaId*/ ) { __ANYSOURCESINK_CONTROLL( "CMccAnySource::FillBufferL" ) - User::Leave( KErrNotSupported ); + iBufferToBeFilled = aBuffer; + iConsumer = aConsumer; } // ----------------------------------------------------------------------------- @@ -259,5 +267,27 @@ } } +// ----------------------------------------------------------------------------- +// CMccAnySource::DataReceivedL +// ----------------------------------------------------------------------------- +// +void CMccAnySource::DataReceivedL( const TDesC8& aData ) + { + __ANYSOURCESINK_CONTROLL( "CMccAnySource::DataReceivedL, Entry" ) + + if ( iBufferToBeFilled && iConsumer ) + { + CMMFDataBuffer* buffer = static_cast(iBufferToBeFilled); + + if (buffer->Data().MaxLength() >= aData.Length()) + { + buffer->Data().Copy( aData ); + iConsumer->BufferFilledL( iBufferToBeFilled ); + iBufferToBeFilled = 0; + iConsumer = 0; + } + } + } + // End of file