windowing/windowserverplugins/openwfc/src/displayrenderstage.cpp
branchRCL_3
changeset 5 25f95128741d
parent 0 5d03bc08d59c
child 19 bbf46f59e123
equal deleted inserted replaced
4:15986eb6c500 5:25f95128741d
    25 #include <graphics/wsdisplaymapping.h>
    25 #include <graphics/wsdisplaymapping.h>
    26 #include <graphics/wsdisplaypolicy.h>
    26 #include <graphics/wsdisplaypolicy.h>
    27 #if defined(__WINS__) && defined(_DEBUG)
    27 #if defined(__WINS__) && defined(_DEBUG)
    28 #include "debugbardrawer.h"
    28 #include "debugbardrawer.h"
    29 #endif
    29 #endif
       
    30 #include <bitdev.h>
    30 
    31 
    31 #if defined(__WINS__) && defined(_DEBUG)
    32 #if defined(__WINS__) && defined(_DEBUG)
    32 #define DEBUGOSB iRenderTarget->UpdateDebugWin();
    33 #define DEBUGOSB iRenderTarget->UpdateDebugWin();
    33 #else
    34 #else
    34 #define DEBUGOSB
    35 #define DEBUGOSB
   247 			else
   248 			else
   248 				{
   249 				{
   249 				return NULL;
   250 				return NULL;
   250 				}
   251 				}
   251 			}
   252 			}
   252 		
       
   253 		}
   253 		}
   254 
   254 
   255 	TAny* interface = NULL;
   255 	TAny* interface = NULL;
   256 	if(!interface)
   256 	if(!interface)
   257 		interface = iRenderTarget->ResolveObjectInterface(aTypeId);
   257 		interface = iRenderTarget->ResolveObjectInterface(aTypeId);
   310 	return iScreenNumber;
   310 	return iScreenNumber;
   311 	}
   311 	}
   312 
   312 
   313 TDisplayMode CDisplayRenderStage::DisplayMode() const
   313 TDisplayMode CDisplayRenderStage::DisplayMode() const
   314 	{
   314 	{
   315 	return iRenderTarget->DisplayMode();
   315     // MWsScreenDevice::DisplayMode is queried by Wserv to reply to CWsScreenDevice::DisplayMode calls from apps or when Wserv creates
       
   316     // CFbsScreenDevice whenever there are DSA clients.
       
   317     // Screendriver default display mode for 32bpp has been changed from 16MAP to 16MA to maintain compatibility with 3rd party apps,
       
   318     // therefore we have to report the supported screen device format instead of UI surface format.
       
   319     //
       
   320     // However, this method is also used by flickerbuffer render stage to determine pixel format for off-screen rendering target,
       
   321     // which must match UI surface format. Since we cannot return two different values in 32bpp case, this method will always return the
       
   322     // value from screendriver. Flickerbuffer render stage need to change to deal with this.
       
   323     //
       
   324     const TInt KThirtyTwoBpp = 32;
       
   325     const TDisplayMode dm = iRenderTarget->DisplayMode();
       
   326     const TInt bpp = TDisplayModeUtils::NumDisplayModeBitsPerPixel(dm);
       
   327     return bpp == KThirtyTwoBpp ? CFbsDevice::DisplayMode16M() : dm;
   316 	}
   328 	}
   317 
   329 
   318 TSize CDisplayRenderStage::SizeInPixels() const
   330 TSize CDisplayRenderStage::SizeInPixels() const
   319 	{
   331 	{
   320 	TSize size(0, 0);
   332 	TSize size(0, 0);