Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/RenderSystems/GL/src/GLX/OgreGLXContext.cpp @ 1

Last change on this file since 1 was 1, checked in by landauf, 17 years ago
File size: 3.0 KB
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23
24You may alternatively use this source under the terms of a specific version of
25the OGRE Unrestricted License provided you have obtained such a license from
26Torus Knot Software Ltd.
27-----------------------------------------------------------------------------
28*/
29
30#include "OgreGLRenderSystem.h"
31#include "OgreRoot.h"
32#include "OgreGLXContext.h"
33
34namespace Ogre {
35
36    GLXContext::GLXContext(::Display *dpy,
37                ::GLXDrawable drawable,
38                ::GLXContext ctx, 
39                                ::XVisualInfo* visualInfo) :
40        mDpy(dpy), mDrawable(drawable), mCtx(ctx), mVisualInfo(visualInfo)
41        {
42                 
43    }
44    GLXContext::GLXContext(::Display *dpy,
45                ::GLXDrawable drawable,
46                ::GLXContext ctx, 
47                                ::GLXFBConfig fbconfig) :
48        mDpy(dpy), mDrawable(drawable), mCtx(ctx), mVisualInfo(0), mFBConfig(fbconfig)
49        {
50                 
51    }
52    GLXContext::~GLXContext() {
53                // Unregister and destroy this context
54                // This will disable it if it was still active
55                // NB have to do this is subclass to ensure any methods called back
56                // are on this subclass and not half-destructed superclass
57                GLRenderSystem *rs = static_cast<GLRenderSystem*>(Root::getSingleton().getRenderSystem());
58                rs->_unregisterContext(this);
59    }
60
61    void GLXContext::setCurrent() {
62        glXMakeCurrent(mDpy, mDrawable, mCtx);
63    }
64        void GLXContext::endCurrent() {
65                glXMakeCurrent(mDpy, None, NULL);
66        }
67
68        GLContext* GLXContext::clone() const
69        {
70                // Create a new context, share lists with existing
71
72                if (mVisualInfo) // window context clone
73                {
74                        ::GLXContext newCtx = glXCreateContext(mDpy, mVisualInfo, mCtx,True);
75                        return new GLXContext(mDpy, mDrawable, newCtx, mVisualInfo);
76                }
77                else // non-window
78                {
79                        ::GLXContext newCtx = glXCreateNewContext(mDpy, mFBConfig, GLX_RGBA_TYPE, mCtx, True);
80                        return new GLXContext(mDpy, mDrawable, newCtx, mFBConfig);
81                }     
82        } 
83
84}
Note: See TracBrowser for help on using the repository browser.