sl@0: // Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include "mediaclientextdisplayhandler.h" sl@0: #include "mediaclientvideotrace.h" sl@0: sl@0: CMediaClientExtDisplayHandler* CMediaClientExtDisplayHandler::NewL(TInt aDisplayId) sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::NewL +++"); sl@0: CMediaClientExtDisplayHandler* self = new (ELeave) CMediaClientExtDisplayHandler(aDisplayId); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::NewL ---"); sl@0: return self; sl@0: } sl@0: sl@0: CMediaClientExtDisplayHandler::CMediaClientExtDisplayHandler(TInt aDisplayId) sl@0: : iDisplayId(aDisplayId) sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::CMediaClientExtDisplayHandler +++"); sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::CMediaClientExtDisplayHandler ---"); sl@0: } sl@0: sl@0: void CMediaClientExtDisplayHandler::ConstructL() sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL +++"); sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL RWsSession Connect"); sl@0: TInt err = iWs.Connect(); sl@0: if (err != KErrNone) sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL Windows Server unavailable"); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL CWsScreenDevice Create"); sl@0: iScreen = new (ELeave) CWsScreenDevice(iWs); sl@0: User::LeaveIfError(iScreen->Construct(iDisplayId)); sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL RWindowGroup Create"); sl@0: iRootWindow = RWindowGroup(iWs); sl@0: User::LeaveIfError(iRootWindow.Construct((TUint32)this, ETrue)); sl@0: sl@0: DEBUG_PRINTF2("CMediaClientExtDisplayHandler::ConstructL RWindowGroupId %d", iRootWindow.WindowGroupId()); sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL RWindow Create"); sl@0: iExternalDisplayWindow = RWindow(iWs); sl@0: User::LeaveIfError(iExternalDisplayWindow.Construct(iRootWindow,((TUint32)(this)) + 1)); sl@0: DEBUG_PRINTF2("CMediaClientExtDisplayHandler::ConstructL - iExternalDisplayWindow WsHandle 0x%X", iExternalDisplayWindow.WsHandle()); sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL Setup external window"); sl@0: iExternalDisplayWindow.SetExtent(TPoint(0,0), iScreen->SizeInPixels()); sl@0: iExternalDisplayWindow.SetVisible(ETrue); sl@0: iExternalDisplayWindow.Activate(); sl@0: iWs.Flush(); sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::ConstructL ---"); sl@0: } sl@0: sl@0: CMediaClientExtDisplayHandler::~CMediaClientExtDisplayHandler() sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::~CMediaClientExtDisplayHandler +++"); sl@0: sl@0: iExternalDisplayWindow.Close(); sl@0: iRootWindow.Close(); sl@0: delete iScreen; sl@0: iScreen = NULL; sl@0: iWs.Close(); sl@0: sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::~CMediaClientExtDisplayHandler ---"); sl@0: } sl@0: sl@0: RWindowBase* CMediaClientExtDisplayHandler::Window() sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::Window +++"); sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::Window ---"); sl@0: return &iExternalDisplayWindow; sl@0: } sl@0: sl@0: TSize CMediaClientExtDisplayHandler::DisplaySizeInPixels() sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::DisplaySizeInPixels +++"); sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::DisplaySizeInPixels ---"); sl@0: return iScreen->SizeInPixels(); sl@0: } sl@0: sl@0: void CMediaClientExtDisplayHandler::UpdateWindow() sl@0: { sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::UpdateWindow +++"); sl@0: iExternalDisplayWindow.SetExtent(TPoint(0,0), iScreen->SizeInPixels()); sl@0: DEBUG_PRINTF("CMediaClientExtDisplayHandler::UpdateWindow ---"); sl@0: }