1/* 2 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Google Inc. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 19 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include "config.h" 28 29#if USE(3D_GRAPHICS) 30#include "TemporaryOpenGLSetting.h" 31 32#if USE(OPENGL_ES_2) 33#include <GLES2/gl2.h> 34#include "OpenGLESShims.h" 35#elif PLATFORM(IOS) 36#include <OpenGLES/ES2/gl.h> 37#elif PLATFORM(MAC) 38#include <OpenGL/gl.h> 39#elif PLATFORM(GTK) || PLATFORM(EFL) || PLATFORM(WIN) 40#include "OpenGLShims.h" 41#endif 42 43namespace WebCore { 44 45TemporaryOpenGLSetting::TemporaryOpenGLSetting(GLenum capability, GLenum scopedState) 46 : m_capability(capability) 47 , m_scopedState(scopedState) 48{ 49 m_originalState = ::glIsEnabled(m_capability); 50 if (m_originalState == m_scopedState) 51 return; 52 53 if (GL_TRUE == m_scopedState) 54 ::glEnable(m_capability); 55 else 56 ::glDisable(m_capability); 57} 58 59TemporaryOpenGLSetting::~TemporaryOpenGLSetting() 60{ 61 if (m_originalState == m_scopedState) 62 return; 63 64 if (GL_TRUE == m_originalState) 65 ::glEnable(m_capability); 66 else 67 ::glDisable(m_capability); 68} 69 70} 71 72#endif 73