// // Copyright(c) 2016 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Thread.cpp : Defines the Thread class which represents a global EGL thread. #include "libANGLE/Thread.h" #include "libANGLE/Context.h" #include "libANGLE/Error.h" namespace egl { Thread::Thread() : mError(EGL_SUCCESS), mAPI(EGL_OPENGL_ES_API), mDisplay(static_cast(EGL_NO_DISPLAY)), mDrawSurface(static_cast(EGL_NO_SURFACE)), mReadSurface(static_cast(EGL_NO_SURFACE)), mContext(static_cast(EGL_NO_CONTEXT)) { } void Thread::setError(const Error &error) { mError = error.getCode(); } EGLint Thread::getError() const { return mError; } void Thread::setAPI(EGLenum api) { mAPI = api; } EGLenum Thread::getAPI() const { return mAPI; } void Thread::setCurrent(Display *display, Surface *drawSurface, Surface *readSurface, gl::Context *context) { mDisplay = display; mDrawSurface = drawSurface; mReadSurface = readSurface; mContext = context; } Display *Thread::getDisplay() const { return mDisplay; } Surface *Thread::getDrawSurface() const { return mDrawSurface; } Surface *Thread::getReadSurface() const { return mReadSurface; } gl::Context *Thread::getContext() const { return mContext; } gl::Context *Thread::getValidContext() const { if (mContext && mContext->isContextLost()) { mContext->handleError(gl::Error(GL_OUT_OF_MEMORY, "Context has been lost.")); return nullptr; } return mContext; } } // namespace egl