diff main.c @ 11:aaecc9b7ca9c

testing glutTimerFunc
author Dennis C. M. <dennis@denniscm.com>
date Fri, 23 Jun 2023 23:08:34 +0100
parents f4e0c266321a
children 9ba546527bc2
line wrap: on
line diff
--- a/main.c	Fri Jun 23 20:24:37 2023 +0100
+++ b/main.c	Fri Jun 23 23:08:34 2023 +0100
@@ -7,6 +7,7 @@
 
 #define WINDOW_HEIGHT 1080
 #define WINDOW_WIDTH 1920
+#define FPS 60
 #define OFFSET 150
 #define RECT_WIDTH 5
 #define SPACE 1
@@ -22,18 +23,22 @@
 
 
 // Algos
+int step = 0;
+int i = 0;
 void bubble_sort() {
-	for (int step = 0; step < arr_size - 1; step++) {
+	if (i < arr_size - step - 1) {
+		int current = arr[i];
+		int next = arr[i + 1];
 
-		for (int i = 0; i < arr_size - step - 1; i++) {
-			int current = arr[i];
-			int next = arr[i + 1];
+		if (current > next) {
+			arr[i + 1] = current;
+			arr[i] = next;
+		}
 
-			if (current > next) {
-				arr[i + 1] = current;
-				arr[i] = next;
-			}
-		}
+		i++;
+	} else {
+		step++;
+		i = 0;
 	}
 }
 
@@ -141,12 +146,13 @@
 	render_text(WINDOW_WIDTH - 500, OFFSET - 100, "Press 'r' to reset array");
 
 	glutSwapBuffers();
-	glFlush();
 }
 
 
-void idle() {
+void timer(int value) {
+	bubble_sort();
 	glutPostRedisplay();
+	glutTimerFunc(1000 / 800, timer, 0);
 }
 
 
@@ -191,7 +197,7 @@
 	setup();
 	glutDisplayFunc(display);
 	glutKeyboardFunc(keyboard);
-	glutIdleFunc(idle);
+	glutTimerFunc(0, timer, 0);
 	glutMainLoop();
 
 	free(arr);