summaryrefslogtreecommitdiff
path: root/src/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cc')
-rw-r--r--src/main.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main.cc b/src/main.cc
index 41c881b..45a642a 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -13,6 +13,9 @@
#include "audio/backend/wav_dump_backend.h"
#include "util/file_watcher.h"
#include <vector>
+#if defined(DEMO_HEADLESS)
+#include <csignal>
+#endif
#endif
#include "generated/assets.h" // Include generated asset header
#include "gpu/demo_effects.h" // For GetDemoDuration()
@@ -24,6 +27,17 @@
#include <cstdlib>
#include <cstring>
+#if !defined(STRIP_ALL) && defined(DEMO_HEADLESS)
+static WavDumpBackend* g_wav_backend_ptr = nullptr;
+static void signal_handler(int sig) {
+ if (g_wav_backend_ptr != nullptr) {
+ g_wav_backend_ptr->shutdown();
+ g_wav_backend_ptr = nullptr;
+ }
+ exit(sig);
+}
+#endif
+
int main(int argc, char** argv) {
PlatformState platform_state;
bool fullscreen_enabled = false;
@@ -93,6 +107,11 @@ int main(int argc, char** argv) {
if (dump_wav) {
wav_backend.set_output_file(wav_output_file);
audio_set_backend(&wav_backend);
+#if defined(DEMO_HEADLESS)
+ g_wav_backend_ptr = &wav_backend;
+ signal(SIGINT, signal_handler);
+ signal(SIGTERM, signal_handler);
+#endif
printf("WAV dump mode enabled: %s\n", wav_output_file);
}
#endif
@@ -262,6 +281,9 @@ int main(int argc, char** argv) {
printf("\nWAV dump complete: %.2fs physical, %.2fs music time\n",
physical_time, g_music_time);
+#if defined(DEMO_HEADLESS)
+ g_wav_backend_ptr = nullptr;
+#endif
audio_shutdown();
gpu_shutdown();
platform_shutdown(&platform_state);
@@ -269,6 +291,7 @@ int main(int argc, char** argv) {
}
#endif
+#if !defined(DEMO_HEADLESS)
int last_width = platform_state.width;
int last_height = platform_state.height;
@@ -360,8 +383,12 @@ int main(int argc, char** argv) {
audio_update();
}
+#if !defined(STRIP_ALL) && defined(DEMO_HEADLESS)
+ g_wav_backend_ptr = nullptr;
+#endif
audio_shutdown();
gpu_shutdown();
platform_shutdown(&platform_state);
+#endif /* !defined(DEMO_HEADLESS) */
return 0;
} \ No newline at end of file