Powervessel/releaser/releaser.odin

81 lines
1.8 KiB
Odin
Raw Permalink Normal View History

2024-08-14 11:53:51 +00:00
package releaser
import "core:log"
import "core:os"
import "core:mem"
import app ".."
import "../window"
2024-08-14 11:53:51 +00:00
USE_TRACKING_ALLOCATOR :: ODIN_DEBUG
main :: proc() {
when USE_TRACKING_ALLOCATOR {
default_allocator := context.allocator
tracking_allocator: mem.Tracking_Allocator
mem.tracking_allocator_init(&tracking_allocator, default_allocator)
context.allocator = mem.tracking_allocator(&tracking_allocator)
}
mode: int = 0
when ODIN_OS == .Linux || ODIN_OS == .Darwin {
mode = os.S_IRUSR | os.S_IWUSR | os.S_IRGRP | os.S_IROTH
}
logh, logh_err := os.open("log.txt", (os.O_CREATE | os.O_TRUNC | os.O_RDWR), mode)
if logh_err == os.ERROR_NONE {
os.stdout = logh
os.stderr = logh
}
logger := logh_err == os.ERROR_NONE ? log.create_file_logger(logh) : log.create_console_logger()
context.logger = logger
win_config := app.app_init()
win_ok := window.init(win_config)
if !win_ok {
log.fatalf("Failed to init Window")
return
}
2024-08-14 11:53:51 +00:00
window_open := true
for window_open {
window_open = app.app_update() && window.update()
2024-08-14 11:53:51 +00:00
when USE_TRACKING_ALLOCATOR {
for b in tracking_allocator.bad_free_array {
log.error("Bad free at: %v", b.location)
}
clear(&tracking_allocator.bad_free_array)
}
free_all(context.temp_allocator)
}
free_all(context.temp_allocator)
app.app_shutdown()
window.shutdown()
2024-08-14 11:53:51 +00:00
if logh_err == os.ERROR_NONE {
log.destroy_file_logger(logger)
}
when USE_TRACKING_ALLOCATOR {
for key, value in tracking_allocator.allocation_map {
log.error("%v: Leaked %v bytes\n", value.location, value.size)
}
mem.tracking_allocator_destroy(&tracking_allocator)
}
}
// make app use good GPU on laptops etc
@(export)
NvOptimusEnablement: u32 = 1
@(export)
AmdPowerXpressRequestHighPerformance: i32 = 1