graphicscomposition/surfaceupdate/tsrc/trequestorder.cpp
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicscomposition/surfaceupdate/tsrc/trequestorder.cpp	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,114 @@
+// Copyright (c) 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"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#include "trequestorder.h"
+
+CRequestOrder::CRequestOrder(TInt aNumberAsynchronousRequests) :
+    iNumberAsynchronousRequests(aNumberAsynchronousRequests)
+    {
+    }
+
+CRequestOrder::~CRequestOrder()
+    {
+    delete iOrderArray;
+    iLock.Close();
+    }
+    
+void CRequestOrder::ConstructL()
+    {
+    User::LeaveIfError(iLock.CreateLocal());
+    
+    iOrderArray = new (ELeave) TOrderArray[iNumberAsynchronousRequests];
+    User::LeaveIfNull(iOrderArray);
+    
+    ResetAll();
+    }
+
+CRequestOrder* CRequestOrder::NewL(const TInt aNumberAsynchronousRequests)
+    {
+    CRequestOrder* requestOrder = new (ELeave) CRequestOrder(aNumberAsynchronousRequests);
+    CleanupStack::PushL(requestOrder);
+    requestOrder->ConstructL();
+    CleanupStack::Pop();
+    return requestOrder;
+    }
+
+
+void CRequestOrder::ResetAll() 
+    {
+    iIndex=0;
+    iOrderIndexBefore=0;
+    iOrderIndexComposition=0;
+    iOrderIndexAfter=0;
+    
+    for(TInt i=0; i<iNumberAsynchronousRequests;i++)
+            {
+            iOrderArray[i].iType = EOrderErr;
+            iOrderArray[i].iNumber = 0;
+            }
+    }
+
+TInt CRequestOrder::GetIndex() 
+    {
+    return iIndex;
+    }
+
+void CRequestOrder::SetOrder(TOrderType aOrderType) 
+    {
+    iLock.Wait();
+    iOrderArray[iIndex].iType = aOrderType;
+    switch (aOrderType)
+        {
+        case EOrderBefore:
+            {
+            iOrderArray[iIndex].iNumber = iOrderIndexBefore++;
+            break;
+            }
+        case EOrderComposition:
+            {
+            iOrderArray[iIndex].iNumber = iOrderIndexComposition++;
+            break;
+            }
+        case EOrderAfter:
+            {
+            iOrderArray[iIndex].iNumber = iOrderIndexAfter++;
+            break;
+            }
+        default:
+            {
+            _LIT(KMsg, "GRAPHICS-SURFACEUPDATE-0003");
+            User::Panic(KMsg, 1);
+            break;
+            }
+        }
+    iIndex++;
+    iLock.Signal();
+    }
+
+TOrderType CRequestOrder::GetOrderType(TInt aIndex) 
+    { 
+    return iOrderArray[aIndex].iType;
+    }
+
+TInt CRequestOrder::GetOrderNumber(TInt aIndex)
+    {
+    return iOrderArray[aIndex].iNumber;
+    }