Add LRU cache of rendered bitmaps, to improve redraw performance in the absence of graphics HW support for OpenVG
/** Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).* All rights reserved.* This component and the accompanying materials are made available* under the terms of "Eclipse Public License v1.0"* which accompanies this distribution, and is available* at the URL "http://www.eclipse.org/legal/epl-v10.html".** Initial Contributors:* Nokia Corporation - initial contribution.** Contributors:** Description: **/#ifndef AKN_ICON_SRV_SESSION_H#define AKN_ICON_SRV_SESSION_H// INCLUDES#include <e32base.h>#include "AknIconPanic.h"#include "AknIconSrvDef.h"// FORWARD DECLARATIONSclass CAknIconServer;class CAknIconSrvIconItem;// CLASS DECLARATION/*** This class represents a session in the server.* Functions are provided to respond appropriately to client messages.*/NONSHARABLE_CLASS(CAknIconSrvSession) : public CSession2 { public: // Constructors and destructor /** * C++ default constructor. */ CAknIconSrvSession(); /** * Destructor. */ virtual ~CAknIconSrvSession(); public: // New functions public: // From CSharableSession void ServiceL( const RMessage2& aMessage ); RFile& AdoptedFileHandle(); /** * @fn SetClientPanicCode * sets the panic code, which will be used in panicing the client * @param aPanicCode This panic code to set * @see TAknIconPanic */ void SetClientPanicCode(TAknIconPanic aPanicCode); private: // New Functions /** * Handles a client request; tests the opcode and gives * service according to that. * * @param aMessage service request message from client * * Leaves if: * - a service routine leaves */ TInt DispatchMessageL( const RMessage2& aMessage ); /** * Below are handlers for different services. * They get the parameters from client message and * call the desired service routine. * * They also do the necessary inter-thread data transfers. * * Leave if: * - a service routine leaves * * Leaves are trapped by ServiceL() which returns the * errorcode to the client. */ /** * Server down-cast. */ inline CAknIconServer* Server(); /** * Panics the client thread * @param aPanic panic reason */ void PanicClient( const RMessage2& aMessage, TAknIconPanic aPanic ) const; void ModifyUserCount( const CAknIconSrvIconItem* aItem, TInt aCount ); void ModifyUserCount( const CAknIconDataItem* aItem, TInt aCount ); private: // Data // Information of which icons this session is referring to. // Needed for cleanup purposes in e.g. client thread panic case. RArray<TAknIconSrvSessionIconItem> iIconItems; // Information of which icon data this session has preserved. // Needed for cleanup purposes in e.g. client thread panic case. RArray<TAknIconSrvSessionPreservedItem> iPreservedItems; // File handle adopted from the client side. // It is adopted in the beginning of the service request // and always closed after the service request. RFile iAdoptedFile; //! Code to use while panicking the client TAknIconPanic iClientPanicCode;#ifdef _DEBUG TInt iDbgHeapFailNextCount; // for heap testing#endif // _DEBUG }; #include "AknIconSrvSession.inl"#endif // AKN_ICON_SRV_SESSION_H // End of File