add command-line option for swap interval
[gltest.git] / gltest.cpp
index 2b6105c3d9b3b3da56600cb7be960de0a819eafb..8d296a3991965e965e0c3ac1e7e0c03eba4a6c53 100644 (file)
@@ -7,6 +7,9 @@
 #include <unistd.h>
 #include <assert.h>
 #include <GL/gl.h>
+#include <boost/program_options.hpp>
+
+namespace po = boost::program_options;
 
 // include proper GL connector
 #include "glwindow.h"
@@ -53,10 +56,13 @@ public:
        TearTestWindow() : GLWindow(XOpenDisplay(0), createGLBackend()), boxPos(0), boxDirection(1)
        {}
 
+       void setSwapInterval(int i) {
+               getBackend()->setSwapInterval(i);
+       }
+
 protected:
        virtual void initGL()
        {
-               getBackend()->setSwapInterval(1);
                // initialize GL proper
                glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
                glDisable(GL_DEPTH_TEST);
@@ -179,7 +185,25 @@ private:
 
 int main(int argc, char ** argv)
 {
+       // program options handling
+       po::options_description desc("Allowed options");
+       desc.add_options()
+               ("help,h", "produce help message")
+               ("swap-interval,i", po::value<int>(), "set swap interval")
+       ;
+       po::variables_map vm;
+       po::store(po::parse_command_line(argc, argv, desc), vm);
+       po::notify(vm);
+
+       if (vm.count("help")) {
+               std::cout << desc << "\n";
+               return 1;
+       }
+
+       // actual program
        TearTestWindow w;
        w.open(800, 600);
+       if (vm.count("swap-interval"))
+               w.setSwapInterval(vm["swap-interval"].as<int>());
        w.exec();
 }