PCMGLXGLContext.h
Go to the documentation of this file.00001 00002 // 00003 // This source file is a part of ParCompMark 00004 // Parallel Compositing Benchmark Framework 00005 // 00006 // for latest info see http://parcompmark.sourceforge.net 00007 00008 // 00009 // Copyright (C) 2006 IT2 ParCompMark Dev. Team 00010 // 00011 // This program is free software; you can redistribute it and/or 00012 // modify it under the terms of the GNU General Public License 00013 // as published by the Free Software Foundation; either version 2 00014 // of the License, or (at your option) any later version. 00015 // 00016 // This program is distributed in the hope that it will be useful, 00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 // GNU General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU General Public License 00022 // along with this program; if not, write to the Free Software 00023 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00024 00027 00028 #ifndef __PCM_GLXGLCONTEXT_H__ 00029 # define __PCM_GLXGLCONTEXT_H__ 00030 00031 // 00032 // Inner includes 00033 // 00034 00035 # include "PCMPremeditations.h" 00036 00037 # include "PCMPointer.h" 00038 00039 # include "PCMXDisplay.h" 00040 00041 // 00042 // Outer includes 00043 // 00044 00045 # include <X11/Xlib.h> 00046 00047 # include <GL/glew.h> 00048 00049 # include <GL/glx.h> 00050 00051 # include <GL/glxext.h> 00052 00053 namespace ParCompMark 00054 { 00055 00060 class GLXGLContext 00061 { 00062 00063 // 00064 // Unit test class 00065 // 00066 # ifdef PARCOMPMARK_TEST 00067 friend class ParCompMarkTest::TestGLXGLContext; 00068 # endif 00069 00070 // 00071 // Typedefs 00072 // 00073 00074 public: 00075 00077 typedef Pointer < GLXGLContext, 00078 Mutex > Pointer; 00079 00080 // 00081 // Variables 00082 // 00083 00085 00086 00087 protected: 00088 00094 bool mInitialized; 00095 00101 XDisplay::Pointer mDisplay; 00102 00108 GLXRenderWindow *mGLXWindow; 00109 00115 ::XVisualInfo * mVisualInfo; 00116 00122 ::GLXContext mGLXContext; 00123 00129 bool mTainted; 00130 00132 00133 // 00134 // Constructors & destructor 00135 // 00136 00138 00139 00140 public: 00141 00148 GLXGLContext(XDisplay::Pointer & display, GLXRenderWindow * glxWindow,::XVisualInfo * visualInfo); 00149 00153 virtual ~ GLXGLContext(); 00154 00156 00157 // 00158 // Getters & setters 00159 // 00160 00162 00163 00164 public: 00165 00171 const bool & getInitialized() const; 00172 00178 const XDisplay::Pointer & getDisplay() const; 00179 00185 GLXRenderWindow *getGLXWindow() const; 00186 00192 ::XVisualInfo * getVisualInfo() const; 00193 00199 const::GLXContext & getGLXContext() const; 00200 00206 const bool & getTainted() const; 00207 00213 void setTainted(const bool & tainted); 00214 00216 00217 // 00218 // Methods 00219 // 00220 00222 00223 00224 public: 00225 00229 virtual void initialize(); 00230 00234 virtual void finalize(); 00235 00239 virtual void setCurrent(); 00240 00244 virtual void releaseCurrent(); 00245 00247 00248 }; 00249 00250 // 00251 // Include header implementation 00252 // 00253 00254 # include "PCMGLXGLContext_impl.h" 00255 00256 } 00257 00258 #endif