diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/ttime/TTIME.CPP --- a/windowing/windowserver/ttime/TTIME.CPP Fri Jun 11 14:58:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,554 +0,0 @@ -// Copyright (c) 1995-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: -// Functions to act as bench marks for various window server features -// -// - -#include "TTIME.H" -#include -#include -typedef TBuf<32> TestNameBuf; - -LOCAL_D const TUint KHeapSize=0x10000; - -class CTimeClient; - -class CResultDialog : public CTDialog - { -public: - CResultDialog(CTWindowGroup *aGroupWin,CWindowGc *aGc); - void ButtonPressL(TInt aButton); - void ConstructLD(); -private: - CTWindowGroup *iGroupWin; - CWindowGc *iGc; - }; - -class CListWindow : public CTTitledWindow - { -public: - CListWindow(); - void CloseWindow(); - void ConstructL(CTWinBase &parent, TBool aExitOnEscape); - void Draw(); - virtual void SelectedL(TInt aIndex)=0; - virtual void WinKeyL(const TKeyEvent &aKey,const TTime& aTime); - void SetExt(const TPoint &aPos, const TSize &aSize); - void SetSize(const TSize &); -protected: - virtual TPtrC GetText(TInt aLine)=0; - virtual TInt ListCount()=0; - void SetSize(); -private: - void Resized(const TSize &aSize); - void SetListPos(TInt aNewPos); - TInt TextRowHeight() const; - void RowBox(TRect &aRect, TInt aRow) const; - void PointerL(const TPointerEvent &aPointer,const TTime& aTime); -private: - TInt iListPos; - TTime iPrevTime; - TBool iExitOnEscape; - }; - -class CTestList : public CListWindow - { -public: - CTestList(); - ~CTestList(); - void ConstructL(CTWinBase &parent); - static void AppendProfileNum(TDes &aDes, TInt aNum); - static void AppendProfileCount(TDes &aDes, TInt aNum); - void SelectedL(TInt aIndex); - virtual void WinKeyL(const TKeyEvent &aKey,const TTime& aTime); - void ForegroundAppDialog(); - void AppendToListL(const TDesC &aDesc); -private: - virtual TPtrC GetText(TInt aLine); - virtual TInt ListCount(); -private: - TInt iCount; - CArrayFixSeg iTestNames; - RThread iTimeTest; - }; - -class CTimeTestWindowGroup : public CTWindowGroup - { -public: - CTimeTestWindowGroup(CTClient *aClient); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); - }; - -class CTimeClient : public CTClient - { -public: - CTimeClient(); - void ConstructL(); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); - void Exit(); - CTWin *CreateTestWindowL(TPoint pos,CTWinBase *parent); -private: - TInt iNum; - }; - -const TInt Xmove=8; -const TInt Ymove=6; - -GLREF_D TTimeTestHeader MovingWindowTest1; -GLREF_D TTimeTestHeader MovingWindowTest2; -GLREF_D TTimeTestHeader StackedWindowCreate; -GLREF_D TTimeTestHeader WindowCreateDestroy; -GLREF_D TTimeTestHeader LoadsaText; -GLREF_D TTimeTestHeader DrawBitmapTest; -GLREF_D TTimeTestHeader XorIngTest; -GLREF_D TTimeTestHeader SmallClearTest; -GLREF_D TTimeTestHeader RectCompareTest; -GLREF_D TTimeTestHeader SimpleFlushTest; -GLREF_D TTimeTestHeader SimpleFlushTest2; -GLREF_D TTimeTestHeader UseFontTest; -GLREF_D TTimeTestHeader BitBltTest; -GLREF_D TTimeTestHeader FullScreenBitBltTest; -GLREF_D TTimeTestHeader MaskedBitBltTest; -GLREF_D TTimeTestHeader SpriteTest; -GLREF_D TTimeTestHeader BitmapDeviceTest1; -GLREF_D TTimeTestHeader BitmapDeviceTest2; -GLREF_D TTimeTestHeader FillPatternTest; -GLREF_D TTimeTestHeader BitmapLoadTest; -GLREF_D TTimeTestHeader WsBitmapLoadTest; -GLREF_D TTimeTestHeader RomFileTest; -GLREF_D TTimeTestHeader TrivialFunctionsTest; -GLREF_D TTimeTestHeader BackupWindowDrawingCreate1; -GLREF_D TTimeTestHeader BackupWindowDrawingCreate2; -GLREF_D TTimeTestHeader MenuEmulationCreate; -GLREF_D TTimeTestHeader MenuEmulationCreate2; - -TTimeTestHeader *tests[]={ - &MenuEmulationCreate, - &MenuEmulationCreate2, - &BitmapLoadTest, - &WsBitmapLoadTest, - &RomFileTest, - &TrivialFunctionsTest, - &BackupWindowDrawingCreate1, - &BackupWindowDrawingCreate2, - &MovingWindowTest1, - &MovingWindowTest2, - &StackedWindowCreate, -// &WindowCreateDestroy, - &LoadsaText, - &DrawBitmapTest, -// &BitmapDeviceTest1, -// &BitmapDeviceTest2, -// &XorIngTest, List getting too big -// &SmallClearTest, List getting too big -// &RectCompareTest, - &SpriteTest, -// &SimpleFlushTest, -// &SimpleFlushTest2, -// &UseFontTest, - &BitBltTest, -// &FullScreenBitBltTest, - &MaskedBitBltTest, -// &FillPatternTest, - }; - -void Panic(TInt aPanic) - { - User::Panic(_L("TimeTest"),aPanic); - } - -struct TThreadParams - { - TInt iIndex; - TInt iGroupId; - }; - -TInt TimeThread(TAny *aParams) - { - CTrapCleanup* CleanUpStack=CTrapCleanup::New(); - //__PROFILE_START(0) - TInt ret=tests[((TThreadParams *)aParams)->iIndex]->function(((TThreadParams *)aParams)->iGroupId); - //__PROFILE_END(0) - delete CleanUpStack; - return ret; - } - -// -// List Window // -// - -CListWindow::CListWindow() : CTTitledWindow(), iPrevTime(0) - { - } - -void CListWindow::CloseWindow() - { - CTClient *client=((CTimeClient *)Client()); - delete this; - client->ResetFocus(); - } - -void CListWindow::SetExt(const TPoint &aPos, const TSize &) - { - SetPos(aPos); - } - -void CListWindow::SetSize(const TSize &) - { - } - -void CListWindow::SetSize() - { - iSize.iHeight=ListCount()*(iFont->HeightInPixels()+1)+iTitleHeight+2; - iSize.iWidth=iFont->TextWidthInPixels(*Client()->Title())+30; - for(TInt index=0;indexTextWidthInPixels(GetText(index)); - if (wid>iSize.iWidth) - iSize.iWidth=wid; - } - iSize.iWidth+=4; - iWin.SetSize(iSize); - Resized(iSize); - } - -void CListWindow::ConstructL(CTWinBase &parent, TBool aExitOnEscape) - { - iExitOnEscape=aExitOnEscape; - CTTitledWindow::ConstructL(parent); - } - -void CListWindow::SetListPos(TInt aNewPos) - { - if (aNewPos>=0 && aNewPosHeightInPixels()+1); - } - -void CListWindow::RowBox(TRect &aRect, TInt aRow) const - { - aRect.iTl.iX=2; - aRect.iTl.iY=iTitleHeight+TextRowHeight()*aRow; - aRect.iBr.iX=iSize.iWidth-2; - aRect.iBr.iY=aRect.iTl.iY+TextRowHeight(); - } - -void CListWindow::Draw() - { - CTTitledWindow::Draw(); - iGc->SetPenColor(TRgb::Gray16(0)); - TPoint pos(2,iTitleHeight+iFont->AscentInPixels()+2); - TInt gap=TextRowHeight(); - for(TInt index=0;indexDrawText(GetText(index), pos); - if (index==iListPos) - { - iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); - iGc->SetBrushColor(TRgb::Gray256(255)); - iGc->SetPenStyle(CGraphicsContext::ENullPen); - iGc->SetDrawMode(CGraphicsContext::EDrawModeXOR); - TRect rect; - RowBox(rect,index); - iGc->DrawRect(rect); - iGc->SetBrushStyle(CGraphicsContext::ENullBrush); - iGc->SetPenStyle(CGraphicsContext::ESolidPen); - iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); - } - } - } - -void CListWindow::Resized(const TSize &aSize) - { - SetDragRect(TRect(0,0,aSize.iWidth,iTitleHeight)); - } - -// -// Test list window -// - -CTestList::CTestList() : CListWindow(), iTestNames(4) - { - } - -CTestList::~CTestList() - { - } - -void CTestList::ConstructL(CTWinBase &parent) - { - CListWindow::ConstructL(parent, EFalse); - for(TUint index=0;index<(sizeof(tests)/sizeof(tests[0]));index++) - AppendToListL(TPtrC(tests[index]->title)); - SetSize(); - /*for(TUint index1=0;index1<(sizeof(tests)/sizeof(tests[0]));index1++) - Selected(index1);*/ - } - -void CTestList::AppendProfileNum(TDes &aDes, TInt aNum) - { - aDes.AppendFormat(_L("%d.%02d, "),aNum/1000000,(aNum%1000000)/10000); - } - -void CTestList::AppendProfileCount(TDes &aDes, TInt aNum) - { - aDes.AppendFormat(_L("%d, "),aNum); - } - -#define USE_PROCESS 1 - -void CTestList::SelectedL(TInt aIndex) - { -#if USE_PROCESS - TThreadParams params; - params.iIndex=aIndex; - TName name; - name.Format(_L("TimeTest-%x"),iCount++); - params.iGroupId=Client()->iGroup->GroupWin()->Identifier(); - User::LeaveIfError(iTimeTest.Create(name,TimeThread,KDefaultStackSize*2,KHeapSize,KHeapSize,¶ms,EOwnerThread)); - TRequestStatus status; - iTimeTest.Logon(status); - __PROFILE_RESET(8); - iTimeTest.Resume(); - User::WaitForRequest(status); -#else - TThreadParams params; - params.iIndex=aIndex; - TimeThread(¶ms); -#endif - TBuf<64> buf; - TBuf<64> buf2; - TBuf<64> buf3; - CResultDialog *dialog=new(ELeave) CResultDialog(Client()->iGroup, iGc); - dialog->ConstructLD(); -#if USE_PROCESS - if (status.Int()==KErrNone) - { -#endif -#if !defined(__PROFILING__) - buf=_L("Profiling information not available"); -#else - TProfile profile[6]; - __PROFILE_DISPLAY(6); - for (TInt index=1;index<6;index++) - AppendProfileNum(buf2,profile[index].iTime); - for (TInt index2=1;index2<6;index2++) - AppendProfileCount(buf3,profile[index2].iCount); - buf.Format(_L("Time=%d.%2d"),profile[0].iTime/1000000,(profile[0].iTime%1000000)/10000); -#endif - dialog->SetTitle(buf); -#if USE_PROCESS - } - else - { - dialog->SetTitle(_L("Error in test")); - buf.Format(_L("Error=%d"),status.Int()); - buf2=iTimeTest.ExitCategory(); - } -#endif - dialog->SetLine1(buf2); - dialog->SetLine2(buf3); - dialog->SetNumButtons(1); - dialog->SetButtonText(0,_L("Okay")); - if (dialog->Display()!=0) - Panic(0); - } - -TPtrC CTestList::GetText(TInt aLine) - { - return(TPtrC(iTestNames[aLine])); - } - -TInt CTestList::ListCount() - { - return(iTestNames.Count()); - } - -void CTestList::WinKeyL(const TKeyEvent &aKey,const TTime& aTime) - { - if (aKey.iModifiers&EModifierFunc) - { - switch(aKey.iCode) - { - case EKeyLeftArrow: - AdjustSize(-Xmove,0,aKey.iModifiers); - break; - case EKeyRightArrow: - AdjustSize(Xmove,0,aKey.iModifiers); - break; - case EKeyUpArrow: - AdjustSize(0,-Ymove,aKey.iModifiers); - break; - case EKeyDownArrow: - AdjustSize(0,Ymove,aKey.iModifiers); - break; - default: - goto not_used; - } - } - else - goto not_used; - return; -not_used: - CListWindow::WinKeyL(aKey,aTime); - } - -void CTestList::AppendToListL(const TDesC &aDesc) - { - TestNameBuf buf(aDesc); - iTestNames.AppendL(buf); - } - -// - -CResultDialog::CResultDialog(CTWindowGroup *aGroupWin,CWindowGc *aGc) : CTDialog(), - iGroupWin(aGroupWin), - iGc(aGc) - { - } - -void CResultDialog::ButtonPressL(TInt aButton) - { - if (aButton==0) - CTDialog::ButtonPressL(aButton); - } - -void CResultDialog::ConstructLD() - { - CTDialog::ConstructLD(*iGroupWin, *iGc); - } - -// -// CTimeTestWindowGroup class // -// - -CTimeTestWindowGroup::CTimeTestWindowGroup(CTClient *aClient) : CTWindowGroup(aClient) - { - } - -void CTimeTestWindowGroup::KeyL(const TKeyEvent &aKey,const TTime &aTime) - { - if (aKey.iModifiers&EModifierFunc) - { - switch(aKey.iCode) - { - case 'x': - ((CTimeClient *)Client())->Exit(); - break; - } - } - else - iCurWin->WinKeyL(aKey,aTime); - } - -// - -CTimeClient::CTimeClient() - { - } - -CTWin *CTimeClient::CreateTestWindowL(TPoint pos,CTWinBase *parent) - { - CTWin *win=new(ELeave) CTestList(); - TRAPD(err,win->ConstructL(*parent)); - if (err!=KErrNone) - goto ctw_err; - TRAP(err,win->SetPos(pos)); - if (err!=KErrNone) - { -ctw_err: - delete win; - User::Leave(err); - } - win->Activate(); - win->AssignGC(*iGc); - return(win); - } - -void CTimeClient::ConstructL() - { - CTClient::ConstructL(); - - iGroup=new(ELeave) CTimeTestWindowGroup(this); - iGroup->ConstructL(); - - CreateTestWindowL(TPoint(30,4),iGroup); - iGroup->SetCurrentWindow(iGroup->Child()); - } - -void CTimeClient::Exit() - { - CActiveScheduler::Stop(); - } - -GLDEF_C CTClient *CreateClientL() - { - return(new(ELeave) CTimeClient()); - } - -GLDEF_C TInt E32Main() - { - return(TestLibStartUp(CreateClientL)); - }