1 /*------------------------------------------------------------------------- 2 * drawElements Quality Program Tester Core 3 * ---------------------------------------- 4 * 5 * Copyright 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 *//*! 20 * \file 21 * \brief EGL unique resources 22 *//*--------------------------------------------------------------------*/ 23 24 #include "egluUnique.hpp" 25 #include "eglwLibrary.hpp" 26 #include "eglwEnums.hpp" 27 28 namespace eglu 29 { 30 31 using namespace eglw; 32 33 UniqueDisplay::UniqueDisplay (const Library& egl, EGLDisplay display) 34 : m_egl (egl) 35 , m_display (display) 36 { 37 } 38 39 UniqueDisplay::~UniqueDisplay (void) 40 { 41 if (m_display != EGL_NO_DISPLAY) 42 m_egl.terminate(m_display); 43 } 44 45 UniqueDisplay::operator bool (void) const 46 { 47 return m_display != EGL_NO_DISPLAY; 48 } 49 50 UniqueSurface::UniqueSurface (const Library& egl, EGLDisplay display, EGLSurface surface) 51 : m_egl (egl) 52 , m_display (display) 53 , m_surface (surface) 54 { 55 } 56 57 UniqueSurface::~UniqueSurface (void) 58 { 59 if (m_surface != EGL_NO_SURFACE) 60 m_egl.destroySurface(m_display, m_surface); 61 } 62 63 UniqueSurface::operator bool (void) const 64 { 65 return m_surface != EGL_NO_SURFACE; 66 } 67 68 UniqueContext::UniqueContext (const Library& egl, EGLDisplay display, EGLContext context) 69 : m_egl (egl) 70 , m_display (display) 71 , m_context (context) 72 { 73 } 74 75 UniqueContext::~UniqueContext (void) 76 { 77 if (m_context != EGL_NO_CONTEXT) 78 m_egl.destroyContext(m_display, m_context); 79 } 80 81 UniqueContext::operator bool (void) const 82 { 83 return m_context != EGL_NO_CONTEXT; 84 } 85 86 ScopedCurrentContext::ScopedCurrentContext (const Library& egl, EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context) 87 : m_egl (egl) 88 , m_display (display) 89 { 90 EGLU_CHECK_CALL(m_egl, makeCurrent(display, draw, read, context)); 91 } 92 93 ScopedCurrentContext::~ScopedCurrentContext (void) 94 { 95 m_egl.makeCurrent(m_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); 96 } 97 98 UniqueImage::UniqueImage (const Library& egl, EGLDisplay display, EGLImage image) 99 : m_egl (egl) 100 , m_display (display) 101 , m_image (image) 102 { 103 } 104 105 UniqueImage::~UniqueImage (void) 106 { 107 if (m_image != EGL_NO_IMAGE) 108 m_egl.destroyImageKHR(m_display, m_image); 109 } 110 111 UniqueImage::operator bool (void) const 112 { 113 return m_image != EGL_NO_IMAGE; 114 } 115 116 } // eglu 117