Equalizer  1.2.1
eqAsync/main.cpp
00001 
00002 /* Copyright (c) 2007-2011, Stefan Eilemann <eile@equalizergraphics.com>
00003  *               2010-2011, Maxim Makhinya  <maxmah@gmail.com>
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions are met:
00007  *
00008  * - Redistributions of source code must retain the above copyright notice, this
00009  *   list of conditions and the following disclaimer.
00010  * - Redistributions in binary form must reproduce the above copyright notice,
00011  *   this list of conditions and the following disclaimer in the documentation
00012  *   and/or other materials provided with the distribution.
00013  * - Neither the name of Eyescale Software GmbH nor the names of its
00014  *   contributors may be used to endorse or promote products derived from this
00015  *   software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
00021  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00022  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00023  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00025  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00026  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00027  * POSSIBILITY OF SUCH DAMAGE.
00028  *
00029  */
00030 
00031 #include "eqAsync.h"
00032 
00033 #include <stdlib.h>
00034 
00035 class NodeFactory : public eq::NodeFactory
00036 {
00037 public:
00038     virtual eq::Pipe*    createPipe( eq::Node* parent )
00039         { return new eqAsync::Pipe( parent ); }
00040 
00041     virtual eq::Window*  createWindow( eq::Pipe* parent )
00042         { return new eqAsync::Window( parent ); }
00043 
00044     virtual eq::Channel* createChannel( eq::Window* parent )
00045         { return new eqAsync::Channel( parent ); }
00046 };
00047 
00048 
00049 int main( const int argc, char** argv )
00050 {
00051     // 1. Equalizer initialization
00052     NodeFactory nodeFactory;
00053     if( !eq::init( argc, argv, &nodeFactory ))
00054     {
00055         EQERROR << "Equalizer init failed" << std::endl;
00056         return EXIT_FAILURE;
00057     }
00058     
00059     // 2. get a configuration
00060     bool        error  = false;
00061     eq::Config* config = eq::getConfig( argc, argv );
00062     if( config )
00063     {
00064         // 3. init config
00065         if( config->init( 0 ))
00066         {
00067             if( config->getError( ))
00068                 EQWARN << "Error during initialization: " << config->getError()
00069                        << std::endl;
00070 
00071             // 4. run main loop
00072             eq::uint128_t spin = 0;
00073             while( config->isRunning( ))
00074             {
00075                 config->startFrame( ++spin );
00076                 config->finishFrame();
00077             }
00078         
00079             // 5. exit config
00080             config->exit();
00081         }
00082         else
00083             error = true;
00084 
00085         // 6. release config
00086         eq::releaseConfig( config );
00087     }
00088     else
00089     {
00090         EQERROR << "Cannot get config" << std::endl;
00091         error = true;
00092     }    
00093 
00094     // 7. exit
00095     eq::exit();
00096     return error ? EXIT_FAILURE : EXIT_SUCCESS;
00097 }
Generated on Fri Jun 8 2012 15:44:31 for Equalizer 1.2.1 by  doxygen 1.8.0