
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
36 lines
1 KiB
C
36 lines
1 KiB
C
|
|
|
|
///
|
|
// Build config stuff
|
|
|
|
#define INITIAL_PROGRAM_MEMORY_SIZE MB(5)
|
|
|
|
typedef struct Context_Extra {
|
|
int monkee;
|
|
} Context_Extra;
|
|
// This needs to be defined before oogabooga if we want extra stuff in context
|
|
#define CONTEXT_EXTRA Context_Extra
|
|
|
|
// This defaults to "entry", but we can set it to anything (except "main" or other existing proc names"
|
|
#define ENTRY_PROC entry
|
|
|
|
// Ooga booga needs to be included AFTER configuration and BEFORE the program code
|
|
#include "oogabooga/oogabooga.c"
|
|
|
|
// #Volatile tutorial below
|
|
// #Volatile tutorial below
|
|
// #Volatile tutorial below
|
|
|
|
//
|
|
// Comment & Uncomment these to swap projects (only include one at a time)
|
|
//
|
|
|
|
// this is a minimal starting point for new projects. Copy & rename to get started
|
|
#include "oogabooga/examples/minimal_game_loop.c"
|
|
|
|
// #include "oogabooga/examples/text_rendering.c"
|
|
// #include "oogabooga/examples/custom_logger.c"
|
|
// #include "oogabooga/examples/renderer_stress_test.c"
|
|
|
|
// This is where you swap in your own project!
|
|
// #include "entry_yourepicgamename.c"
|