--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/CommonInc/alfcommanddebug.h Wed Nov 03 19:29:22 2010 +0200
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2008 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: Help class for debugging/optimizing the command stream.
+* -----------------------------------------------------------------------------
+* How to use CAlfCommandDebug
+*
+* - alfred.iby
+* - enable inclusion of alfcommanddebug.dll and its resource
+* alfcommanddescriptions.rsc
+*
+* What information are you interested in?
+* - Select the printed debug information in alfcommanddebug.cpp in
+* ConstructL method.
+*
+* Decide, which point do you want to debug. You can select more than one option.
+*
+* - alfrenderstage - can print all serialized commands
+* - enable flag and macro _ALF_PRINT_WS_COMMANDS_ in alfrenderstageplugin.mmp
+*
+*
+* - alfhierarcy - can print all hierarchy related commands (creation, destruction,
+* posting draw, etc)
+* - define _ALF_LOGGING and undefine it in alfhierarchy.cpp around #include <alflogger.h> .
+*
+* - define MACRO HUI_DEBUG_TRACK_DRAWING and #define HUI_DEBUG_TRACK_DRAWING in
+* alfappservercore.mmp
+*
+*
+* - alfstreamerbridge - can give human readable name for the commands added to
+* the queue and processed from the queue
+*
+* - define _ALF_LOGGING and undefine it in alfstreamerbridge.cpp
+* around #include <alflogger.h> .
+*
+* - define MACRO HUI_DEBUG_TRACK_DRAWING and #define HUI_DEBUG_TRACK_DRAWING in
+* alfappservercore.mmp
+*
+*
+* - alfbridge - can tag command buffers with the process name that drew the commands.
+* - define _ALF_LOGGING and undefine it in alfbridge.cpp
+* around #include <alflogger.h> .
+*
+* - define MACRO HUI_DEBUG_TRACK_DRAWING and #define HUI_DEBUG_TRACK_DRAWING
+* in alfappservercore.mmp
+*
+* - huicanvaswspainter.cpp - can print the command names and their parameters
+* and the process name that drew them (you must enable the above alfbridge debugs,
+* if you want to see process names)
+*
+* - define MACRO HUI_DEBUG_TRACK_DRAWING and #define HUI_DEBUG_TRACK_DRAWING in huitk_base.mmp
+*
+* - enable wanted prints in alfcommanddebug.cpp ConstructL function.
+*
+* NOTE, Logging for all __ALFLOGSTRING variants can be enabled in alfloggingconfiguration.h .
+* However, be prepared for massive amount of debug data and even more sluggish performance,
+* if that is enabled.
+*
+*/
+
+#ifndef CALFCOMMANDDEBUG_H_
+#define CALFCOMMANDDEBUG_H_
+
+#include <e32std.h>
+#include <e32base.h>
+#include <s32mem.h>
+#include <s32strm.h>
+#include <e32debug.h>
+#include <e32hashtab.h>
+#include <gdi.h>
+#include <w32std.h>
+#include <alfcommanddescriptions.rsg>
+
+class CAlfScreen;
+class CHuiControlGroup;
+
+NONSHARABLE_CLASS( CAlfCommandDebug ) : public CBase
+ {
+ public:
+
+ IMPORT_C static CAlfCommandDebug* NewL();
+
+ IMPORT_C void StartFrame();
+
+ IMPORT_C void EndFrame();
+
+ IMPORT_C void PrintStatistic();
+
+ IMPORT_C void SetDescriptionAndSize( const TUint8& aCommand, const TInt& aSize, TInt aDescriptionList = R_ALF_COMMAND_DESCRIPTION_ARRAY );
+
+ IMPORT_C void SetDescription( const TUint8& aCommand, TInt aDescriptionList = R_ALF_COMMAND_DESCRIPTION_ARRAY );
+
+ IMPORT_C void SetHandle( const TInt& aHandle );
+
+ IMPORT_C void SetPoint( const TPoint& aPoint );
+
+ IMPORT_C void SetRect( const TRect& aRect );
+
+ IMPORT_C void SetRegion( const TRegion& aRegion );
+
+ IMPORT_C void SetColor( TRgb& aColor );
+
+ IMPORT_C void SetText( TPtr& aText );
+
+ IMPORT_C void Print();
+
+ IMPORT_C void AdjustCommand( const TUint8& aCommand, TInt iAdjustment );
+
+ IMPORT_C void SetPrint( TBool aPrint );
+
+ IMPORT_C TFileName WServClientFileName(TInt aClientWindowGroupId, RWsSession& aSession );
+
+ IMPORT_C TBool TrackProcess( HBufC16* aFileName );
+
+ IMPORT_C ~CAlfCommandDebug();
+
+ IMPORT_C TDesC16& Text();
+
+ private:
+
+ void ConstructL();
+
+ class TCommand : public CBase
+ {
+
+ public:
+
+ TCommand() : iDescription(NULL), iCount(0), iSize(0){};
+
+ HBufC16* iDescription;
+ TUint iCount;
+ TUint iSize;
+ };
+
+ void ReadCommandDescriptionsL( RHashMap<TUint32,TCommand>* aDescriptionArray, TInt aId );
+
+
+
+ private:
+
+
+
+ RHashMap<TUint32,TCommand>* iCommandDescriptions;
+ RHashMap<TUint32,TCommand>* iBridgeCommandDescriptions;
+
+ TInt iTotalCmdCount;
+ TInt iTotalCmdSize;
+
+ TInt iFrameCount;
+ Uint64 iFrameTotalSize;
+
+ TBuf<1024> iText;
+
+ // Change run-time the content of this of set it in ConstructL to track
+ // certain process drawing in device
+ TFileName iTrackedProcess;
+
+ enum TLogginMode
+ {
+ EPrintOnlyCommands = 1,
+ EPrintCommandParameters,
+ EPrintStatistics,
+ EPrintStatisticsForLargeBuffers,
+ EPrintSummary
+ };
+
+ TLogginMode iMode;
+
+public:
+
+ TInt iPrint;
+ TBool iPrintStatistics;
+ TInt iLargeBufferDefinition;
+ TBool iPrintColors;
+ TBool iPrintRegions;
+ TBool iPrintRects;
+ TBool iPrintPoints;
+ TBool iPrintHandles;
+ TBool iPrintTexts;
+ TBool iPrintSummary;
+
+ };
+
+#endif /* CALFCOMMANDDEBUG_H_ */