windowing/windowserver/SERVER/openwfc/panics.h
changeset 0 5d03bc08d59c
child 3 ac96196b945c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/SERVER/openwfc/panics.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,226 @@
+// Copyright (c) 2003-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:
+// 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.           
+	};
+
+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