windowing/windowserver/test/t_eventchecker/src/graphicscontextchecker.cpp
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/test/t_eventchecker/src/graphicscontextchecker.cpp	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,585 @@
+// Copyright (c) 2008-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:
+//
+
+#include "graphicscontextchecker.h"
+#include "panics.h"
+
+#define CHECK_TEXTCURSOR() \
+	CHK_ASSERT_ALWAYS(iTextCursor, EEventCheckerPanicUsingMWsTextCursorAfterEnd)
+
+#define CHECK_FADER() \
+	CHK_ASSERT_ALWAYS(iFader, EEventCheckerPanicUsingMWsFaderAfterEnd)
+
+#define CHECK_DRAWING_TARGET() \
+	CHK_ASSERT_ALWAYS(iTarget != ETargetNone, EEventCheckerPanicDrawingWithoutTarget)
+		
+#define CHECK_GC_AND_DRAWING_TARGET() \
+	do { \
+		CHK_ASSERT_ALWAYS(iContext, EEventCheckerPanicUsingMWsGraphicsContextAfterEnd); \
+		CHECK_DRAWING_TARGET(); \
+	} while(EFalse)
+
+#define CHECK_TEXTCURSOR_AND_DRAWING_TARGET() \
+	do { \
+		CHECK_TEXTCURSOR(); \
+		CHECK_DRAWING_TARGET(); \
+	} while(EFalse)
+
+#define CHECK_FADER_AND_DRAWING_TARGET() \
+	do { \
+		CHECK_FADER(); \
+		CHECK_DRAWING_TARGET(); \
+	} while(EFalse)
+
+CGraphicsContextChecker* CGraphicsContextChecker::NewL(MWsGraphicDrawerEnvironment& /*aEnv*/)
+	{
+	CGraphicsContextChecker* self = new(ELeave) CGraphicsContextChecker();
+	return self;
+	}
+
+CGraphicsContextChecker::CGraphicsContextChecker()
+	: iTarget(ETargetNone)
+	{
+	}
+
+CGraphicsContextChecker::~CGraphicsContextChecker()
+	{
+	iContext = NULL;
+	iTextCursor = NULL;
+	iFader = NULL;
+	}
+
+void CGraphicsContextChecker::SetGraphicsContext(MWsGraphicsContext* aGraphicsContext)
+	{
+	iContext = aGraphicsContext;
+	}
+
+const MWsGraphicsContext* CGraphicsContextChecker::GraphicsContext() const
+	{
+	return iContext;
+	}
+
+void CGraphicsContextChecker::SetTextCursor(MWsTextCursor* aTextCursor)
+	{
+	iTextCursor = aTextCursor;
+	}
+
+const MWsTextCursor* CGraphicsContextChecker::TextCursor() const
+	{
+	return iTextCursor;
+	}
+
+void CGraphicsContextChecker::SetFader(MWsFader* aFader)
+	{
+	iFader = aFader;
+	}
+
+const MWsFader* CGraphicsContextChecker::Fader() const
+	{
+	return iFader;
+	}
+
+TAny* CGraphicsContextChecker::ResolveObjectInterface(TUint aTypeId)
+	{
+	if(aTypeId == MWsDrawAnnotationObserver::EWsObjectInterfaceId)
+		return static_cast<MWsDrawAnnotationObserver*>(this);
+		
+	//The remaining part of this method isn't exactly beautiful since we are merging three object
+	//provider interfaces into one object, so we have no way of knowing 
+	//which interface this method was called on.
+	//however, aTypeId is a unique id and the chance that multiple
+	//mixins implement the same extension is slim
+	TAny* interface = NULL;
+	if(!interface && iContext)
+		interface = iContext->ResolveObjectInterface(aTypeId);
+	if(!interface && iTextCursor)
+		interface = iTextCursor->ResolveObjectInterface(aTypeId);
+	if(!interface && iFader)
+		interface = iFader->ResolveObjectInterface(aTypeId);
+	return interface;
+	}
+
+void CGraphicsContextChecker::BitBlt(const TPoint& aDestPos, const CFbsBitmap& aSourceBitmap)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->BitBlt(aDestPos, aSourceBitmap);
+	}
+
+void CGraphicsContextChecker::BitBlt(const TPoint& aDestPos, const CFbsBitmap& aSourceBitmap, const TRect& aSourceRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->BitBlt(aDestPos, aSourceBitmap, aSourceRect);
+	}
+
+void CGraphicsContextChecker::BitBltMasked(const TPoint& aDestPos, const CFbsBitmap& aSourceBitmap, const TRect& aSourceRect, const CFbsBitmap& aMaskBitmap, TBool aInvertMask)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->BitBltMasked(aDestPos, aSourceBitmap, aSourceRect, aMaskBitmap, aInvertMask);
+	}
+
+void CGraphicsContextChecker::BitBltMasked(const TPoint& aDestPos, const CFbsBitmap& aSourceBitmap, const TRect& aSourceRect, const CFbsBitmap& aMaskBitmap, const TPoint& aMaskPos)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->BitBltMasked(aDestPos, aSourceBitmap, aSourceRect, aMaskBitmap, aMaskPos);
+	}
+
+void CGraphicsContextChecker::ResetClippingRegion()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->ResetClippingRegion();
+	}
+
+void CGraphicsContextChecker::Clear()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->Clear();
+	}
+
+void CGraphicsContextChecker::Clear(const TRect& aRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->Clear(aRect);
+	}
+
+void CGraphicsContextChecker::ResetBrushPattern()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->ResetBrushPattern();
+	}
+
+void CGraphicsContextChecker::ResetFont()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->ResetFont();
+	}
+
+void CGraphicsContextChecker::DrawArc(const TRect& aRect, const TPoint& aStart, const TPoint& aEnd)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawArc(aRect, aStart, aEnd);
+	}
+
+void CGraphicsContextChecker::DrawPie(const TRect& aRect, const TPoint& aStart, const TPoint& aEnd)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawPie(aRect, aStart, aEnd);
+	}
+
+void CGraphicsContextChecker::DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aSourceBitmap)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawBitmap(aDestRect, aSourceBitmap);
+	}
+
+void CGraphicsContextChecker::DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aSourceBitmap, const TRect& aSourceRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawBitmap(aDestRect,	aSourceBitmap, aSourceRect);
+	}
+
+void CGraphicsContextChecker::DrawBitmapMasked(const TRect& aDestRect, const CFbsBitmap& aSourceBitmap, const TRect& aSourceRect, const CFbsBitmap& aMaskBitmap, TBool aInvertMask)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawBitmapMasked(aDestRect, aSourceBitmap, aSourceRect, aMaskBitmap, aInvertMask);
+	}
+
+void CGraphicsContextChecker::DrawRoundRect(const TRect& aRect, const TSize& aEllipse)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawRoundRect(aRect, aEllipse);
+	}
+
+void CGraphicsContextChecker::DrawPolyLine(const TArray<TPoint>& aPointList)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawPolyLine(aPointList);
+	}
+
+void CGraphicsContextChecker::DrawPolyLineNoEndPoint(const TArray<TPoint>& aPointList)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawPolyLineNoEndPoint(aPointList);
+	}
+
+void CGraphicsContextChecker::DrawPolygon(const TArray<TPoint>& aPointList, TFillRule aFillRule)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawPolygon(aPointList, aFillRule);
+	}
+
+void CGraphicsContextChecker::DrawEllipse(const TRect& aRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawEllipse(aRect);
+	}
+
+void CGraphicsContextChecker::DrawLine(const TPoint& aStart, const TPoint& aEnd)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawLine(aStart, aEnd);
+	}
+
+void CGraphicsContextChecker::DrawLineTo(const TPoint& aPoint)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawLineTo(aPoint);
+	}
+
+void CGraphicsContextChecker::DrawLineBy(const TPoint& aVector)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawLineBy(aVector);
+	}
+
+void CGraphicsContextChecker::DrawRect(const TRect& aRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawRect(aRect);
+	}
+
+void CGraphicsContextChecker::DrawText(const TDesC& aText, const TTextParameters* aParam)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawText(aText, aParam);
+	}
+
+void CGraphicsContextChecker::DrawText(const TDesC& aText, const TTextParameters* aParam, const TPoint& aPosition)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawText(aText, aParam, aPosition);
+	}
+
+void CGraphicsContextChecker::DrawText(const TDesC& aText, const TTextParameters* aParam, const TRect& aClipRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawText(aText, aParam, aClipRect);
+	}
+
+void CGraphicsContextChecker::DrawText(const TDesC& aText, const TTextParameters* aParam, const TRect& aClipFillRect, TInt aBaselineOffset, TTextAlign aHrz, TInt aMargin)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawText(aText, aParam, aClipFillRect, aBaselineOffset, aHrz, aMargin);
+	}
+
+void CGraphicsContextChecker::DrawTextVertical(const TDesC& aText, const TTextParameters* aParam, TBool aUp)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawTextVertical(aText, aParam, aUp);
+	}
+
+void CGraphicsContextChecker::DrawTextVertical(const TDesC& aText, const TTextParameters* aParam, const TPoint& aPosition, TBool aUp)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawTextVertical(aText, aParam, aPosition, aUp);
+	}
+
+void CGraphicsContextChecker::DrawTextVertical(const TDesC& aText, const TTextParameters* aParam, const TRect& aClipRect, TBool aUp)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawTextVertical(aText, aParam, aClipRect, aUp);
+	}
+
+void CGraphicsContextChecker::DrawTextVertical(const TDesC& aText, const TTextParameters* aParam, const TRect& aClipRect, TInt aBaselineOffset, TBool aUp, TTextAlign aVert, TInt aMargin)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawTextVertical(aText, aParam, aClipRect, aBaselineOffset, aUp, aVert, aMargin);
+	}
+
+void CGraphicsContextChecker::DrawTextVertical(const TDesC& aText, const TTextParameters* aParam, const TRect& aClipRect, TInt aBaselineOffset, TInt aTextWidth, TBool aUp, TTextAlign aVert, TInt aMargin)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->DrawTextVertical(aText, aParam, aClipRect, aBaselineOffset, aTextWidth, aUp, aVert, aMargin);
+	}
+
+void CGraphicsContextChecker::MoveTo(const TPoint& aPoint)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->MoveTo(aPoint);
+	}
+
+void CGraphicsContextChecker::MoveBy(const TPoint& aVector)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->MoveBy(aVector);
+	}
+
+void CGraphicsContextChecker::Plot(const TPoint& aPoint)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->Plot(aPoint);
+	}
+
+void CGraphicsContextChecker::Reset()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->Reset();
+	}
+
+void CGraphicsContextChecker::SetBrushColor(const TRgb& aColor)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetBrushColor(aColor);
+	}
+
+void CGraphicsContextChecker::SetBrushOrigin(const TPoint& aOrigin)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetBrushOrigin(aOrigin);
+	}
+
+void CGraphicsContextChecker::SetBrushStyle(TBrushStyle aBrushStyle)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetBrushStyle(aBrushStyle);
+	}
+
+void CGraphicsContextChecker::SetClippingRegion(const TRegion& aRegion)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetClippingRegion(aRegion);
+	}
+
+void CGraphicsContextChecker::SetDrawMode(TDrawMode aDrawMode)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetDrawMode(aDrawMode);
+	}
+
+void CGraphicsContextChecker::SetOrigin(const TPoint& aPoint)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetOrigin(aPoint);
+	}
+
+void CGraphicsContextChecker::SetPenColor(const TRgb& aColor)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetPenColor(aColor);
+	}
+
+void CGraphicsContextChecker::SetPenStyle(TPenStyle aPenStyle)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetPenStyle(aPenStyle);
+	}
+
+void CGraphicsContextChecker::SetPenSize(const TSize& aSize)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetPenSize(aSize);
+	}
+
+void CGraphicsContextChecker::SetTextShadowColor(const TRgb& aColor)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetTextShadowColor(aColor);
+	}
+
+void CGraphicsContextChecker::SetCharJustification(TInt aExcessWidth, TInt aNumChars)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetCharJustification(aExcessWidth, aNumChars);
+	}
+
+void CGraphicsContextChecker::SetWordJustification(TInt aExcessWidth, TInt aNumGaps)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetWordJustification(aExcessWidth, aNumGaps);
+	}
+
+void CGraphicsContextChecker::SetUnderlineStyle(TFontUnderline aUnderlineStyle)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetUnderlineStyle(aUnderlineStyle);
+	}
+
+void CGraphicsContextChecker::SetStrikethroughStyle(TFontStrikethrough aStrikethroughStyle)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetStrikethroughStyle(aStrikethroughStyle);
+	}
+
+void CGraphicsContextChecker::SetBrushPattern(const CFbsBitmap& aBitmap)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetBrushPattern(aBitmap);
+	}
+
+void CGraphicsContextChecker::SetBrushPattern(TInt aFbsBitmapHandle)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetBrushPattern(aFbsBitmapHandle);
+	}
+
+void CGraphicsContextChecker::SetFont(const CFont* aFont)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetFont(aFont);
+	}
+
+void CGraphicsContextChecker::CopyRect(const TPoint& aOffset, const TRect& aRect)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->CopyRect(aOffset, aRect);
+	}
+
+void CGraphicsContextChecker::UpdateJustification(const TDesC& aText, const TTextParameters* aParam)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->UpdateJustification(aText, aParam);
+	}
+
+void CGraphicsContextChecker::UpdateJustificationVertical(const TDesC& aText, const TTextParameters* aParam, TBool aUp)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->UpdateJustificationVertical(aText, aParam, aUp);
+	}
+
+void CGraphicsContextChecker::SetFontNoDuplicate(const CFont* aFont)
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->SetFontNoDuplicate(aFont);
+	}
+
+TBool CGraphicsContextChecker::HasBrushPattern() const
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->HasBrushPattern();
+	}
+
+TBool CGraphicsContextChecker::HasFont() const
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->HasFont();
+	}
+
+TRgb CGraphicsContextChecker::BrushColor() const
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->BrushColor();
+	}
+
+TRgb CGraphicsContextChecker::PenColor() const
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->PenColor();
+	}
+
+TRgb CGraphicsContextChecker::TextShadowColor() const
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->TextShadowColor();
+	}
+
+TInt CGraphicsContextChecker::GetError()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->GetError();
+	}
+
+TPoint CGraphicsContextChecker::Origin() const
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->Origin();
+	}
+
+const TRegion& CGraphicsContextChecker::ClippingRegion()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->ClippingRegion();
+	}
+
+TInt CGraphicsContextChecker::Push()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	return iContext->Push();
+	}
+
+void CGraphicsContextChecker::Pop()
+	{
+	CHECK_GC_AND_DRAWING_TARGET();
+	iContext->Pop();
+	}
+
+void CGraphicsContextChecker::DrawTextCursor(const TTextCursorInfo& aTextCursorInfo)
+	{
+	//CHECK_TEXTCURSOR_AND_DRAWING_TARGET();
+	CHECK_TEXTCURSOR();
+	iTextCursor->DrawTextCursor(aTextCursorInfo);
+	}
+
+void CGraphicsContextChecker::SetFadingParameters(const TDesC8& aData)
+	{
+	CHECK_FADER_AND_DRAWING_TARGET();
+	iFader->SetFadingParameters(aData);
+	}
+
+void CGraphicsContextChecker::FadeArea(const TRegion& aRegion)
+	{
+	CHECK_FADER_AND_DRAWING_TARGET();
+	iFader->FadeArea(aRegion);
+	}
+
+void CGraphicsContextChecker::WindowRedrawStart(const MWsWindowTreeNode& /*aWindowTreeNode*/, const TRegion& /*aRegion*/)
+	{
+	CHK_ASSERT_ALWAYS(iTarget == ETargetNone, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	iTarget = ETargetWindow;
+	}
+
+void CGraphicsContextChecker::WindowRedrawEnd(const MWsWindowTreeNode& /*aWindowTreeNode*/)
+	{
+	CHK_ASSERT_ALWAYS(iTarget == ETargetWindow, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	iTarget = ETargetNone;
+	}
+
+void CGraphicsContextChecker::WindowAnimRedrawStart(const MWsWindowTreeNode& /*aWindowTreeNode*/, const TRegion& /*aRegion*/)
+	{
+	CHK_ASSERT_ALWAYS(iTarget == ETargetNone, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	iTarget = ETargetWindowAnim;
+	}
+
+void CGraphicsContextChecker::WindowAnimRedrawEnd(const MWsWindowTreeNode& /*aWindowTreeNode*/)
+	{
+	CHK_ASSERT_ALWAYS(iTarget == ETargetWindowAnim, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	iTarget = ETargetNone;
+	}
+
+void CGraphicsContextChecker::SpriteRedrawStart(const MWsWindowTreeNode& aWindowTreeNode, const TRegion& /*aRegion*/)
+	{
+	CHK_ASSERT_ALWAYS(iTarget==ETargetNone, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	iTarget = (aWindowTreeNode.ParentNode()->NodeType() == MWsWindowTreeNode::EWinTreeNodeRoot) ? ETargetFloatingSprite : ETargetWindowSprite;	
+	}
+
+void CGraphicsContextChecker::SpriteRedrawEnd(const MWsWindowTreeNode& /*aWindowTreeNode*/)
+	{
+	CHK_ASSERT_ALWAYS((iTarget==ETargetFloatingSprite || iTarget==ETargetWindowSprite), EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	iTarget = ETargetNone;
+	}
+
+void CGraphicsContextChecker::SpriteFlash(const MWsWindowTreeNode& /*aWindowTreeNode*/, TBool /*aFlashOn*/)
+	{
+	CHK_ASSERT_ALWAYS((iTarget==ETargetFloatingSprite || iTarget==ETargetWindowSprite), EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	}
+
+void CGraphicsContextChecker::SegmentRedrawStart(const TRegion& /*aRegion*/)
+	{
+	CHK_ASSERT_ALWAYS(iTarget == ETargetWindow, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	}
+
+void CGraphicsContextChecker::SegmentRedrawEnd()
+	{
+	CHK_ASSERT_ALWAYS(iTarget == ETargetWindow, EEventCheckerPanicUnbalancedDrawingTargetEvents);
+	}
+