sl@0: // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Graphics Resource - kernel extension internal functionality sl@0: // sl@0: sl@0: #ifndef SGEXTENSIONIMPL_H sl@0: #define SGEXTENSIONIMPL_H sl@0: sl@0: #include sl@0: sl@0: NONSHARABLE_CLASS(DSgExtensionImpl): public DBase sl@0: { sl@0: public: sl@0: TInt Construct(); sl@0: TInt CreateResource(TUint32 aAttribs, const TDesC8& aMetaData, TInt aDataSize, DSgResource*& aResource); sl@0: TInt FindAndOpenResource(TUint64 aId, DSgResource*& aResource); sl@0: void DeleteResource(DSgResource* aResource); sl@0: TInt GlobalResourceCount() const; sl@0: TInt GlobalGraphicsMemoryUsed() const; sl@0: private: sl@0: DMutex* iMutex; sl@0: TUint64 iLastResourceId; sl@0: RPointerArray iResources; sl@0: }; sl@0: sl@0: NONSHARABLE_CLASS(DSgResourceImpl): public DSgResource sl@0: { sl@0: public: sl@0: DSgResourceImpl(DSgExtensionImpl& aExtensionImpl, TUint64 aId, TUint32 aAttribs, sl@0: const TDesC8& aMetaData, DChunk* aDataChunk, TInt aDataSize); sl@0: // From DSgResource sl@0: TInt Open(); sl@0: void Close(); sl@0: TUint64 Id() const; sl@0: TUint32 Attributes() const; sl@0: TInt GetMetaData(TDes8& aMetaData) const; sl@0: DChunk* DataChunk() const; sl@0: TInt DataSize() const; sl@0: private: sl@0: ~DSgResourceImpl(); sl@0: private: sl@0: DSgExtensionImpl& iExtensionImpl; sl@0: TInt iRefCount; sl@0: TUint64 iId; sl@0: TUint32 iAttributes; sl@0: TInt iMetaDataSize; sl@0: DChunk* iDataChunk; sl@0: TInt iDataSize; sl@0: }; sl@0: sl@0: #endif // SGEXTENSIONIMPL_H