mirror of
https://github.com/libretro/RetroArch
synced 2025-02-20 06:40:18 +00:00
Merge branch 'master' of github.com:Themaister/SSNES into ssnes-consoles
Conflicts: dynamic.c
This commit is contained in:
commit
08ef01bb13
6
driver.c
6
driver.c
@ -160,6 +160,7 @@ void uninit_drivers(void)
|
||||
uninit_audio();
|
||||
}
|
||||
|
||||
#ifdef HAVE_DYLIB
|
||||
static void init_dsp_plugin(void)
|
||||
{
|
||||
#ifdef HAVE_DYLIB
|
||||
@ -228,6 +229,7 @@ static void deinit_dsp_plugin(void)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
static void adjust_audio_input_rate(void)
|
||||
{
|
||||
@ -318,7 +320,9 @@ void init_audio(void)
|
||||
g_extern.audio_data.src_ratio =
|
||||
(double)g_settings.audio.out_rate / g_settings.audio.in_rate;
|
||||
|
||||
#ifdef HAVE_DYLIB
|
||||
init_dsp_plugin();
|
||||
#endif
|
||||
}
|
||||
|
||||
void uninit_audio(void)
|
||||
@ -345,7 +349,9 @@ void uninit_audio(void)
|
||||
free(g_extern.audio_data.outsamples);
|
||||
g_extern.audio_data.outsamples = NULL;
|
||||
|
||||
#ifdef HAVE_DYLIB
|
||||
deinit_dsp_plugin();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef HAVE_DYLIB
|
||||
|
25
dynamic.c
25
dynamic.c
@ -25,13 +25,10 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "libsnes.hpp"
|
||||
|
||||
#if defined(HAVE_DYLIB) || defined(HAVE_DYNAMIC)
|
||||
#define HAVE_DYNAMIC_LOAD
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
#ifdef NEED_DYNAMIC
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#else
|
||||
@ -39,7 +36,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
#ifdef NEED_DYNAMIC
|
||||
#define DLSYM(lib, x) dylib_proc(lib, #x)
|
||||
|
||||
#define SYM(type, x) do { \
|
||||
@ -102,7 +99,7 @@ unsigned (*psnes_get_memory_size)(unsigned);
|
||||
void (*psnes_unload_cartridge)(void);
|
||||
void (*psnes_term)(void);
|
||||
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
#ifdef NEED_DYNAMIC
|
||||
static void set_environment(void);
|
||||
#endif
|
||||
|
||||
@ -150,13 +147,11 @@ static void load_dynamic(void)
|
||||
SYM(void (*)(void), snes_unload_cartridge);
|
||||
SYM(void (*)(void), snes_term);
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define SSYM(x) do { \
|
||||
p##x = x; \
|
||||
} while (0)
|
||||
|
||||
#ifndef HAVE_DYNAMIC_LOAD
|
||||
static void set_statics(void)
|
||||
{
|
||||
SSYM(snes_init);
|
||||
@ -189,13 +184,13 @@ static void set_statics(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void init_dlsym(void)
|
||||
void init_libsnes_sym(void)
|
||||
{
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
// Guarantee that we can do "dirty" casting.
|
||||
// Every OS that this program supports should pass this ...
|
||||
assert(sizeof(void*) == sizeof(void (*)(void)));
|
||||
|
||||
#ifdef HAVE_DYNAMIC
|
||||
// Try to verify that -lsnes was not linked in from other modules
|
||||
// since loading it dynamically and with -l will fail hard.
|
||||
function_t sym = dylib_proc(NULL, "snes_init");
|
||||
@ -223,12 +218,12 @@ void init_dlsym(void)
|
||||
set_statics();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
#ifdef NEED_DYNAMIC
|
||||
set_environment();
|
||||
#endif
|
||||
}
|
||||
|
||||
void uninit_dlsym(void)
|
||||
void uninit_libsnes_sym(void)
|
||||
{
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
if (lib_handle)
|
||||
@ -236,7 +231,7 @@ void uninit_dlsym(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef HAVE_DYNAMIC_LOAD
|
||||
#ifdef NEED_DYNAMIC
|
||||
// Platform independent dylib loading.
|
||||
dylib_t dylib_load(const char *path)
|
||||
{
|
||||
|
16
dynamic.h
16
dynamic.h
@ -21,15 +21,27 @@
|
||||
#include <stdbool.h>
|
||||
#include "libsnes.hpp"
|
||||
|
||||
void init_dlsym(void);
|
||||
void uninit_dlsym(void);
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)
|
||||
#define NEED_DYNAMIC
|
||||
#else
|
||||
#undef NEED_DYNAMIC
|
||||
#endif
|
||||
|
||||
void init_libsnes_sym(void);
|
||||
void uninit_libsnes_sym(void);
|
||||
|
||||
typedef void *dylib_t;
|
||||
#ifdef NEED_DYNAMIC
|
||||
typedef void (*function_t)(void);
|
||||
|
||||
dylib_t dylib_load(const char *path);
|
||||
void dylib_close(dylib_t lib);
|
||||
function_t dylib_proc(dylib_t lib, const char *proc);
|
||||
#endif
|
||||
|
||||
extern void (*psnes_init)(void);
|
||||
|
||||
|
6
ssnes.c
6
ssnes.c
@ -1944,7 +1944,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
parse_input(argc, argv);
|
||||
parse_config();
|
||||
init_dlsym();
|
||||
init_libsnes_sym();
|
||||
fill_title_buf();
|
||||
|
||||
psnes_init();
|
||||
@ -2097,7 +2097,7 @@ int main(int argc, char *argv[])
|
||||
psnes_unload_cartridge();
|
||||
psnes_term();
|
||||
uninit_drivers();
|
||||
uninit_dlsym();
|
||||
uninit_libsnes_sym();
|
||||
|
||||
return 0;
|
||||
|
||||
@ -2105,7 +2105,7 @@ error:
|
||||
psnes_unload_cartridge();
|
||||
psnes_term();
|
||||
uninit_drivers();
|
||||
uninit_dlsym();
|
||||
uninit_libsnes_sym();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user