windowing/windowserver/nga/CLIENT/CLIENT.H
branchRCL_3
changeset 26 15986eb6c500
parent 0 5d03bc08d59c
child 163 bbf46f59e123
--- a/windowing/windowserver/nga/CLIENT/CLIENT.H	Mon Mar 15 12:45:41 2010 +0200
+++ b/windowing/windowserver/nga/CLIENT/CLIENT.H	Wed Mar 31 23:34:07 2010 +0300
@@ -84,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);
@@ -116,6 +123,9 @@
 	    };
 	
 	RHashMap<TInt, TWindowSizeCacheEntry>* iWindowSizeCache;
+#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+	RHashMap<TInt, TWindowSizeCacheEntry>* iWindowNativeSizeCache;
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
 	};
 
 
@@ -185,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