--- /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