--- a/windowing/windowserver/nga/CLIENT/RBUFFER.CPP Tue Aug 31 16:31:06 2010 +0300
+++ b/windowing/windowserver/nga/CLIENT/RBUFFER.CPP Wed Sep 01 12:39:21 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 1994-2010 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1994-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"
@@ -43,10 +43,10 @@
iAutoFlush(EFalse),
#endif
iBuf(NULL,0,0), iNext(NULL), iPreviousHandle(0), iBufSize(0), iMaxBufSize(EMinBufferSize),
- #if defined(_DEBUG)
- iAppendDataLength(0),
- #endif
iDirectAcessCount(0), iInvalidBitmapArray(EFalse), iWindowSizeCache(NULL)
+#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+, iWindowNativeSizeCache(NULL)
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
{
}
@@ -103,6 +103,14 @@
delete iWindowSizeCache;
iWindowSizeCache = NULL;
}
+#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+ if (iWindowNativeSizeCache)
+ {
+ iWindowNativeSizeCache->Close();
+ delete iWindowNativeSizeCache;
+ iWindowNativeSizeCache = NULL;
+ }
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
}
void RWsBuffer::Destroy()
@@ -273,8 +281,14 @@
__ASSERT_DEBUG(((TUint32) aOpcode) < 0x8000, Assert(EW32AssertIllegalOpcode));
__ASSERT_DEBUG((aLength&0x3) == 0, Assert(EW32AssertOddLengthData));
TInt xtra(0);
- if (aLength2>0)
- xtra = PadValue(aLength2); // Round data upto a multiple of 4
+ if (aLength2 > 0)
+ {
+ xtra = 4 - (aLength2&0x3); // Round data upto a multiple of 4
+ if (xtra==4)
+ {
+ xtra=0;
+ }
+ }
const TInt msgSize = aLength + aLength2 + xtra + static_cast<TInt>(sizeof(TWsCmdHeader));
TInt available = iBuf.MaxLength() - iBuf.Length();
@@ -322,17 +336,12 @@
{
iBuf.Append((TUint8 *)aData, aLength);
}
- if (aLength2>0 && aData2!=NULL)
+ if (aLength2 > 0)
{
iBuf.Append((TUint8 *)aData2, aLength2);
iBuf.AppendFill(0,xtra);
}
-#if defined(_DEBUG)
- else if (aLength2>0 && aData2==NULL)
- {
- iAppendDataLength = aLength2;
- }
-#endif
+
if (aFlush)
{
return Flush(aIpcArgs);
@@ -345,86 +354,14 @@
DoWrite(handle, opcode, iAutoFlush, NULL);
}
-/**
-Writes data sent in aData of length aLength1 for the specifed aOpcode
-into wserv buffer. It also takes an TIpcArgs by which you can send additional
-data. But one thing needs to be noted that if aIpcArgs has some content then
-this function flushes the wserv buffer.
-
-@param aHandle aHandle of class derived from MWsClientClass
-@param aOpcode Opcode for the current command
-@param aData Data to be added to the buffer
-@param aLength Length of the data to be added to buffer
-@param aIpcArgs Additional data sent from client to server. It has default argument NULL.
- And if some data is sent in aIpcArgs, it flushes wserv buffer
-*/
-void RWsBuffer::Write(TInt aHandle, TUint aOpcode, const TAny *aData, TInt aLength, const TIpcArgs* aIpcArgs/*=NULL*/)
+void RWsBuffer::Write(TInt handle,TUint opcode,const TAny *pData, TInt length)
{
- TBool flush = (aIpcArgs != NULL ? ETrue : iAutoFlush); // If aIpcArgs contains data then we do explicit flush
- DoWrite(aHandle, aOpcode, flush, aIpcArgs, aData, aLength);
+ DoWrite(handle, opcode, iAutoFlush, NULL, pData, length);
}
-/**
-Writes data sent in aData and aData2 of lengths aLength1 and aLength2
-for the specifed aOpcode into wserv buffer. It also takes an TIpcArgs by which
-you can send additional data. But one thing needs to be noted that if aIpcArgs
-has some content then this function flushes the wserv buffer.
-
-@param aHandle Handle of class derived from MWsClientClass
-@param aOpcode Opcode for the current command
-@param aData Data to be added to the buffer
-@param aLength Length of the data to be added to buffer
-@param aData2 second Data to be added to the buffer
-@param aLength2 Length of the second data to be added to buffer
-@param aIpcArgs Additional data sent from client to server. It has default argument NULL.
- And if some data is sent in aIpcArgs, it flushes wserv buffer
-*/
-void RWsBuffer::Write(TInt aHandle, TUint aOpcode, const TAny *aData, TInt aLength, const TAny *aData2, TInt aLength2, const TIpcArgs* aIpcArgs/*=NULL*/)
+void RWsBuffer::Write(TInt handle,TUint opcode,const TAny *pData, TInt length,const TAny *pData2, TInt length2)
{
- __ASSERT_DEBUG(!((aIpcArgs != NULL) && (aLength2 > 0 && aData2 == NULL)), Assert(EW32AssertBufferLogic));
- TBool flush = iAutoFlush;
- if (aLength2 > 0 && aData2 == NULL)
- {
- flush = EFalse; // if just length2 is sent then we should not flush
- }
- else if (aIpcArgs != NULL)
- {
- flush = ETrue; // If aIpcArgs contains data then we do explicit flush
- }
- DoWrite(aHandle, aOpcode, flush, aIpcArgs, aData, aLength, aData2, aLength2);
- }
-
-/**
-Appends data directly to wserv buffer for the current command. So this function
-should be used after adding the current command.
-
-@param aData Data to be added to the buffer
-@param aLength Length of the data to be added to buffer. Make sure that its length
- is less than availabe buffer.
-@param aFinished EFalse, adds data to buffer and disables flushing even if auto flush is on,
- basically this notfies that more data is pending to be added.
- ETrue, adds data to buffer and resume normal service for flushing
- ie. Signals that this is the last bit of data to be added
-
-Note: When data is added using this API, it pads out buffer to multiple of 4 bytes
-*/
-void RWsBuffer::AppendData(const TAny *aData,TInt aLength,TBool aFinished)
- {
- __ASSERT_ALWAYS(iBuf.MaxLength()-iBuf.Length()>=PaddedValue(aLength),Assert(EW32AssertBufferLogic));
-#if defined(_DEBUG)
- // Check if this function is called only after setting iAppendDataLength
- __ASSERT_DEBUG(iAppendDataLength > 0, Assert(EW32AssertBufferLogic));
- // Check if length passed in is less then iAppendDataLength
- __ASSERT_DEBUG(iAppendDataLength >= aLength, Assert(EW32AssertBufferLogic));
- if (aFinished)
- iAppendDataLength = 0;
- else
- iAppendDataLength -= aLength;
-#endif
- iBuf.Append((TUint8*)(aData),aLength);
- iBuf.AppendFill(0,PadValue(iBuf.Length())); // Padout out buffer to multiple of 4 bytes
- if (aFinished && iAutoFlush)
- Flush(NULL);
+ DoWrite(handle, opcode, iAutoFlush, NULL, pData, length, pData2, length2);
}
TInt RWsBuffer::WriteReply(TInt handle,TUint opcode,const TIpcArgs* aIpcArgs)
@@ -537,3 +474,14 @@
iWindowSizeCache = new (ELeave) RHashMap<TInt, TWindowSizeCacheEntry>();
}
}
+
+#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+void RWsBuffer::EnableWindowNativeSizeCacheL()
+ {
+ if (iWindowNativeSizeCache == NULL)
+ {
+ iWindowNativeSizeCache = new (ELeave) RHashMap<TInt, TWindowSizeCacheEntry>();
+ }
+ }
+#endif // SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION
+