From cc18c20435e0d985cbf79a5661e7871dcfb58621 Mon Sep 17 00:00:00 2001 From: condret Date: Tue, 5 Nov 2024 18:46:12 +0100 Subject: [PATCH] Minor refactor of GBJoypad lifecycles functions --- include/gb.h | 6 +++--- io/joypad.c | 16 +++++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/include/gb.h b/include/gb.h index 4c004bb..c89eb41 100644 --- a/include/gb.h +++ b/include/gb.h @@ -43,9 +43,9 @@ typedef struct gb_joypad_t { ut8 odata; } GBJoypad; -GBJoypad *gb_joypad_open(RIO *io); +bool gb_joypad_init(GBJoypad *joypad, RIO *io); void gb_joypad_continue(GBJoypad *joypad); -void gb_joypad_close(GBJoypad *joypad, RIO *io); +void gb_joypad_fini(GBJoypad *joypad, RIO *io); typedef struct gb_dma_t { ut64 seek; //17 bit seek and some flags @@ -173,7 +173,7 @@ typedef struct gameboy_t { RIO *io; RArch *arch; GBTimers *timers; - GBJoypad *joypad; + GBJoypad joypad; GBDMA *dma; GBPPU *ppu; ut64 addr; diff --git a/io/joypad.c b/io/joypad.c index a7dbb5b..26f8415 100644 --- a/io/joypad.c +++ b/io/joypad.c @@ -80,19 +80,18 @@ RIOPlugin r_io_plugin_gb_joypad = { .write = __write, }; -GBJoypad *gb_joypad_open (RIO *io) { - GBJoypad *joypad = R_NEW0 (GBJoypad); - if (!joypad) { - return NULL; +bool gb_joypad_init (GBJoypad *joypad, RIO *io) { + if (!joypad || !io) { + return false; } + joypad[0] = (const GBJoypad){0}; char uri[64]; memset (uri, 0x00, sizeof (char) * 64); sprintf (uri, "gb_joypad://%p", joypad); RIODesc *desc = r_io_desc_open_plugin (io, &r_io_plugin_gb_joypad, uri, R_PERM_RWX, 0); if (!desc) { - free (joypad); - return NULL; + return false; } joypad->fd = desc->fd; const ut8 *keys = SDL_GetKeyboardState (NULL); @@ -105,7 +104,7 @@ GBJoypad *gb_joypad_open (RIO *io) { joypad->b = SDL_SCANCODE_K; joypad->start = SDL_SCANCODE_SPACE; joypad->select = SDL_SCANCODE_KP_ENTER; - return joypad; + return true;; } void gb_joypad_continue(GBJoypad *joypad) { @@ -139,10 +138,9 @@ void gb_joypad_continue(GBJoypad *joypad) { } } -void gb_joypad_close (GBJoypad *joypad, RIO *io) { +void gb_joypad_fini (GBJoypad *joypad, RIO *io) { if (!joypad || !io) { return; } r_io_fd_close (io, joypad->fd); - free (joypad); }