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/glx/types.h>
22 : #include <eq/systemWindow.h> // base class
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 : * A system window for CPU rendering on X11.
34 : *
35 : * Example usage: @include examples/eqCPU/window.cpp
36 : * @version 1.9
37 : */
38 0 : class Window : public SystemWindow
39 : {
40 : public:
41 : Window(NotifierInterface& parent, const WindowSettings& settings,
42 : Display* xDisplay);
43 :
44 : bool configInit() override;
45 : void configExit() override;
46 0 : void makeCurrent(bool /*cache*/) const override {}
47 0 : void doneCurrent() const override {}
48 0 : void bindFrameBuffer() const override {}
49 0 : void bindDrawFrameBuffer() const override {}
50 0 : void updateFrameBuffer() const override {}
51 0 : void swapBuffers() override {}
52 0 : void joinNVSwapBarrier(const uint32_t, const uint32_t) override {}
53 : void queryDrawableConfig(eq::DrawableConfig& drawableConfig) override;
54 : void flush() override;
55 0 : void finish() override { flush(); }
56 : /** @return the X11 display connection */
57 : virtual Display* getXDisplay();
58 :
59 : /** @return the X11 drawable ID. */
60 0 : virtual XID getXDrawable() const { return _xDrawable; }
61 : /** @name Data Access */
62 : //@{
63 : /**
64 : * Set the X11 drawable ID for this window.
65 : *
66 : * This function should only be called from configInit() or
67 : * configExit().
68 : *
69 : * @param drawable the X11 drawable ID.
70 : */
71 0 : virtual void setXDrawable(XID drawable) { _xDrawable = drawable; }
72 : private:
73 : Window(const Window&) = delete;
74 : Window& operator=(const Window&) = delete;
75 : XID _createWindow();
76 : Display* _xDisplay; //!< The display connection (maintained by GLXPipe)
77 : XID _xDrawable;
78 :
79 : void resize(const PixelViewport& pvp) override;
80 : };
81 : }
82 : }
83 :
84 : #endif // EQ_X11_WINDOW_H
|