| // | |
| // 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<gl::Context *>(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 |