Browse Source

allocate RenderState, and SDLHandles outside memory arena

main
cinnaboot 5 years ago
parent
commit
50f0ea4c22
  1. 22
      src/main.cpp

22
src/main.cpp

@ -111,21 +111,35 @@ initAssets(memory_arena* arena,
RenderState*
initRenderState(memory_arena* arena)
{
RenderState* rs = ARENA_ALLOC(arena, RenderState, 1);
RenderState* rs = UTIL_ALLOC(1, RenderState);
if (rs) {
rs->arena = arena;
rs->assets = initAssets(arena);
rs->gl_ctx = initGLContext(arena);
rs->xforms = ARENA_ALLOC(arena, transforms, 1);
rs->handles = ARENA_ALLOC(arena, SDLHandles, 1);
//rs->handles = ARENA_ALLOC(arena, SDLHandles, 1);
rs->handles = UTIL_ALLOC(1, SDLHandles);
rs->max_gl_meshes = 256;
// TODO: should have a different arena for gl_meshes, because these will
// be the most volatile objects
rs->gl_meshes = ARENA_ALLOC(arena, GLmesh, rs->max_gl_meshes);
}
return rs;
}
void
freeRenderState(RenderState*& rs)
{
if (rs) {
arenaFree(rs->arena);
utilSafeFree(rs->handles);
utilSafeFree(rs);
rs = nullptr;
}
}
bool
initGraphics(SDLHandles* handles)
{
@ -318,12 +332,12 @@ loop(RenderState* rs)
}
void
quit(RenderState* rs)
quit(RenderState*& rs)
{
SDL_GL_DeleteContext(rs->handles->sdl_gl_ctx);
SDL_DestroyWindow(rs->handles->window);
SDL_Quit();
std::free(rs->arena);
freeRenderState(rs);
}
int

Loading…
Cancel
Save