
Concurrency: - Refactored spinlock out of OS api (deprecated old procs) - Concurrency utilites: void spinlock_init(Spinlock *l); void spinlock_acquire_or_wait(Spinlock* l); bool spinlock_acquire_or_wait_timeout(Spinlock* l, f64 timeout_seconds); void spinlock_release(Spinlock* l); void mutex_init(Mutex *m); void mutex_destroy(Mutex *m); void mutex_acquire_or_wait(Mutex *m); void mutex_release(Mutex *m); void binary_semaphore_init(Binary_Semaphore *sem, bool initial_state); void binary_semaphore_destroy(Binary_Semaphore *sem); void binary_semaphore_wait(Binary_Semaphore *sem); void binary_semaphore_signal(Binary_Semaphore *sem); Macro MEMORY_BARRIER - Concurrency tests Docs: - custom_logger.c example to show how one can make a custom logger and have logs displayed in-game Utility: - draw_text_and_measure() which is just an overload of draw_text but it also does a measure and returns it Misc: - Added u64 thread_id to global context. This is set in main() for main thread and in thread startup when you dispatch a Thread - Fixed a bug where plain rects would be drawn with the incorrect color - Fixed a bug where quads from earlier frames would be drawn
26 lines
No EOL
693 B
C
26 lines
No EOL
693 B
C
|
|
int entry(int argc, char **argv) {
|
|
|
|
window.title = STR("Minimal Game Example");
|
|
window.scaled_width = 1280; // We need to set the scaled size if we want to handle system scaling (DPI)
|
|
window.scaled_height = 720;
|
|
window.x = 200;
|
|
window.y = 200;
|
|
window.clear_color = hex_to_rgba(0x6495EDff);
|
|
|
|
while (!window.should_close) {
|
|
reset_temporary_storage();
|
|
|
|
os_update();
|
|
|
|
float64 now = os_get_current_time_in_seconds();
|
|
Matrix4 rect_xform = m4_scalar(1.0);
|
|
rect_xform = m4_rotate_z(rect_xform, (f32)now);
|
|
rect_xform = m4_translate(rect_xform, v3(-.25f, -.25f, 0));
|
|
draw_rect_xform(rect_xform, v2(.5f, .5f), COLOR_GREEN);
|
|
|
|
gfx_update();
|
|
}
|
|
|
|
return 0;
|
|
} |