begin macos port
This commit is contained in:
28
src/main.cpp
28
src/main.cpp
@@ -1,5 +1,8 @@
|
||||
// Unity build - include all src files here
|
||||
// -mta
|
||||
#ifdef __APPLE__
|
||||
#include <mach/mach_time.h>
|
||||
#endif
|
||||
// [h]
|
||||
#include "base/base_inc.h"
|
||||
#include "platform/platform.h"
|
||||
@@ -14,10 +17,17 @@
|
||||
#include "base/base_inc.cpp"
|
||||
#include "ui/ui_core.cpp"
|
||||
#include "ui/ui_widgets.cpp"
|
||||
#ifdef __APPLE__
|
||||
#include "platform/platform_macos.mm"
|
||||
#include "renderer/renderer_metal.mm"
|
||||
#include "midi/midi_coremidi.cpp"
|
||||
#include "audio/audio_coreaudio.cpp"
|
||||
#else
|
||||
#include "platform/platform_win32.cpp"
|
||||
#include "renderer/renderer_dx12.cpp"
|
||||
#include "midi/midi_win32.cpp"
|
||||
#include "audio/audio_asio.cpp"
|
||||
#endif
|
||||
#include "menus.cpp"
|
||||
|
||||
////////////////////////////////
|
||||
@@ -58,8 +68,14 @@ struct AppState {
|
||||
B32 show_props;
|
||||
B32 show_log;
|
||||
B32 show_midi_devices;
|
||||
#ifdef __APPLE__
|
||||
uint64_t freq_numer;
|
||||
uint64_t freq_denom;
|
||||
uint64_t last_time;
|
||||
#else
|
||||
LARGE_INTEGER freq;
|
||||
LARGE_INTEGER last_time;
|
||||
#endif
|
||||
|
||||
// Tab state
|
||||
S32 right_panel_tab; // 0 = Properties, 1 = MIDI Devices
|
||||
@@ -643,10 +659,16 @@ static void build_ui(AppState *app) {
|
||||
|
||||
static void do_frame(AppState *app) {
|
||||
// Timing
|
||||
#ifdef __APPLE__
|
||||
uint64_t now = mach_absolute_time();
|
||||
F32 dt = (F32)(now - app->last_time) * (F32)app->freq_numer / ((F32)app->freq_denom * 1e9f);
|
||||
app->last_time = now;
|
||||
#else
|
||||
LARGE_INTEGER now;
|
||||
QueryPerformanceCounter(&now);
|
||||
F32 dt = (F32)(now.QuadPart - app->last_time.QuadPart) / (F32)app->freq.QuadPart;
|
||||
app->last_time = now;
|
||||
#endif
|
||||
if (dt > 0.1f) dt = 0.1f;
|
||||
|
||||
// Resize
|
||||
@@ -737,9 +759,15 @@ int main(int argc, char **argv) {
|
||||
app.show_midi_devices = 1;
|
||||
app.demo_dropdown_sel = 1; // default to 48000 Hz
|
||||
snprintf(app.demo_text_a, sizeof(app.demo_text_a), "My Instrument");
|
||||
#ifdef __APPLE__
|
||||
snprintf(app.demo_text_b, sizeof(app.demo_text_b), "~/Samples/output");
|
||||
{ mach_timebase_info_data_t tbi; mach_timebase_info(&tbi); app.freq_numer = tbi.numer; app.freq_denom = tbi.denom; }
|
||||
app.last_time = mach_absolute_time();
|
||||
#else
|
||||
snprintf(app.demo_text_b, sizeof(app.demo_text_b), "C:\\Samples\\output");
|
||||
QueryPerformanceFrequency(&app.freq);
|
||||
QueryPerformanceCounter(&app.last_time);
|
||||
#endif
|
||||
|
||||
platform_set_frame_callback(window, frame_callback, &app);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user