Line data Source code
1 :
2 : /* Copyright (c) 2009-2015, Stefan.Eilemann@epfl.ch
3 : *
4 : * This library is free software; you can redistribute it and/or modify it under
5 : * the terms of the GNU Lesser General Public License version 2.1 as published
6 : * by the Free Software Foundation.
7 : *
8 : * This library is distributed in the hope that it will be useful, but WITHOUT
9 : * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10 : * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11 : * details.
12 : *
13 : * You should have received a copy of the GNU Lesser General Public License
14 : * along with this library; if not, write to the Free Software Foundation, Inc.,
15 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16 : */
17 :
18 : #ifndef EQ_X11_WINDOW_H
19 : #define EQ_X11_WINDOW_H
20 :
21 : #include <eq/systemWindow.h> // base class
22 : #include <eq/glx/types.h>
23 :
24 : namespace eq
25 : {
26 : /**
27 : * @namespace eq::x11
28 : * @brief An abstraction layer for CPU-based rendering using X11.
29 : */
30 : namespace x11
31 : {
32 :
33 : /**
34 : * A system window for CPU rendering on X11.
35 : *
36 : * Example usage: @include examples/eqCPU/window.cpp
37 : * @version 1.9
38 : */
39 0 : class Window : public SystemWindow
40 : {
41 : public:
42 : Window( NotifierInterface& parent, const WindowSettings& settings,
43 : Display* xDisplay );
44 :
45 : bool configInit() override;
46 : void configExit() override;
47 0 : void makeCurrent( bool /*cache*/ ) const override {}
48 0 : void doneCurrent() const override {}
49 0 : void bindFrameBuffer() const override {}
50 0 : void bindDrawFrameBuffer() const override {}
51 0 : void updateFrameBuffer() const override {}
52 0 : void swapBuffers() override {}
53 0 : void joinNVSwapBarrier( const uint32_t, const uint32_t ) override {}
54 : void queryDrawableConfig( eq::DrawableConfig& drawableConfig ) override;
55 : void flush() override;
56 0 : void finish() override { flush(); }
57 :
58 : /** @return the X11 display connection */
59 : virtual Display* getXDisplay();
60 :
61 : /** @return the X11 drawable ID. */
62 0 : virtual XID getXDrawable() const { return _xDrawable; }
63 :
64 : /** @name Data Access */
65 : //@{
66 : /**
67 : * Set the X11 drawable ID for this window.
68 : *
69 : * This function should only be called from configInit() or
70 : * configExit().
71 : *
72 : * @param drawable the X11 drawable ID.
73 : */
74 0 : virtual void setXDrawable( XID drawable ) { _xDrawable = drawable; }
75 :
76 : private:
77 : Window( const Window& ) = delete;
78 : Window& operator=( const Window& ) = delete;
79 : XID _createWindow();
80 : Display* _xDisplay; //!< The display connection (maintained by GLXPipe)
81 : XID _xDrawable;
82 : };
83 :
84 : }
85 : }
86 :
87 : #endif // EQ_X11_WINDOW_H
|