--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccvideosourcesink/src/mccredrawhandler.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <w32std.h>
+#include "mccredrawhandler.h"
+#include "mccvideosourcesinklogs.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::NewL
+// -----------------------------------------------------------------------------
+//
+CMccRedrawHandler* CMccRedrawHandler::NewL(
+ RWsSession& aWsSession,
+ RWindow& aWindow,
+ CWindowGc& aGc )
+ {
+ CMccRedrawHandler* self =
+ new ( ELeave ) CMccRedrawHandler( aWsSession, aWindow, aGc );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::~CMccRedrawHandler
+// -----------------------------------------------------------------------------
+//
+CMccRedrawHandler::~CMccRedrawHandler()
+ {
+ Cancel();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::BlackDrawingL
+// -----------------------------------------------------------------------------
+//
+void CMccRedrawHandler::BlackDrawingL( TBool aIsEnabled )
+ {
+ __V_SOURCESINK_CONTROLL_INT1( "CMccRedrawHandler::BlackDrawingL, enabled:",
+ aIsEnabled )
+
+ iDrawBlack = aIsEnabled;
+
+ if ( DoRedrawing() )
+ {
+ StartRedrawing();
+ }
+ else
+ {
+ Cancel();
+ }
+
+ __V_SOURCESINK_CONTROLL( "CMccRedrawHandler::BlackDrawingL, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::RunL
+// -----------------------------------------------------------------------------
+//
+void CMccRedrawHandler::RunL()
+ {
+ TInt status( iStatus.Int() );
+ __V_SOURCESINK_CONTROLL_INT1( "CMccRedrawHandler::RunL, status:", status )
+
+ if ( status == KErrNone )
+ {
+ TWsRedrawEvent event;
+ iWsSession.GetRedraw( event );
+ Draw( event.Rect() );
+
+ StartRedrawing();
+ }
+
+ __V_SOURCESINK_CONTROLL( "CMccRedrawHandler::RunL, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CMccRedrawHandler::DoCancel()
+ {
+ iWsSession.RedrawReadyCancel();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::CMccRedrawHandler
+// -----------------------------------------------------------------------------
+//
+CMccRedrawHandler::CMccRedrawHandler(
+ RWsSession& aWsSession,
+ RWindow& aWindow,
+ CWindowGc& aGc ) :
+ CActive( CActive::EPriorityStandard ),
+ iWsSession( aWsSession ),
+ iWindow( aWindow ),
+ iGc( aGc ),
+ iDrawBlack( EFalse )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccRedrawHandler::ConstructL()
+ {
+ __V_SOURCESINK_CONTROLL( "CMccRedrawHandler::ConstructL, entry" )
+
+ StartRedrawing();
+
+ __V_SOURCESINK_CONTROLL( "CMccRedrawHandler::ConstructL, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::Draw
+// -----------------------------------------------------------------------------
+//
+void CMccRedrawHandler::Draw( const TRect& aRect )
+ {
+ __V_SOURCESINK_CONTROLL_INT2( "CMccRedrawHandler::Draw rect x1:",
+ aRect.iTl.iX, " y1 ", aRect.iTl.iY )
+ __V_SOURCESINK_CONTROLL_INT2( "CMccRedrawHandler::Draw rect x2:",
+ aRect.iBr.iX, " y2 ", aRect.iBr.iY )
+
+ iGc.Activate( iWindow );
+ iWindow.Invalidate( aRect );
+ iWindow.BeginRedraw( aRect );
+
+ if ( iDrawBlack )
+ {
+ iGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+ iGc.SetBrushColor( KRgbBlack );
+ iGc.Clear( aRect );
+ iDrawBlack = EFalse;
+ }
+ else if ( iWindow.DisplayMode() >= EColor16MA )
+ {
+ // Need to set alpha mode, otherwise video cannot be seen
+ iGc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+ iGc.SetBrushColor( TRgb( 0, 0 ) );
+ iGc.Clear( aRect );
+ }
+ else
+ {
+ // NOP
+ }
+
+ iWindow.EndRedraw();
+ iGc.Deactivate();
+ iWsSession.Flush();
+
+ __V_SOURCESINK_CONTROLL( "CMccRedrawHandler::Draw, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::DoRedrawing
+// -----------------------------------------------------------------------------
+//
+TBool CMccRedrawHandler::DoRedrawing() const
+ {
+ return ( iDrawBlack || iWindow.DisplayMode() >= EColor16MA );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccRedrawHandler::StartRedrawing
+// -----------------------------------------------------------------------------
+//
+void CMccRedrawHandler::StartRedrawing()
+ {
+ if ( DoRedrawing() && !IsActive() )
+ {
+ __V_SOURCESINK_CONTROLL( "CMccRedrawHandler::StartRedrawing, activate" )
+ iWsSession.RedrawReady( &iStatus );
+ SetActive();
+ }
+ }
+
+// End of file
+