diff -r 2c833fc9e98f -r 1ee2af37811f tvout/tvoutengine/src/glxtvconnectionmonitor.cpp --- a/tvout/tvoutengine/src/glxtvconnectionmonitor.cpp Fri May 14 15:52:22 2010 +0300 +++ b/tvout/tvoutengine/src/glxtvconnectionmonitor.cpp Thu May 27 12:51:42 2010 +0300 @@ -17,10 +17,6 @@ -/** - * @internal reviewed 24/08/2007 by D Holland - */ - // CLASS HEADER #include "glxtvconnectionmonitor.h" @@ -69,17 +65,15 @@ // Default C++ constructor //----------------------------------------------------------------------------- // -CGlxTvConnectionMonitor::CGlxTvConnectionMonitor - ( MGlxTvConnectionObserver& aConnectionObserver ) - :CActive(EPriorityStandard), - iConnectionObserver ( aConnectionObserver ), - iTvOutConnectionState(EFalse), - iHDMIConnectionState(EFalse) +CGlxTvConnectionMonitor::CGlxTvConnectionMonitor( + MGlxTvConnectionObserver& aConnectionObserver) : + CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver), + iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse) - { - TRACER("CGlxTvConnectionMonitor"); - CActiveScheduler::Add( this ); - } + { + TRACER("CGlxTvConnectionMonitor"); + CActiveScheduler::Add(this); + } //----------------------------------------------------------------------------- @@ -146,8 +140,8 @@ TBool CGlxTvConnectionMonitor::IsConnected() const { TRACER("CGlxTvConnectionMonitor::IsConnected"); - GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsConnected iTvOutConnectionState=%d",iTvOutConnectionState); - return iTvOutConnectionState; + GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsConnected iIsTvOutConnected=%d",iIsTvOutConnected); + return iIsTvOutConnected; } //----------------------------------------------------------------------------- @@ -158,8 +152,8 @@ TBool CGlxTvConnectionMonitor::IsHDMIConnected() const { TRACER("CGlxTvConnectionMonitor::IsHDMIConnected"); - GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsHDMIConnected iHDMIConnectionState=%d",iHDMIConnectionState); - return iHDMIConnectionState; + GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsHDMIConnected iIsHDMIConnected=%d",iIsHDMIConnected); + return iIsHDMIConnected; } //----------------------------------------------------------------------------- @@ -181,21 +175,22 @@ //----------------------------------------------------------------------------- // void CGlxTvConnectionMonitor::IssueNotificationL() - { - TRACER("CGlxTvConnectionMonitor::IssueNotificationL"); - TBool previousTvState = iTvOutConnectionState; - TBool previousHDMIState = iHDMIConnectionState; - + { + TRACER("CGlxTvConnectionMonitor::IssueNotificationL"); + TBool previousTvState = iIsTvOutConnected; + TBool previousHDMIState = iIsHDMIConnected; + // Update the connection status UpdateConnectionStatusL(); - + // trigger tvstatus change only when there is actually a change the in the connection and not // for spurious events - if (previousTvState !=iTvOutConnectionState || previousHDMIState != iHDMIConnectionState) - { - GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered"); - iConnectionObserver.HandleTvConnectionStatusChangedL(); - } + if (previousTvState != iIsTvOutConnected || previousHDMIState + != iIsHDMIConnected) + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered"); + iConnectionObserver.HandleTvConnectionStatusChangedL(); + } } //----------------------------------------------------------------------------- @@ -207,47 +202,64 @@ TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()"); GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d", - iTvOutConnectionState,iHDMIConnectionState); + iIsTvOutConnected,iIsHDMIConnected); + + // reset the states + iIsHDMIConnected = EFalse; + iIsTvOutConnected = EFalse; //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray)); CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL(); CleanupStack::PushL(nameArray); + // Get the number of currently connected accessories // Loop through each connected accessory looking for // the desired capabilities // const TInt count = iCurrentAccArray.Count(); GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current count value is %d",count); - for (TInt index = 0; index HasName(KAccVideoOut)) + GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported"); + TAccPolNameRecord nameRecord; + nameRecord.SetNameL(KAccVideoOut); + + if (genId.DeviceTypeCaps( KDTAVDevice ) && + genId.PhysicalConnectionCaps( KPCHDMI )) { - GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported"); - TAccPolNameRecord nameRecord; - nameRecord.SetNameL(KAccVideoOut); TAccValueTypeTInt value; - iTvAccCon.GetValueL(genId, nameRecord, value); - if (value.iValue == EAccVideoOutEHDMI) + TInt err = iTvAccCon.GetValueL(genId, nameRecord, value); + if (err ==KErrNone) { - GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected"); - iHDMIConnectionState = ETrue; + if (value.iValue == EAccVideoOutEHDMI) + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected"); + iIsHDMIConnected = ETrue; + } } - else if (value.iValue == EAccVideoOutCVideo) + } + else if (genId.DeviceTypeCaps( KDTAVDevice ) && + genId.PhysicalConnectionCaps( KPCWired )) + { + TAccValueTypeTInt value; + TInt err = iTvAccCon.GetValueL(genId, nameRecord, value); + if (err ==KErrNone) { - GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL TV is connected"); - iTvOutConnectionState = ETrue; + if (value.iValue == EAccVideoOutCVideo) + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected"); + iIsTvOutConnected = ETrue; + } } } } CleanupStack::PopAndDestroy(nameArray); GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d", - iTvOutConnectionState,iHDMIConnectionState); + iIsTvOutConnected,iIsHDMIConnected); }