// // 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), 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(gl::Context *context) { mContext = context; } Surface *Thread::getCurrentDrawSurface() const { if (mContext) { return mContext->getCurrentDrawSurface(); } return nullptr; } Surface *Thread::getCurrentReadSurface() const { if (mContext) { return mContext->getCurrentReadSurface(); } return nullptr; } gl::Context *Thread::getContext() const { return mContext; } gl::Context *Thread::getValidContext() const { if (mContext && mContext->isContextLost()) { mContext->handleError(gl::OutOfMemory() << "Context has been lost."); return nullptr; } return mContext; } Display *Thread::getCurrentDisplay() const { if (mContext) { return mContext->getCurrentDisplay(); } return nullptr; } } // namespace egl