LCOV - code coverage report
Current view: top level - seq/detail - window.cpp (source / functions) Hit Total Coverage
Test: Equalizer Lines: 45 69 65.2 %
Date: 2017-12-16 05:07:20 Functions: 14 24 58.3 %

          Line data    Source code
       1             : 
       2             : /* Copyright (c) 2011-2017, Stefan Eilemann <eile@eyescale.ch>
       3             :  *                          Petros Kataras <petroskataras@gmail.com>
       4             :  *
       5             :  * This library is free software; you can redistribute it and/or modify it under
       6             :  * the terms of the GNU Lesser General Public License version 2.1 as published
       7             :  * by the Free Software Foundation.
       8             :  *
       9             :  * This library is distributed in the hope that it will be useful, but WITHOUT
      10             :  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
      11             :  * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
      12             :  * details.
      13             :  *
      14             :  * You should have received a copy of the GNU Lesser General Public License
      15             :  * along with this library; if not, write to the Free Software Foundation, Inc.,
      16             :  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      17             :  */
      18             : 
      19             : #include "window.h"
      20             : 
      21             : #include "config.h"
      22             : #include "pipe.h"
      23             : #include "renderer.h"
      24             : 
      25             : #include <eq/fabric/event.h>
      26             : #include <eq/util/objectManager.h>
      27             : #include <seq/renderer.h>
      28             : 
      29             : namespace seq
      30             : {
      31             : namespace detail
      32             : {
      33           2 : Window::Window(eq::Pipe* parent)
      34           2 :     : eq::Window(parent)
      35             : {
      36           2 : }
      37             : 
      38           4 : Window::~Window()
      39             : {
      40           4 : }
      41             : 
      42           2 : Config* Window::getConfig()
      43             : {
      44           2 :     return static_cast<Config*>(eq::Window::getConfig());
      45             : }
      46             : 
      47          13 : Pipe* Window::getPipe()
      48             : {
      49          13 :     return static_cast<Pipe*>(eq::Window::getPipe());
      50             : }
      51             : 
      52           5 : seq::Renderer* Window::getRenderer()
      53             : {
      54           5 :     return getPipe()->getRenderer();
      55             : }
      56             : 
      57           8 : detail::Renderer* Window::getRendererImpl()
      58             : {
      59           8 :     return getPipe()->getRendererImpl();
      60             : }
      61             : 
      62           2 : void Window::frameStart(const uint128_t& frameID, const uint32_t frameNumber)
      63             : {
      64           2 :     getRendererImpl()->setWindow(this);
      65           2 :     eq::Window::frameStart(frameID, frameNumber);
      66           2 : }
      67             : 
      68           2 : void Window::frameFinish(const uint128_t& frameID, const uint32_t frameNumber)
      69             : {
      70           2 :     getRendererImpl()->setWindow(0);
      71           2 :     eq::Window::frameFinish(frameID, frameNumber);
      72           2 : }
      73             : 
      74           2 : bool Window::configInitGL(const uint128_t&)
      75             : {
      76           2 :     Renderer* rendererImpl = getRendererImpl();
      77           2 :     rendererImpl->setWindow(this);
      78             : 
      79           2 :     co::Object* initData = getConfig()->getInitData();
      80           2 :     seq::Renderer* const renderer = getRenderer();
      81           2 :     const bool first = !getObjectManager().isShared();
      82             : 
      83           2 :     if (first && !renderer->init(initData))
      84             :     {
      85           0 :         rendererImpl->setWindow(0);
      86           0 :         return false;
      87             :     }
      88           2 :     const bool ret = renderer->initContext(initData);
      89             : 
      90           2 :     rendererImpl->setWindow(0);
      91           2 :     return ret;
      92             : }
      93             : 
      94           2 : bool Window::configExitGL()
      95             : {
      96           2 :     Renderer* rendererImpl = getRendererImpl();
      97           2 :     rendererImpl->setWindow(this);
      98           2 :     seq::Renderer* const renderer = getRenderer();
      99           2 :     const bool last = !getObjectManager().isShared();
     100             : 
     101           2 :     bool ret = renderer->exitContext();
     102           2 :     if (last && !renderer->exit())
     103           0 :         ret = false;
     104             : 
     105           2 :     rendererImpl->setWindow(0);
     106           2 :     return ret;
     107             : }
     108             : 
     109           1 : bool Window::processEvent(const eq::EventType type)
     110             : {
     111           1 :     seq::Renderer* const renderer = getRenderer();
     112           1 :     if (renderer->processEvent(EventType(type)))
     113           0 :         return true;
     114           1 :     return eq::Window::processEvent(type);
     115             : }
     116             : 
     117             : template <class E>
     118           0 : bool Window::_processEvent(const eq::EventType type, E& event)
     119             : {
     120           0 :     seq::Renderer* const renderer = getRenderer();
     121           0 :     if (renderer->processEvent(EventType(type), event))
     122           0 :         return true;
     123           0 :     return eq::Window::processEvent(type, event);
     124             : }
     125             : 
     126             : template <class E>
     127           0 : bool Window::_processEvent(E& event)
     128             : {
     129           0 :     seq::Renderer* const renderer = getRenderer();
     130           0 :     if (renderer->processEvent(event))
     131           0 :         return true;
     132           0 :     return eq::Window::processEvent(event);
     133             : }
     134             : 
     135           0 : bool Window::processEvent(const eq::EventType type, SizeEvent& event)
     136             : {
     137           0 :     return _processEvent(type, event);
     138             : }
     139             : 
     140           0 : bool Window::processEvent(const eq::EventType type, PointerEvent& event)
     141             : {
     142           0 :     return _processEvent(type, event);
     143             : }
     144             : 
     145           0 : bool Window::processEvent(const eq::EventType type, KeyEvent& event)
     146             : {
     147           0 :     return _processEvent(type, event);
     148             : }
     149             : 
     150           0 : bool Window::processEvent(AxisEvent& event)
     151             : {
     152           0 :     return _processEvent(event);
     153             : }
     154             : 
     155           0 : bool Window::processEvent(ButtonEvent& event)
     156             : {
     157           0 :     return _processEvent(event);
     158             : }
     159             : }
     160          30 : }

Generated by: LCOV version 1.11