windowing/windowserver/nga/CLIENT/RWINDOW.CPP
branchRCL_3
changeset 26 15986eb6c500
parent 0 5d03bc08d59c
child 27 525ea837ea6b
child 163 bbf46f59e123
--- a/windowing/windowserver/nga/CLIENT/RWINDOW.CPP	Mon Mar 15 12:45:41 2010 +0200
+++ b/windowing/windowserver/nga/CLIENT/RWINDOW.CPP	Wed Mar 31 23:34:07 2010 +0300
@@ -170,6 +170,12 @@
 	         {
 	         DestroyWindowSizeCacheEntry();
 	         }
+#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+	    if (WindowNativeSizeCacheEnabled())
+	         {
+	         DestroyWindowNativeSizeCacheEntry();
+	         }
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
         Write(EWsWinOpFree);
 	    }
 	iWsHandle=NULL;
@@ -840,6 +846,31 @@
         }
 	}
 
+EXPORT_C TSize RWindowBase::SizeForEgl() const
+#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+/**
+@internalAll
+Disclaimer - this API is internal and is subject to change
+@prototype */
+	{
+	TSize size;
+	if (WindowNativeSizeCacheEnabled() && WindowNativeSize(size) == KErrNone)
+		{
+		return size;
+		}
+	else
+		{
+		return Size();
+		}
+	}
+#else
+    {
+    // API should not be used if macro undefined.
+    ASSERT(0);
+    return TSize();
+    }
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+
 EXPORT_C void RWindowBase::SetPosition(const TPoint &aPos)
 /** Sets the position of a window relative to its parent. 
 
@@ -1377,6 +1408,48 @@
 	Write(EWsWinOpEnableAdvancedPointers);
 	}
 
+/**
+@internalAll
+Disclaimer - this API is internal and is subject to change
+@prototype */
+EXPORT_C TInt RWindowBase::FixNativeOrientation()
+#if !defined(SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION) || defined (SYMBIAN_GRAPHICS_BUILD_OPENWF_WSERV) || defined (__WINS__) 
+    {
+    return KErrNotSupported;
+    }
+#else
+	{
+    TInt err = KErrNone;
+	if (!WindowNativeSizeCacheEnabled())
+		{
+		TRAP(err, EnableWindowNativeSizeCacheL());
+		if (err != KErrNone)
+		    {
+            return err;
+		    }
+		}
+	
+	const CFbsBitGc::TGraphicsOrientation orientation = static_cast<CFbsBitGc::TGraphicsOrientation>(WriteReply(EWsWinOpFixNativeOrientation));
+	switch (orientation)
+		{
+	case CFbsBitGc::EGraphicsOrientationNormal:
+    case CFbsBitGc::EGraphicsOrientationRotated180:
+		err = SetWindowNativeSize(Size());
+        break;
+	case CFbsBitGc::EGraphicsOrientationRotated90 :
+    case CFbsBitGc::EGraphicsOrientationRotated270:
+        {
+	    TSize size = Size();
+	    err = SetWindowNativeSize(TSize(size.iHeight, size.iWidth));
+        }
+		break;
+	default:
+	    Assert(EW32AssertInvalidOrientation);
+		}
+	return err;
+	}
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+
 EXPORT_C TInt RWindowBase::AllocPointerMoveBuffer(TInt aMaxNumPoints, TUint aFlags)
 /** Allocates a buffer for storing pointer movements.