X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=framework%2Fegl%2FegluUnique.cpp;h=da04c1d17590550cf7078410bfa145ac5faaf168;hb=db0f40414e62da810ee561d5f51bc34902d57f60;hp=8b15fdfd2e37b7be52bb5cfc3237aec1d16b86d8;hpb=108c883ea9a0ec4a3879ef0a94d1b6d9df26e915;p=platform%2Fupstream%2FVK-GL-CTS.git diff --git a/framework/egl/egluUnique.cpp b/framework/egl/egluUnique.cpp index 8b15fdf..da04c1d 100644 --- a/framework/egl/egluUnique.cpp +++ b/framework/egl/egluUnique.cpp @@ -22,14 +22,34 @@ *//*--------------------------------------------------------------------*/ #include "egluUnique.hpp" - -#include "tcuEgl.hpp" +#include "eglwLibrary.hpp" +#include "eglwEnums.hpp" namespace eglu { -UniqueSurface::UniqueSurface (EGLDisplay display, EGLSurface surface) - : m_display (display) +using namespace eglw; + +UniqueDisplay::UniqueDisplay (const Library& egl, EGLDisplay display) + : m_egl (egl) + , m_display (display) +{ +} + +UniqueDisplay::~UniqueDisplay (void) +{ + if (m_display != EGL_NO_DISPLAY) + m_egl.terminate(m_display); +} + +UniqueDisplay::operator bool (void) const +{ + return m_display != EGL_NO_DISPLAY; +} + +UniqueSurface::UniqueSurface (const Library& egl, EGLDisplay display, EGLSurface surface) + : m_egl (egl) + , m_display (display) , m_surface (surface) { } @@ -37,11 +57,17 @@ UniqueSurface::UniqueSurface (EGLDisplay display, EGLSurface surface) UniqueSurface::~UniqueSurface (void) { if (m_surface != EGL_NO_SURFACE) - TCU_CHECK_EGL_CALL(eglDestroySurface(m_display, m_surface)); + m_egl.destroySurface(m_display, m_surface); } -UniqueContext::UniqueContext (EGLDisplay display, EGLContext context) - : m_display (display) +UniqueSurface::operator bool (void) const +{ + return m_surface != EGL_NO_SURFACE; +} + +UniqueContext::UniqueContext (const Library& egl, EGLDisplay display, EGLContext context) + : m_egl (egl) + , m_display (display) , m_context (context) { } @@ -49,31 +75,42 @@ UniqueContext::UniqueContext (EGLDisplay display, EGLContext context) UniqueContext::~UniqueContext (void) { if (m_context != EGL_NO_CONTEXT) - TCU_CHECK_EGL_CALL(eglDestroyContext(m_display, m_context)); + m_egl.destroyContext(m_display, m_context); +} + +UniqueContext::operator bool (void) const +{ + return m_context != EGL_NO_CONTEXT; } -ScopedCurrentContext::ScopedCurrentContext (EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context) - : m_display (display) +ScopedCurrentContext::ScopedCurrentContext (const Library& egl, EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context) + : m_egl (egl) + , m_display (display) { - EGLU_CHECK_CALL(eglMakeCurrent(display, draw, read, context)); + EGLU_CHECK_CALL(m_egl, makeCurrent(display, draw, read, context)); } ScopedCurrentContext::~ScopedCurrentContext (void) { - EGLU_CHECK_CALL(eglMakeCurrent(m_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)); + m_egl.makeCurrent(m_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); } -UniqueImage::UniqueImage (EGLDisplay display, EGLImageKHR image, const ImageFunctions& funcs) - : m_display (display) +UniqueImage::UniqueImage (const Library& egl, EGLDisplay display, EGLImage image) + : m_egl (egl) + , m_display (display) , m_image (image) - , m_funcs (funcs) { } UniqueImage::~UniqueImage (void) { - if (m_image != EGL_NO_IMAGE_KHR) - EGLU_CHECK_CALL(m_funcs.destroyImage(m_display, m_image)); + if (m_image != EGL_NO_IMAGE) + m_egl.destroyImageKHR(m_display, m_image); +} + +UniqueImage::operator bool (void) const +{ + return m_image != EGL_NO_IMAGE; } } // eglu