accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp
branchRCL_3
changeset 56 1ddbe54d0645
parent 55 94cb00198351
child 60 ccb4f6b3db21
--- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp	Thu Jul 15 20:05:35 2010 +0300
+++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp	Thu Aug 19 11:09:10 2010 +0300
@@ -542,7 +542,6 @@
 					INFO_1( "Updating the Rawdata for the Block %d...", iCurrentBlock );
 					iEdidParserPtr->UpdateRawDataL(dataBlockDes);
 					
-					iCurrentBlock++;
 					if( inbrOfExtensions >= 2 )
 						{
  						inbrOfExtensions = inbrOfExtensions - 2;
@@ -555,6 +554,7 @@
 
 				if( inbrOfExtensions )
 					{
+					iCurrentBlock++;
 					iRetryCounter = KErrNone;
 					
 					if( ReadEDIDDataL() != KErrNone )
@@ -587,12 +587,11 @@
 								}
  							}
 						}
+					TRACE_EDID_DATA( *iEdidParserPtr );
+					
+					iFSM.Input( EPDEIfEDIDHandler, EPDEIfEDIDHandlerEventEdidDataFetched );
+					iRetryCounter = KErrNone;
 					}
-
-				TRACE_EDID_DATA( *iEdidParserPtr );
-				
-				iFSM.Input( EPDEIfEDIDHandler, EPDEIfEDIDHandlerEventEdidDataFetched );
-				iRetryCounter = KErrNone;
 				}
             else
                 {
@@ -1557,6 +1556,30 @@
 		    else // It is DVI connector
 		    {
 				TInt modecount = aHdmiConfigs.Count();
+
+				if( !modecount )
+					{
+					THdmiDviTimings timings;
+					
+					INFO( "==No EDID available from the Sink. Setting DMT 4" );
+					// No EDID data available from the sink
+					// Default VGA resolution should be selected
+					const TTimingItem* item = TimingByIndex( KDefaultDMTModeIndex, ETimingModeDMT );
+					if( item )
+						{
+						Mem::FillZ( ( TAny* )&timings, sizeof( timings ) );
+						FillHdmiDviTimings( *item, timings );
+						timings.iTvPhysicalImageAspectRatioNumerator = 4;
+						timings.iTvPhysicalImageAspectRatioDenominator = 3;
+						retVal = aHdmiConfigs.Append( timings );
+						ERROR_1( retVal, "Failed to append DMT timing: %S in array", item->iTimingName );
+						if( retVal == KErrNone )
+							{
+							modecount = 1;
+							ceaMode = EFalse;
+							}
+						}
+					}
 				
 				while( modecount-- )
 				  {