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