]> git.tdb.fi Git - geometrycompositor.git/blobdiff - source/control.c
Remove event debugging prints
[geometrycompositor.git] / source / control.c
index 292c108bc34538a9399ded9b7672df58fdd1df0e..31ec61cc7617679ce22037abbc0986835fffee12 100644 (file)
@@ -32,10 +32,10 @@ typedef struct InteractiveView
 static unsigned short frustum_indices[] = { 2, 1, 3, 0, 1, 0xFFFF, 3, 4, 2, 0, 4, 0xFFFF };
 static float view_matrix[] =
 {
-        0.70711f,  0.40825f, -0.57735f, 0.0f,
-        0.0f,      0.81650f,  0.57735f, 0.0f,
-        0.70711f, -0.40725f,  0.57735f, 0.0f,
-       -0.2f,      0.0f,     -2.5f,     1.0f
+        0.70711f,  0.23570f, -0.66667f, 0.0f,
+        0.0f,      0.94281f,  0.33333f, 0.0f,
+        0.70711f, -0.23570f,  0.66667f, 0.0f,
+       -0.2f,      0.0f,     -2.0f,     1.0f
 };
 static float projection_matrix[] =
 {
@@ -104,6 +104,15 @@ static const char *flat_fshader_src =
        "}\n";
 
 
+void reset_correction(GeometryCorrection *correction)
+{
+       correction->keystone_vertical = 0.0f;
+       correction->curvature_type = 1;
+       correction->curvature_depth = 0.0f;
+       correction->vertical_center = 0.5f;
+       correction->perspective = 1.0f;
+}
+
 GeometryCorrection *get_corrections(Display *display)
 {
        Window root;
@@ -383,9 +392,11 @@ int interactive(Display *display, GeometryCorrection *corrections, GeometryCorre
        {
                XEvent event;
                KeySym keysym;
+               int repaint;
 
                XNextEvent(display, &event);
 
+               repaint = 0;
                switch(event.type)
                {
                case KeyPress:
@@ -415,6 +426,8 @@ int interactive(Display *display, GeometryCorrection *corrections, GeometryCorre
                                target->perspective -= 1.0f/16;
                        else if(keysym==XK_z)
                                target->curvature_type = target->curvature_type%2+1;
+                       else if(keysym==XK_0)
+                               reset_correction(target);
                        else
                                break;
 
@@ -428,19 +441,23 @@ int interactive(Display *display, GeometryCorrection *corrections, GeometryCorre
                        {
                                update_view(display, &view, &event.xselection);
                                update_pending = 0;
+                               repaint = 1;
                        }
                        break;
-               default:
-                       printf("event %d\n", event.type);
+               case Expose:
+                       repaint = 1;
                        break;
                }
 
-               glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
-               glUseProgram(view.programs[0]);
-               glDrawElements(GL_TRIANGLE_STRIP, view.nelements, GL_UNSIGNED_SHORT, (void *)(12*sizeof(unsigned short)));
-               glUseProgram(view.programs[1]);
-               glDrawElements(GL_LINE_STRIP, 11, GL_UNSIGNED_SHORT, NULL);
-               glXSwapBuffers(display, view.glx_window);
+               if(repaint)
+               {
+                       glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+                       glUseProgram(view.programs[0]);
+                       glDrawElements(GL_TRIANGLE_STRIP, view.nelements, GL_UNSIGNED_SHORT, (void *)(12*sizeof(unsigned short)));
+                       glUseProgram(view.programs[1]);
+                       glDrawElements(GL_LINE_STRIP, 11, GL_UNSIGNED_SHORT, NULL);
+                       glXSwapBuffers(display, view.glx_window);
+               }
        }
 
        return 0;
@@ -479,11 +496,7 @@ int main(int argc, char **argv)
                corrections[i].monitor_name = (char *)malloc(namelen+1);
                strcpy(corrections[i].monitor_name, argv[1]);
                corrections[i+1].monitor_name = NULL;
-               corrections[i].keystone_vertical = 0.0f;
-               corrections[i].curvature_type = 1;
-               corrections[i].curvature_depth = 0.0f;
-               corrections[i].vertical_center = 0.5f;
-               corrections[i].perspective = 1.0f;
+               reset_correction(&corrections[i]);
        }
 
        if(argc==2)