|
|
@ -28,6 +28,7 @@ |
|
|
|
#include <stdio.h> |
|
|
|
#include <stdio.h> |
|
|
|
#include <string.h> |
|
|
|
#include <string.h> |
|
|
|
#include <math.h> |
|
|
|
#include <math.h> |
|
|
|
|
|
|
|
#include <time.h> |
|
|
|
|
|
|
|
|
|
|
|
#define GLFW_INCLUDE_GLU |
|
|
|
#define GLFW_INCLUDE_GLU |
|
|
|
#include <GLFW/glfw3.h> |
|
|
|
#include <GLFW/glfw3.h> |
|
|
@ -453,7 +454,9 @@ static void draw_particles(GLFWwindow* window, double t, float dt) |
|
|
|
while (!glfwWindowShouldClose(window) && |
|
|
|
while (!glfwWindowShouldClose(window) && |
|
|
|
thread_sync.p_frame <= thread_sync.d_frame) |
|
|
|
thread_sync.p_frame <= thread_sync.d_frame) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct timespec ts = { 0, 100000000 }; |
|
|
|
struct timespec ts; |
|
|
|
|
|
|
|
clock_gettime(CLOCK_REALTIME, &ts); |
|
|
|
|
|
|
|
ts.tv_nsec += 100000000; |
|
|
|
cnd_timedwait(&thread_sync.p_done, &thread_sync.particles_lock, &ts); |
|
|
|
cnd_timedwait(&thread_sync.p_done, &thread_sync.particles_lock, &ts); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -897,7 +900,9 @@ static int physics_thread_main(void* arg) |
|
|
|
while (!glfwWindowShouldClose(window) && |
|
|
|
while (!glfwWindowShouldClose(window) && |
|
|
|
thread_sync.p_frame > thread_sync.d_frame) |
|
|
|
thread_sync.p_frame > thread_sync.d_frame) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct timespec ts = { 0, 100000000 }; |
|
|
|
struct timespec ts; |
|
|
|
|
|
|
|
clock_gettime(CLOCK_REALTIME, &ts); |
|
|
|
|
|
|
|
ts.tv_nsec += 100000000; |
|
|
|
cnd_timedwait(&thread_sync.d_done, &thread_sync.particles_lock, &ts); |
|
|
|
cnd_timedwait(&thread_sync.d_done, &thread_sync.particles_lock, &ts); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|