Selaa lähdekoodia

Various memory leak fixes

master
Nathaniel Walizer 11 kuukautta sitten
vanhempi
commit
f7e12ef9a9
5 muutettua tiedostoa jossa 25 lisäystä ja 6 poistoa
  1. +4
    -0
      src/cart.c
  2. +5
    -4
      src/nese.c
  3. +11
    -0
      src/overlay.c
  4. +1
    -0
      src/overlay.h
  5. +4
    -2
      src/sdl_render.c

+ 4
- 0
src/cart.c Näytä tiedosto

@@ -70,6 +70,10 @@ int nes_cart_init_mem(nes_cart* cart, void* mem, int len) {
}

void nes_cart_done(nes_cart* cart) {
if (NULL != cart->mapper) {
nes_map_done(cart->mapper);
cart->mapper = NULL;
}
if (NULL != cart->ines_mem) {
unmap_file(cart->ines_mem, cart->ines_size);
cart->ines_mem = NULL;


+ 5
- 4
src/nese.c Näytä tiedosto

@@ -124,7 +124,7 @@ static int select_rom(menu_state* menu, nes_Renderer* rend,
nes_cart new_cart = {0};

while (0 == status && NULL == cart.file) {
// Display a load failure message?
// Display a load failure message
if (NULL != cart.filename) {
char message[1024];
snprintf(message, sizeof(message) - 1,
@@ -134,10 +134,11 @@ static int select_rom(menu_state* menu, nes_Renderer* rend,
// Program closed inside modal
status = input_Result_Quit;
}
free(cart.filename);
cart.filename = NULL;
}

if (0 == status) {
// If we didn't launch with a file, run the loader
cart.filename = run_main_menu(menu, rend,
input, sys);

@@ -226,9 +227,9 @@ int main(int argc, char* argv[]) {
}
}

menu_state main_menu = {0};
// If we didn't launch with a file, run the loader
if (0 == status && NULL == cart.file) {
status = select_rom(&main_menu, rend, input,
status = select_rom(NULL, rend, input,
&sys, &cart);
}



+ 11
- 0
src/overlay.c Näytä tiedosto

@@ -10,6 +10,17 @@ int overlay_init(Overlay* overlay) {
return 0;
}

void overlay_done(Overlay* overlay) {
overlay_message* next = NULL;
for ( overlay_message* message = overlay->messages;
NULL != message;
message = next) {
next = message->next;
free(message->string);
free(message);
}
}

int overlay_clear(Overlay* overlay) {
int n_cleared = 0;
for ( overlay_message* message = overlay->messages;


+ 1
- 0
src/overlay.h Näytä tiedosto

@@ -17,6 +17,7 @@ typedef struct {


int overlay_init(Overlay*);
void overlay_done(Overlay*);
int overlay_add_message(Overlay*, const char*, int expiry);
int overlay_clear_message(Overlay*, int id);
int overlay_clear(Overlay*);


+ 4
- 2
src/sdl_render.c Näytä tiedosto

@@ -43,8 +43,9 @@ typedef struct {
SDL_Surface* background;
SDL_Surface* foreground;
SDL_Surface* target;
SDL_Texture* texture;
sdl_overlay_font font;

SDL_Texture* texture;
int win_w;
int win_h;
} sdl_render_data;
@@ -95,7 +96,6 @@ static int sdl_render_init(nes_Renderer* rend) {

} else {
overlay_init(&rend->overlay);
// TODO: Cleanup
sdl_overlay_font_init(data->renderer, &data->font);
}
}
@@ -169,6 +169,8 @@ static int sdl_render_init(nes_Renderer* rend) {

static void sdl_render_done(nes_Renderer* rend) {
sdl_render_data* data = (sdl_render_data*)rend->data;
overlay_done(&rend->overlay);
sdl_overlay_font_done(&data->font);
SDL_DestroyTexture(data->texture);
SDL_FreeSurface(data->foreground);
SDL_FreeSurface(data->background);


Loading…
Peruuta
Tallenna