diff -r 000000000000 -r 5d03bc08d59c graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicscomposition/openwfsupport/test/tstreamoperation/tnativestream.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,238 @@ +// Copyright (c) 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: +// Test class for interop implementation of NativeStream +// +// + +#ifndef TESTNATIVESTREAM_H +#define TESTNATIVESTREAM_H + +// INCLUDES +#include +#include +#include +#include "surfaceutility.h" + +#include +class CTestExecuteLogger; +class CSurfaceStream; + +template +class SafePointer + { +public: + SafePointer(LoggerOwner* aOwner,Referee* aReferee=NULL): + iOwner(aOwner), iReferee(aReferee) + {} + Referee* operator=(Referee* aReferee) + { + return iReferee=aReferee; + } + Referee*& operator()() + { + return iReferee; + } + Referee* operator->() + { + if (iReferee==NULL) + { + iOwner -> INFO_PRINTF1(_L("Tried to dereference a pointer that is null!")); + User::Panic(_L("null pointer"),__LINE__); + } + return iReferee; + } +private: + LoggerOwner* iOwner; + Referee* iReferee; + }; + + +// MAIN CLASS DECLARATION + +class TGlobalNativeStreamVar + { +public: + static const TGlobalNativeStreamVar& Instance(); + + void SetSurfaceID(TSurfaceId aSurfaceID); + void SetTestComplete (TBool aTestComplete); + void SetBuffers (TInt aBuffers); + + TSurfaceId SurfaceID() const; + TBool TestComplete() const; + TInt Buffers() const; + +public: + TSurfaceId iSurfaceID; + TBool iTestComplete; + TInt iBuffers; + TInt iMultithreadCounter; + }; + +struct TCallbackData + { + SymbianStreamType iStream; + TInt32 iEvent; + TAny* iData; + }; + +/** + * CTestNativeStream + * + */ +class CTestNativeStream : public CTestFixture + { +public: + // Constructors and destructor + + /** + * Constructor for performing 1st stage construction + */ + CTestNativeStream(); + + /** + * Destructor. + */ + ~CTestNativeStream(); + + /** + * test Suite furniture + **/ + virtual void SetupL(); + + /** + * test Suite furniture + **/ + virtual void TearDownL(); + + + /** + * test Suite furniture + **/ + static CTestSuite* CreateSuiteL(const TDesC& aName); + + /** + * Checks acquire or find native streams operations + **/ + SymbianStreamType NsCheckL(const TSurfaceId aId, TInt aCheck, TBool aFind); + + /** + * For concurrent tests, create a shared stream for all threads to access. + */ + void CreateSharedNativeStreamL(TInt aBuffers); + + /** + * For concurrent tests, destroy the shared stream. + */ + void DestroySharedNativeStreamL(); + + static void SourceStreamUpdatedCallback(SymbianStreamType aNs, + khronos_int32_t aEvents, void* aData, void* aParam); + + void CheckSourceStreamUpdated(SymbianStreamType aNs, void* aParam); + void RemoveNsNotifications(); + + /** + * A helper function that returns the bytes per pixel for a given pixel format UID + * @param aPixelFormat Pixel format UID to convert + * @return Positive: bytes per pixel; negative is pixels per byte; 0 is error + */ + + TInt BytesPerPixel(TUidPixelFormat aPixelFormat); + +private: + // Private tests + void GRAPHICS_OPENWFC_NATIVESTREAM_0100L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0101L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0102L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0103L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0104L(TInt aNumBuffers); + void GRAPHICS_OPENWFC_NATIVESTREAM_0105L(TInt aNumBuffers); + void GRAPHICS_OPENWFC_NATIVESTREAM_0106L(TInt aNumBuffers); + void GRAPHICS_OPENWFC_NATIVESTREAM_0107_1L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0107_2L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0107_3L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0108L(TInt aNumBuffers); + void GRAPHICS_OPENWFC_NATIVESTREAM_0109L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0110L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0111L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0112_1L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0112_2L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0112_3L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0112_4L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0113L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0114L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0115L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0116L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0117_1L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0117_2L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0117_3L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0117_4L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0118_1L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0118_2L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0118_3L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0118_4L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0119_1L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0119_2L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0119_3L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0120_1L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0120_2L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0120_3L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0122L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0130L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0131L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0132L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0133L(); + void GRAPHICS_OPENWFC_NATIVESTREAM_0140L(TInt aNumBuffers); + void GRAPHICS_OPENWFC_NATIVESTREAM_0141L(TInt aNumBuffers); + void GRAPHICS_OPENWFC_NATIVESTREAM_0142L(); + +private: + + struct OWF_IMAGE_FORMAT; + TSurfaceId helperCreateSurfaceL(khronos_int32_t width, + khronos_int32_t height, + const OWF_IMAGE_FORMAT* format, + khronos_int32_t nbufs, + TUidPixelFormat overridePixelFormat = EUidPixelFormatUnknown); + + SymbianStreamType helperCreateImageStream(khronos_int32_t width, + khronos_int32_t height, + const OWF_IMAGE_FORMAT* format, + khronos_int32_t nbufs, + TUidPixelFormat overridePixelFormat = EUidPixelFormatUnknown); + +private: + //data + SafePointer iUtility; + khronos_int32_t iExpectedSourceStreamUpdatedEventMask; + khronos_int32_t iImmediateAvailable; + khronos_int32_t iImmediateVisible; + khronos_int32_t iStreamUpdatedParameter; + khronos_int32_t iStreamUpdatedSerialNumber; + SymbianStreamType iNs; + TInt32 iScreenNo; + void* iObserverAvailableParameter; + void* iObserverDisplayedParameter; + void* iObserverDisplayedXParameter; + khronos_int32_t iSourceStreamUpdatedCalled; + khronos_int32_t iContextUpdatedFlags; +public: + static CTestNativeStream* iTester; + }; + +_LIT(KComposeThreadSemaphore, "Composer Thread Semaphore"); +_LIT(KMainThreadSemaphore, "Main Thread Semaphore"); + +#endif // TESTNATIVESTREAM_H