diff -r 57c618273d5c -r bbf46f59e123 egl/egltest/endpointtestsuite/automated/inc/eglendpointwrap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/egltest/endpointtestsuite/automated/inc/eglendpointwrap.h Tue Aug 31 16:31:06 2010 +0300 @@ -0,0 +1,85 @@ +// 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: + + +/** + @file + @test + @internalComponent - Internal Symbian test code +*/ + + +#ifndef __EGLENDPOINTWRAP_H__ +#define __EGLENDPOINTWRAP_H__ + + +#include +#include +#include + + +//generic function pointer +typedef void (*TAnyFuncPtr)(...); + + +/* + * TEglEndpointWrap is a simple class that presents all of the EGL endpoint + * extension functions without the user needing to perform an eglGetProcAddress() + * to obtain the function pointer. Each endpoint member function takes the same + * arguments as the EGL functions and returns the same types. After before first + * use, you should check the Error() function to ensure that all function pointers + * were resolved. Trying to use one of the endpoint functions in the event of a + * construction error will result in a panic. + */ +class TEglEndpointWrap + { +public: + TEglEndpointWrap(); + TInt Error() const; + + //endpoint functions + EGLEndpointNOK CreateEndpoint(EGLDisplay dpy, EGLenum type, EGLenum source_type, EGLEndpointSourceNOK source, const EGLint *attrib_list) const; + EGLBoolean DestroyEndpoint(EGLDisplay dpy, EGLEndpointNOK endpoint) const; + EGLint GetEndpointAttrib(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint attrib) const; + EGLBoolean SetEndpointAttrib(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint attrib, EGLint value) const; + EGLBoolean EndpointBeginStreaming(EGLDisplay dpy, EGLEndpointNOK endpoint) const; + EGLBoolean EndpointEndStreaming(EGLDisplay dpy, EGLEndpointNOK endpoint) const; + EGLImageKHR AcquireImage(EGLDisplay dpy, EGLEndpointNOK endpoint) const; + EGLBoolean ReleaseImage(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLImageKHR image, EGLenum api) const; + EGLint GetEndpointDirtyArea(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLint* rects, EGLint start_rect, EGLint max_rects, EGLBoolean collapse) const; + EGLBoolean EndpointRequestNotification(EGLDisplay dpy, EGLEndpointNOK endpoint, EGLTRequestStatusNOK sync) const; + EGLBoolean EndpointCancelNotification(EGLDisplay dpy, EGLEndpointNOK endpoint) const; + EGLBoolean DestroyImage(EGLDisplay dpy, EGLImageKHR image) const; + +private: + TAnyFuncPtr ProcAddressL(const char* aProcName) const; + +private: + TInt iError; + + //enpoint function pointers + PFNEGLCREATEENDPOINTNOKPROC ipfnEglCreateEndpointNOK; + PFNEGLDESTROYENDPOINTNOKPROC ipfnEglDestroyEndpointNOK; + PFNEGLGETENDPOINTATTRIBNOKPROC ipfnEglGetEndpointAttribNOK; + PFNEGLSETENDPOINTATTRIBNOKPROC ipfnEglSetEndpointAttribNOK; + PFNEGLENDPOINTBEGINSTREAMINGNOKPROC ipfnEglEndpointBeginStreamingNOK; + PFNEGLENDPOINTENDSTREAMINGNOKPROC ipfnEglEndpointEndStreamingNOK; + PFNEGLACQUIREIMAGENOKPROC ipfnEglAcquireImageNOK; + PFNEGLRELEASEIMAGENOKPROC ipfnEglReleaseImageNOK; + PFNEGLGETENDPOINTDIRTYAREANOKPROC ipfnEglGetEndpointDirtyAreaNOK; + PFNEGLENDPOINTREQUESTNOTIFICATIONNOKPROC ipfnEglEndpointRequestNotificationNOK; + PFNEGLENDPOINTCANCELNOTIFICATIONNOKPROC ipfnEglEndpointCancelNotificationNOK; + PFNEGLDESTROYIMAGEKHRPROC ipfnEglDestroyImageKHR; + }; + + +#endif