source: OGRE/trunk/ogrenew/PlatformManagers/GLX/src/OgreGLXPlatform.cpp @ 692

Revision 692, 2.7 KB checked in by mattausch, 18 years ago (diff)

adding ogre 1.2 and dependencies

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-2005 The OGRE Team
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-----------------------------------------------------------------------------
24*/
25
26#include "OgreRoot.h"
27#include "OgreGLXConfig.h"
28#include "OgreGLXError.h"
29#include "OgreGLXInput.h"
30#include "OgreGLXTimer.h"
31
32#include "OgreGLXWindow.h"
33
34//Kinda a hack. but neccessary to know if any OgreInput has/is being used
35int GLXInputCreated = 0;
36
37namespace Ogre {
38// Platform factory functions
39extern "C" void createPlatformConfigDialog(ConfigDialog** ppDlg) {
40        *ppDlg = new GLXConfig();
41}
42
43extern "C" void createPlatformErrorDialog(ErrorDialog** ppDlg) {
44        *ppDlg = new GLXError();
45}
46
47extern "C" void createPlatformInputReader(InputReader** ppDlg) {
48        *ppDlg = new GLXInput();
49        ++GLXInputCreated;
50}
51
52extern "C" void createTimer(Timer** ppTimer) {
53        *ppTimer = new GLXTimer();
54        (*ppTimer)->reset();
55}
56
57extern "C" void destroyTimer(Timer* ppTimer) {
58        delete ppTimer;
59}
60
61extern "C" void destroyPlatformConfigDialog(ConfigDialog* dlg) {
62        delete dlg;
63}
64
65extern "C" void destroyPlatformErrorDialog(ErrorDialog* dlg) {
66        delete dlg;
67}
68
69extern "C" void destroyPlatformRenderWindow(RenderWindow* wnd) {
70        delete wnd;
71}
72
73extern "C" void destroyPlatformInputReader(InputReader* reader) {
74        if( reader )
75                --GLXInputCreated;
76        delete reader;
77}
78
79extern "C" void messagePump(RenderWindow* rw) {
80        //Do not do this if the GLXInput is also pumping events - hopefully Input will be removed
81        //from Ogre soon...
82        if(GLXInputCreated > 0)
83                return;
84       
85        //Pump X Events
86        GLXWindow *w = static_cast<GLXWindow*>(rw);
87        Display* dis = w->getXDisplay();
88        XEvent event;
89
90        // Process X events until event pump exhausted
91        while(XPending(dis) > 0)
92        {
93                XNextEvent(dis,&event);
94                w->injectXEvent(event);
95        }
96}
97
98}
Note: See TracBrowser for help on using the repository browser.