81 lines
1.8 KiB
Odin
81 lines
1.8 KiB
Odin
package releaser
|
|
|
|
import "core:log"
|
|
import "core:os"
|
|
import "core:mem"
|
|
|
|
import app ".."
|
|
import "../window"
|
|
|
|
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
|
|
}
|
|
|
|
window_open := true
|
|
for window_open {
|
|
window_open = app.app_update() && window.update()
|
|
|
|
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()
|
|
|
|
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 |