windowing/windowserver/SERVER/openwfc/panics.h
author Faisal Memon <faisal.memon@nokia.com>
Thu, 06 May 2010 11:31:11 +0100
branchNewGraphicsArchitecture
changeset 47 48b924ae7197
parent 19 ac96196b945c
child 149 e375a7921169
permissions -rw-r--r--
Applied patch 1, to provide a syborg specific minigui oby file. Need to compare this with the "stripped" version currently in the tree. This supplied version applies for Nokia builds, but need to repeat the test for SF builds to see if pruning is needed, or if the file needs to be device-specific.

// Copyright (c) 2003-2010 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:
// Window server panics
// 
//

#ifndef __PANICS_H__
#define __PANICS_H__

#include <e32def.h>
#include <e32cmn.h>

enum TWservPanic
	{
	EWsPanicTemp = 0, 				// Used for panics that aren't intended to be left in the code
	EWsPanicInvalidInvalidArea = 1,
	EWsPanicArea = 2,
	EWsPanicRegion = 3,
	EWsPanicQueueUpdateCount = 4,
	EWsPanicUnknownCaptureKey = 5,
	EWsPanicInvalidCursorType = 6,
	EWsPanicInvalidRegion = 7,
	EWsPanicInvalidArea = 8,
	EWsPanicTextCursorFocus = 9,
	
	EWsPanicWindowType = 10,
	EWsPanicRootCommand = 11,
	EWsPanicWindowCheck = 12,
	EWsPanicFailedToInitialise = 13,
	EWsPanicBadActiveGcList = 14,
	//EWsPanicShadowLockingError = 15,
	EWsPanicBackupRegion = 16,
	EWsPanicKeyRepeat = 17 ,
	EWsPanicErrorInRegion = 18,
	EWsPanicRedrawQueueError = 19,
	
	EWsPanicRegionErrorCheck = 20, // NOT USED
	EWsPanicPointerRepeatTimerStatus = 21,
	EWsPanicCheckEventQueue = 22,
	EWsPanicEventQueueCopy = 23,
	EWsPanicFontCacheCount = 24,
	//EWsPanicNegativeShadow = 25,
	EWsPanicPointerClaimGrab = 26,
	EWsPanicPointerCursorAccessCount = 27,
	EWsPanicSetOrdinalPos = 28,
	EWsPanicGcStructSizeError = 29,
	
	EWsPanicPointerTimer = 30,
	EWsPanicNullDeviceHandle = 31,			//A function returned a NULL device handle unexpectantly
	EWsPanicColorModeInconsitency = 32,		//Logic error while analysing the nature of Color Modes
	EWsPanicCurrentlyFaded = 33,			//Should not do while window is fadded
	EWsPanicEventType = 34,					//Must be a pointer event
	EWsPanicObjectIndexError = 35,			//Object being removed has wrong type
	EWsPanicAnimHasNoWindow = 36,			//This AnimDLL function needs the Anim to have a window
	EWsPanicSpriteAlreadyActive = 37,		//An attempt to activate an active sprite
	EWsPanicAlreadyHaveBackup = 38,			//Getting backup behind when already got it
	EWsPanicSpriteHiddenCount = 39,			//The Sprite's hidden count is inconsistent with the action being performed on it
	
	EWsPanicRawEventsTypeChanged = 40,		//Changes to the Raw Event Type List will probably break this code
	EWsPanicEventHandlerInconsistency = 41,	//The number of things claiming to be event handlers doesn't make sence
	EWsPanicBackupStateError = 42,			//Something has gone wrong with the state of the Backup classes
	EWsPanicRegionNull = 43,				//A region shouldn't be NULL or set to the nullRegion at this point
	//EWsPanicShadowError = 44,				//The shadows have not be updated correctly
	EWsPanicDirectScreenAccess = 45,		//Error in the state machine of or logic error in Direct Screen Access code
	EWsPanicClickPluginNotLoaded = 46,		//Trying to call function in Click PlugIn when there isn't one loaded
	EWsPanicChangeClickPlugin = 47,			//Trying to change keyclick plugin when it's fixed
	EWsPanicInvalidScreenSizeMode = 48,		//The current screen size mode is one that does not exist
	EWsPanicDrawCommandsBufferCorrupt = 49,	//The draw commands buffer contains some inconsistent information
	
	EWsPanicDrawCommandsInvalidState = 50,	//The draw commands state doesn't match with the action that is occuring
	EWsPanicDrawCommandsNullSession = 51,	//Session NULL when it shouldn't be
	EWsPanicBitmapOpcodeInvalid = 52,		//At least one of the bitmap opcodes is invalid
	EWsPanicNoDisplayModeFound = 53,			//No display mode has been found when creating the off-screen bitmap
	EWsCreatedOffScreenBitmapInWrongDimensions = 54,	//There is not enough memory to swap the width and the height as the bitmap was not created with the right dimensions
	EWsFailedToAllocateForOffScreenBitmapDevice = 55,	//Couldn't allocate memory for the device after deleting it
	EWsPanicTransparentInvalidState = 56,				//Something required for transparency is not available
	EWsPanicBadDescriptor = 57,							//The descriptor has been badly constructed
	EWsPanicAlphaBlendBadParams = 58,		//Bad parameters were passed in our call to the Alpha Blending function
	EWsPanicInvalidMessageHandle = 59,		//The current screen size mode is one that does not exist	
	
	EWsPanicWindowNull = 60,				//Window handle NULL when it shouldn't be
	EWsPanicPanicFlagError = 61,			//The panic flag setting is inconsistent with other information
	EWsPanicGCDrawingToWrongDevice = 62,	//The device a GC is drawing to has been changed unexpectantly.
	EWsPanicScreenInformationError = 63,	//Conflict between number of screens defined in INI file and HAL
	EWsPanicGroupWindowChainError = 64,		//An error has occured in the group window chain algorithms
	EWsPanicNoScreen = 65,					//There is no screen when there should be one
	EWsPanicWrongNumberBitmapDevices = 66,	//The number of OSB bitmap devices does not match the number of screen modes
	EWsPanicHiddenInvalidError = 67,		//The Hidden Invalid contains area outside of the FullRect of the window
	EWsPanicWsGraphic = 68,					//An issue in internal state in the CWsGraphicDrawer mechanisms, thrown in debug builds only
	EWsPanicOffScreenBitmapMissing = 69,	//Found an unexpected NULL pointer to an OffScreenBitmap
	
	EWsPanicGCDrawRegionError = 70,//NOT USED//A logic error in the code to decide which region to be drawing too
	EWsPanicFailedToSetThread = 71, 		//Setting wserv thread to system permananent is failed 
	EWsPanicAnimationNotScheduled = 72,		//Animation ran when not scheduled
	EWsPanicAnimationAlreadyAnimating = 73,	//Animation already marked as animating
	EWsPanicSpriteBitmapSizeChange = 74,	//A sprite member bitmap has been made larger, since the sprite was activated, without calling UpdateMember
	EWsPanicMsgQueueError = 75, 			//Error occurs if inactive message queue doesn't have expected number of messages
	EWsPanicRedrawRegionArrayEmpty = 76,	//Trying to retrieve the current redraw region when the redraw region array is empty
	EWsPanicIllegalInvalidArea = 77,		//Invalid area includes region outside visible area of the window.
//	EWsPanicTransparencyManagerNotFreed = 78, // incorrect session shutdown
//	EWsPanicFailedToSetProcess = 79,	   	//For future extention
	EWsPanicDebugRegionMemoryLeak = 80,		//Panic code for RRegionWserv memory leak
	EWsPanicDefaultHotKeyNotFound = 81,		//Default hot key was not found
//	EWsPanicInvalidRedrawStoreDiscardParameter = 82,	 // Invalid parameter specified for redraw store discard detection algorithm.
//	EWsPanicOverflowRedrawStoreDiscardParameter = 83, // Parameter specified for redraw store discard detection algorithm will cause overflow.
	EwsPanicDisplayModeNotSupported = 84,	//Display mode is not supported by screen
	EWsPanicCommandBufferStillBeingProcessed = 85, //Previous command buffer still being processed when another one arrives
	EWsPanicNullClientMessage = 86,			//Processing a client message that is NULL
	EWsPanicNoWindowElement = 87,			//Element not found for window
	EWsPanicInvalidNotificationFlag = 88,	//Invalid Notification event
	EWsPanicNotificationTableIsNull = 89,	//Notification table is unexpectedly NULL
	EWsPanicInvalidOperation = 90,			//An internal use of an operation was invalid
	EWsPanicCompositionNotSupported = 91,			//An attempt to use compositor on a screen which doesn't support it XXX UNUSED??
	EWsPanicCompositionErrorIgnored = 92,			//In release the composition error would have been ignored. Occurs in debug builds only. XXX UNUSED??
	EWsPanicExpectedSurfaceChange = 93,		//Surfaces returned by different screen devices unexpectedly match
	EWsPanicSurfaceMapError = 94,			//There was a problem when unregistering a surface from the registered surface map.
	EWsPanicScheduledRedraw = 95,			//Something went horribly wrong in the redraw scheduling code
	EWsPanicRedrawSegmentsInvalidState = 96, //The redraw segments are in a state they should never be able to reach
	EWsPanicMemoryManager = 97,				//The memory manager encountered an inconsistant environment somehow
	EWsPanicAccessList = 98,				//The access list is invalid
	EWsPanicScreenFallback = 99,			//The screens low memory fallback system has failed
	
	EWsPanicActiveScheduler = 100,			//The active scheduler encountered an inconsistant environment somehow
	EWsPanicDrawFailure = 101,				//A draw function which can't leave left
	EWsPanicMemoryLock = 102,				//The memory lock/unlock for memory management failed
	
	EWsPanicRecycleElement = 103,			//No element to recycle
	EWsPanicUnexpectedOpacity = 104,		//Unexpected opacity being set on a window
	EWsPanicMaxPointersOutOfRange = 105,	//HALData::EPointerMaxPointers is out of range
	EWsPanicMaxPointersInconsistent = 106,  //HALData::EPointerMaxPointers is inconsistent with TXYInputType reported by HAL
	EWsPanicPointer3DInconsistent = 107,	//HALData::EPointer3D is inconsistent with TXYInputType reported by HAL
	EWsPanicProxThresholdsInconsist = 108,	//HALData::EPointer3DEnterCloseProximityThreshold is settable, but EPointer3DExitCloseProximityThreshold is not
	EWsPanicPressThresholdsInconsist = 109,	//HALData::EPointer3DEnterHighPressureThreshold is settable, EPointer3DExitHighPressureThreshold is not
	EWsPanicScreenDeviceMissing = 110,		//Can't find an instance of MWsScreenDevice
	EWsPanicSceneMissing = 111,				//Can't find an instance of MWsScene
	EWsPanicNoRenderStagePipeline = 112,	//Failed to create/connect the render stage pipeline
	EWsPanicInvalidChromaKeyColor = 113,	//Chroma key color has to be fully opaque
	EWsPanicTextCursorInterfaceMissing = 114,	//The interface in the Render Stage to support Text Cursors is missing
	EWsPanicSceneErrorIgnored = 115,		//In release the scene error would have been ignored. Occurs in debug builds only.
	EWsPanicNoDisplayControl = 116,	//Display control expected
	EWsPanicVisibleRegionTracking = 117,
	EWsPanicNoChangetracking = 118,			//CHANGETRACKING mode is expected to be set
	EWsPanicNoSprite = 119,
	EWsPanicAnim = 120,
	EWsPanicFloatingSprite = 121,
	EWsPanicRenderstageAPIs = 122,
	EWsPanicBitmapArrayNotEmpty = 123,      //Bitmap array is not empty, when it is expected to be empty
	EWsPanicCounterValue = 124,             //Counter value is not the expected one
	EWsPanicUnexpectedBitmapHandleInArray = 125,     //Bitmap handle in array with no matching bitmap object in bitmap ref array
	EWsPanicBitmapNotFound = 126,           //Failed to find a bitmap in the bitmap ref array
	EWsPanicInvalidRotation = 127,			//Invalid rotation used
	EWsPanicInvalidPointerOffset = 128,      //The pointer offset value in wsini.ini is invalid.
	EWsPanicArrayInsertFailed = 129,	//Array insert failed.           
	EWsPanicCompleteNullMessage = 130,		//RMessage2 is NULL prior to calling Complete().
	};

void Panic(TWservPanic aPanic);
void PanicWithInfo(TWservPanic aPanic, const TDesC& aFileName, const TDesC& aPanicName, TInt aLine);
void PanicWithCondAndInfo(TWservPanic aPanic, const TDesC& aCondition, const TDesC& aFileName, const TDesC& aPanicName, TInt aLine);

// helper macros
#define WS_ASSERT_FILENAME(f)	_LIT(KPanicFileName, f);
#define WS_ASSERT_PANICNAME(p)	_LIT(KPanicEnum ## p, # p);
#define WS_ASSERT_CONDITION(c)	_LIT(KPanicCondition, c);


/* Use these macros for WServ server Asserts & Panics with diagnostic logging:
   WS_ASSERT_ALWAYS, WS_PANIC_ALWAYS, WS_ASSERT_DEBUG and WS_PANIC_DEBUG
   Note that the "do { ... } while (0)" construction forces the invocation to have a ';'
   and makes the macro expansion safe in nested "if ... else ..." clauses that forget to use the
   { braces } in the Coding Standard.
 */
#define WS_ASSERT_ALWAYS(c, p) \
		do  { \
			if (!(c)) \
				{ \
				WS_ASSERT_FILENAME(__FILE__); \
				WS_ASSERT_PANICNAME(p); \
				WS_ASSERT_CONDITION(#c); \
				PanicWithCondAndInfo(p, KPanicCondition, KPanicFileName, KPanicEnum ## p, __LINE__); \
				} \
			} while (0)

#define WS_PANIC_ALWAYS(p) \
		do  { \
			WS_ASSERT_FILENAME(__FILE__); \
			WS_ASSERT_PANICNAME(p); \
			PanicWithInfo(p, KPanicFileName, KPanicEnum ## p, __LINE__); \
			} while (0)


#if defined(_DEBUG)
#define WS_ASSERT_DEBUG(c, p) \
		do  { \
			if (!(c)) \
				{ \
				WS_ASSERT_FILENAME(__FILE__); \
				WS_ASSERT_PANICNAME(p); \
				WS_ASSERT_CONDITION(#c); \
				PanicWithCondAndInfo(p, KPanicCondition, KPanicFileName, KPanicEnum ## p, __LINE__); \
				} \
			} while (0)

#define WS_PANIC_DEBUG(p) \
		do  { \
			WS_ASSERT_FILENAME(__FILE__); \
			WS_ASSERT_PANICNAME(p); \
			PanicWithInfo(p, KPanicFileName, KPanicEnum ## p, __LINE__); \
			} while (0)
#else
#define WS_ASSERT_DEBUG(c, p)
#define WS_PANIC_DEBUG(p)
#endif


#endif