diff -r bbf46f59e123 -r 25ffed67c7ef windowing/windowserver/nga/CLIENT/CLIENT.H --- a/windowing/windowserver/nga/CLIENT/CLIENT.H Tue Aug 31 16:31:06 2010 +0300 +++ b/windowing/windowserver/nga/CLIENT/CLIENT.H Wed Sep 01 12:39:21 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2009 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" @@ -54,10 +54,9 @@ void SetMaxBufferSizeL(TInt aMaxBufSize); TInt Flush(const TIpcArgs* aIpcArgs=NULL,TBool aRequestFinish=EFalse); TBool SetAutoFlush(TBool aState); - void Write(TInt aHandle, TUint aOpcode, const TAny *aData, TInt aLength, const TAny *aData2, TInt aLength2, const TIpcArgs* aIpcArgs=NULL); - void Write(TInt aHandle, TUint aOpcode, const TAny *aData, TInt aLength, const TIpcArgs* aIpcArgs=NULL); + void Write(TInt handle,TUint opcode,const TAny *pData, TInt length,const TAny *pData2, TInt length2); + void Write(TInt handle,TUint opcode,const TAny *buf, TInt bufLen); void Write(TInt handle,TUint opcode); - void AppendData(const TAny *aData, TInt aLength, TBool aFinished); TInt WriteReply(TInt handle,TUint opcode, const TIpcArgs* aIpcArgs=NULL); TInt WriteReply(TInt handle,TUint opcode,const TAny *buf, TInt bufLen, const TIpcArgs* aIpcArgs=NULL); TInt WriteReply(TInt handle,TUint opcode,const TAny *buf, TInt bufLen,const TAny *buf2, TInt buflen2, const TIpcArgs* aIpcArgs=NULL); @@ -85,6 +84,13 @@ inline void RefreshWindowSizeCache(TInt aHandle, const TSize& aNewSize); inline TInt CachedWindowSize(TInt aHandle, TSize& aSize); inline void DestroyWindowSizeCacheEntry(TInt aHandle); +#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION + void EnableWindowNativeSizeCacheL(); + inline TBool WindowNativeSizeCacheEnabled() const; + inline TInt SetWindowNativeSize(TInt aHandle, const TSize& aNativeSize); + inline TInt WindowNativeSize(TInt aHandle, TSize& aSize); + inline void DestroyWindowNativeSizeCacheEntry(TInt aHandle); +#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION private: TInt DoWrite(TInt aHandle, TUint aOpcode, TBool aFlush, const TIpcArgs* aIpcArgs, const TAny* aData1=NULL, TInt aLength1=0, const TAny* aData2=NULL, TInt aLength2=0); @@ -102,9 +108,6 @@ TInt iPreviousHandle; TInt iBufSize; // current buffer size, DoWrite can expand this up to iMaxBufize TInt iMaxBufSize; // maximum buffer size, set by SetBufferSizeL or SetMaxBufferSizeL -#if defined(_DEBUG) - TInt iAppendDataLength; -#endif private: //Added here as adding it to RWsSession breaks BC. TInt iDirectAcessCount; RArray iBitmapArray; @@ -120,6 +123,9 @@ }; RHashMap* iWindowSizeCache; +#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION + RHashMap* iWindowNativeSizeCache; +#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION }; @@ -189,5 +195,45 @@ __ASSERT_DEBUG(err == KErrNone || err == KErrNotFound, Assert(EW32AssertWindowSizeCacheFailure)); } +#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION +inline TBool RWsBuffer::WindowNativeSizeCacheEnabled() const + { + return iWindowNativeSizeCache ? ETrue : EFalse; + } + +inline TInt RWsBuffer::SetWindowNativeSize(TInt aHandle, const TSize& aNativeSize) + { + __ASSERT_ALWAYS(iWindowNativeSizeCache != NULL, Assert(EW32AssertWindowNativeSizeCacheFailure)); + RWsBuffer::TWindowSizeCacheEntry* entry = iWindowNativeSizeCache->Find(aHandle); + __ASSERT_ALWAYS(!entry, Assert(EW32AssertWindowNativeSizeCacheFailure)); + return iWindowNativeSizeCache->Insert(aHandle, RWsBuffer::TWindowSizeCacheEntry(aNativeSize)); + } + +inline TInt RWsBuffer::WindowNativeSize(TInt aHandle, TSize& aSize) + { + __ASSERT_ALWAYS(iWindowNativeSizeCache != NULL, Assert(EW32AssertWindowNativeSizeCacheFailure)); + RWsBuffer::TWindowSizeCacheEntry* entry = iWindowNativeSizeCache->Find(aHandle); + if (entry) + { + aSize = entry->iSize; + return KErrNone; + } + else + { + return KErrNotFound; + } + } + +inline void RWsBuffer::DestroyWindowNativeSizeCacheEntry(TInt aHandle) + { + __ASSERT_ALWAYS(iWindowNativeSizeCache != NULL, Assert(EW32AssertWindowNativeSizeCacheFailure)); + TInt err = iWindowNativeSizeCache->Remove(aHandle); + // If there is a window size cache entry, then err == KErrNone. + // Otherwise, there isn't a size cache entry, and err == KErrNotFound. + __ASSERT_DEBUG(err == KErrNone || err == KErrNotFound, Assert(EW32AssertWindowNativeSizeCacheFailure)); + } + +#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION + #endif