/opengles/src/linux-ftk/ContextLinux.cpp
http://ftk.googlecode.com/ · C++ · 74 lines · 25 code · 11 blank · 38 comment · 6 complexity · 8057c2efd2e6bac004fe1822e18f2caa MD5 · raw file
- // ==========================================================================
- //
- // context.cpp Rendering Context Class for 3D Rendering Library
- //
- // --------------------------------------------------------------------------
- //
- // 08-07-2003 Hans-Martin Will initial version
- //
- // --------------------------------------------------------------------------
- //
- // Copyright (c) 2004, Hans-Martin Will. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
- // met:
- //
- // * Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- // * Redistributions in binary form must reproduce the above copyright
- // notice, this list of conditions and the following disclaimer in the
- // documentation and/or other materials provided with the distribution.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- // THE POSSIBILITY OF SUCH DAMAGE.
- //
- // ==========================================================================
- #include "stdafx.h"
- #include "Context.h"
- #include "Surface.h"
- #include "Rasterizer.h"
- #include <pthread.h>
- using namespace EGL;
- extern pthread_key_t s_TlsIndexContext;
- // --------------------------------------------------------------------------
- // Context Management
- // --------------------------------------------------------------------------
- void Context :: SetCurrentContext(Context * context)
- {
- Context * oldContext = GetCurrentContext();
- if (oldContext != context)
- {
- if (oldContext != 0)
- oldContext->SetCurrent(false);
-
- pthread_setspecific(s_TlsIndexContext,
- reinterpret_cast<void *>(context));
- if (context != 0)
- context->SetCurrent(true);
- }
- }
- Context * Context :: GetCurrentContext()
- {
- return reinterpret_cast<EGLContext> (
- pthread_getspecific(s_TlsIndexContext));
- }