progs/glsl: improve the mouse drag/rotate code a little
authorBrian Paul <brianp@vmware.com>
Mon, 29 Mar 2010 17:44:39 +0000 (11:44 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 29 Mar 2010 17:47:38 +0000 (11:47 -0600)
progs/glsl/fsraytrace.c
progs/glsl/vsraytrace.c

index 357da67b9c6e76fe5d0ae1278b9b2561bb03b18a..392f01b200d250804cc71606cacd1c1cc559cb1e 100644 (file)
@@ -333,6 +333,7 @@ drag(int x, int y)
     yRot = (float)(y - WinHeight/2) / scale;
     identity(rot);
     rotate_xy(rot, yRot, xRot);
+    glutPostRedisplay();
   }
 }
 
@@ -341,10 +342,7 @@ static
 void
 mouse(int button, int state, int x, int y)
 {
-  if(state == GLUT_DOWN)
-  {
-    mouseGrabbed = !mouseGrabbed;
-  }
+  mouseGrabbed = (state == GLUT_DOWN);
 }
 
 
@@ -398,7 +396,7 @@ main(int argc, char *argv[])
   glutKeyboardFunc(Key);
   glutDisplayFunc(Draw);
   glutMouseFunc(mouse);
-  glutPassiveMotionFunc(drag);
+  glutMotionFunc(drag);
   glutIdleFunc(Draw);
   Init();
   glutMainLoop();
index 327d48b897e6186e6dff1da0acf34541b7d195fb..ee4fe477619d6040564270502fb05b3881b09bea 100644 (file)
@@ -31,7 +31,7 @@
 
 static int Win;
 static int WinWidth = 256, WinHeight = 256;
-static int mouseGrabbed = 0;
+static GLboolean mouseGrabbed = GL_FALSE;
 static GLuint vertShader;
 static GLuint program;
 float rot[9] = {1,0,0,  0,1,0,   0,0,1};
@@ -323,6 +323,7 @@ drag(int x, int y)
     yRot = (float)(y - WinHeight/2) / scale;
     identity(rot);
     rotate_xy(rot, yRot, xRot);
+    glutPostRedisplay();
   }
 }
 
@@ -331,10 +332,7 @@ static
 void
 mouse(int button, int state, int x, int y)
 {
-  if(state == GLUT_DOWN)
-  {
-    mouseGrabbed = !mouseGrabbed;
-  }
+  mouseGrabbed = (state == GLUT_DOWN);
 }
 
 
@@ -388,7 +386,7 @@ main(int argc, char *argv[])
   glutDisplayFunc(Draw);
   glutIdleFunc(Draw);
   glutMouseFunc(mouse);
-  glutPassiveMotionFunc(drag);
+  glutMotionFunc(drag);
   Init();
   glutMainLoop();
   return 0;