- Main Page
- Namespaces
- Classes
- Files

- File List

# GraphicsContext.cpp

    00001
    00002 //
    00003 // SFML - Simple and Fast Multimedia Library
    00004 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
    00005 //
    00006 // This software is provided 'as-is', without any express or implied warranty.
    00007 // In no event will the authors be held liable for any damages arising from the use of this software.
    00008 //
    00009 // Permission is granted to anyone to use this software for any purpose,
    00010 // including commercial applications, and to alter it and redistribute it freely,
    00011 // subject to the following restrictions:
    00012 //
    00013 // 1. The origin of this software must not be misrepresented;
    00014 //    you must not claim that you wrote the original software.
    00015 //    If you use this software in a product, an acknowledgment
    00016 //    in the product documentation would be appreciated but is not required.
    00017 //
    00018 // 2. Altered source versions must be plainly marked as such,
    00019 //    and must not be misrepresented as being the original software.
    00020 //
    00021 // 3. This notice may not be removed or altered from any source distribution.
    00022 //
    00024
    00026 // Headers
    00028 #include <SFML/Graphics/GraphicsContext.hpp>
    00029 #include <SFML/Window/Context.hpp>
    00030
    00031
    00032 namespace
    00033 {
    00035     // One time initialization of 3rd party libraries.
    00036     // We use a global function with a static boolean rather
    00037     // than directly a global boolean, to avoid the randomness
    00038     // of global variables initializations across compile units.
    00040     void InitGraphicsLibs()
    00041     {
    00042         static bool InitDone = false;
    00043         if (!InitDone)
    00044         {
    00045             // Initialize GLEW
    00046             glewInit();
    00047
    00048             InitDone = true;
    00049         }
    00050     }
    00051
    00052 }
    00053
    00054
    00055 namespace sf
    00056 {
    00057 namespace priv
    00058 {
    00063 GraphicsContext::GraphicsContext()
    00064 {
    00065     // Activate the global context
    00066     if (!Context::IsContextActive())
    00067     {
    00068         Context::GetGlobal().SetActive(true);
    00069         myActivated = true;
    00070     }
    00071     else
    00072     {
    00073         myActivated = false;
    00074     }
    00075
    00076     // Make sure third party libraries are initialized
    00077     InitGraphicsLibs();
    00078 }
    00079
    00080
    00085 GraphicsContext::~GraphicsContext()
    00086 {
    00087     // Deactivate the global context
    00088     if (myActivated)
    00089         Context::GetGlobal().SetActive(false);
    00090 }
    00091
    00092 } // namespace priv
    00093
    00094 } // namespace sf

:: Copyright © 2007-2008 Laurent Gomila, all rights reserved :: Documentation generated by doxygen 1.5.2 ::