# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1279213535 -10800 # Node ID 94cb00198351c6c9cefcc4c4e1b417041f6ae368 # Parent 0b0048910c20ce5bb909eef4473feb4ef40bba7b Revision: 201025 Kit: 2010127 diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/edidhandler.h --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/edidhandler.h Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/edidhandler.h Thu Jul 15 20:05:35 2010 +0300 @@ -179,7 +179,7 @@ * @param None. * @return None. */ - void UpdateOverscanValues(); + TBool UpdateOverscanValues(); void GetCurrentOverscanValue( TInt& aHOverscan, TInt& aVOverscan ); diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/hdmicablestateconnected.h --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/hdmicablestateconnected.h Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/hdmicablestateconnected.h Thu Jul 15 20:05:35 2010 +0300 @@ -442,9 +442,6 @@ //CCentralRepositoryWatch* iCRWatchForHOverScan; CCentralRepositoryWatch* iCRWatchForVOverScan; - // Flag to indicate the change of overscan - TBool iOverScanSettingsChanged; - // Current overscan value TInt iHOverscanValue; TInt iVOverscanValue; diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/pdeconstants.h --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/pdeconstants.h Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/pdeconstants.h Thu Jul 15 20:05:35 2010 +0300 @@ -92,6 +92,7 @@ // Central Repository interface's event ids EPDEIfCentralRepositoryWatchEventUndefined = 0x50, EPDEIfCentralRepositoryWatchEventKeyChanged, + EPDEIfCentralRepositoryWatchEventOverscanKeyChanged, // ASY command Handler interface's event ids EPDEIfAsyCommandHandlerEventUndefined = 0x60, diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforcomposite.h --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforcomposite.h Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforcomposite.h Thu Jul 15 20:05:35 2010 +0300 @@ -123,6 +123,8 @@ */ void Disable(); + TBool UpdateOverscanValues(); + private: /** @@ -262,6 +264,12 @@ // Time out reason and next opt after timer has // elapsed TOpt iTimeOutReason; + + // Horizontal overscan in pixels (1% == 100) + TInt iHOverscan; + + // Vertical overscan in pixels (1% == 100) + TInt iVOverscan; }; #endif // TVOUTCONFIGFORCOMPOSITE_H diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/src/compositecablestateconnected.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/compositecablestateconnected.cpp Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/compositecablestateconnected.cpp Thu Jul 15 20:05:35 2010 +0300 @@ -100,7 +100,8 @@ void CCompositeCableStateConnected::Enter( ) { FUNC_LOG; - + + iTVOutConfigForComposite.UpdateOverscanValues(); ClearAvailableTvOutConfig(); iTVOutConfigForSettingChanges->ListenSettingsChanges(); @@ -192,16 +193,24 @@ TUint32 aId ) { FUNC_LOG; + INFO("Cenrep Value Changed"); if ( KCRUidTvoutSettings == aRepositoryId ) { if ( ( KSettingsTvAspectRatio == aId ) || ( KSettingsTvoutFlickerFilter == aId ) || - ( KSettingsTvSystemInfo == aId ) || - ( KSettingsTvoutVerticalOverscan == aId) ) + ( KSettingsTvSystemInfo == aId ) ) { Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged ); } - else + else if( KSettingsTvoutVerticalOverscan == aId ) + { + if( iTVOutConfigForComposite.UpdateOverscanValues() ) + { + INFO( "There is a real overscan change" ); + Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventOverscanKeyChanged ); + } + } + else { INFO_1("Unexpected CR key ID, aId 0x%x", aId ); } @@ -375,12 +384,38 @@ iResettingInput = ETrue; Enter(); } + else if ( EPDEIfCentralRepositoryWatchEventOverscanKeyChanged == aEvent ) + { + INFO( "Event: EPDEIfCentralRepositoryWatchEventOverscanKeyChanged" ); + iTVOutConfigForComposite.SetConfig( ETrue ); + } else { INFO_1( "Unknown Event Id: %i", aEvent ); } break; } + case EPDEIfTVOutConfig: + { + INFO( "Interface: EPDEIfTVOutConfig" ); + if ( EIfTVOutConfigEventSet == aEvent ) + { + INFO( "Event: EIfTVOutConfigEventSet" ); + // Stay on the same state + } + else if ( EIfTVOutConfigEventSetFailed == aEvent ) + { + INFO( "Event: EIfTVOutConfigEventSetFailed" ); + iCRWatchForFlickerFilter->Cancel(); + iCRWatchForAspectRatio->Cancel(); + iCRWatchForTvSystem->Cancel(); + iCRWatchForVOverScan->Cancel(); + ClearAvailableTvOutConfig(); + iTVOutConfigForComposite.Disable(); + iSubState = ESubStateDisabling; + } + break; + } default: { INFO_2( "Event from unexpected interface. if Id, event id: %i", aInterfaceId, aEvent ); diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Thu Jul 15 20:05:35 2010 +0300 @@ -1414,7 +1414,7 @@ // CalculateOverscan //------------------------------------------------------------------------------ // -void CEDIDHandler::UpdateOverscanValues() +TBool CEDIDHandler::UpdateOverscanValues() { FUNC_LOG; @@ -1423,6 +1423,7 @@ TInt vOverscan = 0; CRepository* cenRep = NULL; TInt err = KErrNone; + TBool valChanged = EFalse; TRAP( err, cenRep = CRepository::NewL( KCRUidTvoutSettings ) ); if( err == KErrNone ) @@ -1445,12 +1446,19 @@ // Cleanup delete cenRep; } + + if( (iHOverscan != hOverscan) || (iVOverscan != vOverscan) ) + { + valChanged = ETrue; + } // Update overscan values iHOverscan = hOverscan; iVOverscan = vOverscan; - INFO_2( "Overscan Values: %d,%d", iHOverscan, iVOverscan ); + INFO_3( "Overscan Values: %d,%d Changed:%d", iHOverscan, iVOverscan, valChanged ); + + return valChanged; } // ---------------------------------------------------------------------------- diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/src/hdmicablestateconnected.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/hdmicablestateconnected.cpp Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/hdmicablestateconnected.cpp Thu Jul 15 20:05:35 2010 +0300 @@ -101,8 +101,11 @@ if ( KSettingsTvoutVerticalOverscan == aId ) { INFO("Cenrep Value Changed"); - iEDIDHandler.UpdateOverscanValues(); - Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged ); + if( iEDIDHandler.UpdateOverscanValues() ) + { + INFO( "There is a real change" ); + Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged ); + } } else { @@ -153,8 +156,7 @@ { FUNC_LOG; TInt retVal( KErrNone ); - iOverScanSettingsChanged = EFalse; - + // Get the current overscan value iEDIDHandler.UpdateOverscanValues(); iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue ); @@ -526,18 +528,11 @@ { iSubState = ESubStateConnected; - if( !iOverScanSettingsChanged ) - { - TRAPD( err, iHDMICableStatusFSM.SettingsChangedL() ); - if ( KErrNone != err ) - { - INFO_1( "iHDMICableStatusFSM.SettingsChangedL() failed, error code %i", err ); - } - } - else - { - iOverScanSettingsChanged = EFalse; - } + TRAPD( err, iHDMICableStatusFSM.SettingsChangedL() ); + if ( KErrNone != err ) + { + INFO_1( "iHDMICableStatusFSM.SettingsChangedL() failed, error code %i", err ); + } ListenCopyProtectionStatusChanges(); iTVOutConfigForSettingChanges->ListenSettingsChanges(); iCRWatchForVOverScan->Watch(); @@ -583,12 +578,14 @@ INFO( "Event: EIfTVOutConfigEventDisabled" ); iSubState = ESubStateIdlingDisconnectAccessory; iAccessoryControlIf.DisconnectAccessory(); + ClearAvailableTvOutConfig(); } else if ( EIfTVOutConfigEventDisableFailed == aEvent ) { INFO( "Event: EIfTVOutConfigEventDisableFailed" ); iSubState = ESubStateIdlingDisconnectAccessory; iAccessoryControlIf.DisconnectAccessory(); + ClearAvailableTvOutConfig(); } else { @@ -963,7 +960,7 @@ iTVOutConfigForHDMI.Enable(); } } - else if ( EIfTVOutConfigEventSettingsChangesListenStarted ) + else if ( EIfTVOutConfigEventSettingsChangesListenStarted == aEvent ) { INFO( "Event: EIfTVOutConfigEventSettingsChangesListenStarted" ); // Everything is OK. Stay in the same state. @@ -1007,9 +1004,6 @@ if( (TTvSettings::EHDMI == curConfig.iConnector) && (!curConfig.iUnderscanEnabled) ) { - // Clear the available config - ClearAvailableTvOutConfig(); - iCRWatchForVOverScan->Cancel(); TInt retVal = iEDIDHandler.SetVideoParameters(); if ( KErrNone != retVal ) @@ -1017,7 +1011,8 @@ INFO( "Going to state since video parameter setting failed!" ); iTVOutConfigForSettingChanges->Cancel(); iCRWatchForVOverScan->Cancel(); - iHDMICableStatusFSM.Transit( EHDMICableStateRejected ); + iSubState = ESubStateIdlingDisable; + iTVOutConfigForHDMI.Disable(); } else { @@ -1030,12 +1025,8 @@ INFO( "Retreating back to since cable was disconnected while not listening!" ); iTVOutConfigForSettingChanges->Cancel(); iCRWatchForVOverScan->Cancel(); - iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); - } - else - { - iOverScanSettingsChanged = ETrue; - iSubState = ESubStateWaitForSettingsChanged; + iSubState = ESubStateIdlingDisable; + iTVOutConfigForHDMI.Disable(); } } } @@ -1116,24 +1107,8 @@ else if ( EIfTVOutConfigEventSettingsChanged == aEvent ) { INFO( "Event: EIfTVOutConfigEventSettingsChanged" ); - if( iOverScanSettingsChanged ) - { - if ( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() ) - { - iSubState = ESubStateResettingDisable; - iTVOutConfigForHDMI.Disable(); - } - else - { - iSubState = ESubStateResettingEnable; - iTVOutConfigForHDMI.Enable(); - } - } - else - { - iSubState = ESubStateEnable; - iTVOutConfigForHDMI.Enable(); - } + iSubState = ESubStateEnable; + iTVOutConfigForHDMI.Enable(); } else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent ) { diff -r 0b0048910c20 -r 94cb00198351 accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvoutconfigforcomposite.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvoutconfigforcomposite.cpp Mon Jun 21 17:06:14 2010 +0300 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvoutconfigforcomposite.cpp Thu Jul 15 20:05:35 2010 +0300 @@ -189,6 +189,48 @@ } // ----------------------------------------------------------------------------- +// CTVOutConfigForComposite::UpdateOverscanValues +// ----------------------------------------------------------------------------- +// +TBool CTVOutConfigForComposite::UpdateOverscanValues() + { + FUNC_LOG; + + // Overscan from cenrep + TInt hOverscan = 0; + TInt vOverscan = 0; + TInt err = KErrNone; + TBool valChanged = EFalse; + + // Horizontal + err = iRepository->Get( KSettingsTvoutHorizontalOverscan, hOverscan ); + if( err != KErrNone ) + { + hOverscan = 0; + } + + // Vertical + err = iRepository->Get( KSettingsTvoutVerticalOverscan, vOverscan ); + if( err != KErrNone ) + { + vOverscan = 0; + } + + if( (iHOverscan != hOverscan) || (iVOverscan != vOverscan) ) + { + valChanged = ETrue; + } + + // Update overscan values + iHOverscan = hOverscan; + iVOverscan = vOverscan; + + INFO_3( "Overscan Values: %d,%d Changed:%d", iHOverscan, iVOverscan, valChanged ); + + return valChanged; + } + +// ----------------------------------------------------------------------------- // CTVOutConfigForComposite::InitializeDriverL // ----------------------------------------------------------------------------- // @@ -216,20 +258,9 @@ ConvertFlickerFilter( value ); settings.iFlickerFilter = ( TTvSettings::TFlickerFilterType ) value; - TInt hOverscan = 0; - TInt vOverscan = 0; - err = iRepository->Get( KSettingsTvoutHorizontalOverscan, hOverscan ); - if( err != KErrNone ) - { - hOverscan = 0; - } - err = iRepository->Get( KSettingsTvoutVerticalOverscan, vOverscan ); - if( err != KErrNone ) - { - vOverscan = 0; - } - settings.iHorizontalOverScan = hOverscan; - settings.iVerticalOverScan = vOverscan; + // Update overscan + settings.iHorizontalOverScan = iHOverscan; + settings.iVerticalOverScan = iVOverscan; // Update the PAR UpdatePixelAspectRatio( settings );