Fix up some issues with dynamic loading.

This commit is contained in:
Themaister 2010-12-30 14:11:56 +01:00
parent 73203b75c1
commit 19e2b2768b
5 changed files with 10 additions and 7 deletions

View File

@ -47,7 +47,7 @@ ifeq ($(HAVE_DL), 1)
LIBS += -ldl
endif
CFLAGS = -Wall -O3 -std=gnu99 -I.
CFLAGS = -Wall -O3 -g -std=gnu99 -I.
all: $(TARGET) config.mk

View File

@ -61,6 +61,7 @@ void (*psnes_term)(void);
#ifdef HAVE_DL
static void load_dynamic(void)
{
SSNES_LOG("Loading dynamic libsnes from: \"%s\"\n", g_settings.libsnes);
lib_handle = dlopen(g_settings.libsnes, RTLD_LAZY);
if (!lib_handle)
{

View File

@ -80,6 +80,7 @@ struct global
FILE *rom_file;
char savefile_name_srm[256];
char config_path[256];
char basename[256];
};
void parse_config(void);

10
ssnes.c
View File

@ -259,12 +259,8 @@ static void parse_input(int argc, char *argv[])
strcpy(tmp, argv[optind]);
char *dst = strrchr(tmp, '.');
if (dst)
{
*dst = '\0';
psnes_set_cartridge_basename(tmp);
}
else
psnes_set_cartridge_basename(tmp);
strncpy(g_extern.basename, tmp, sizeof(g_extern.basename) - 1);
SSNES_LOG("Opening file: \"%s\"\n", argv[optind]);
g_extern.rom_file = fopen(argv[optind], "rb");
@ -288,10 +284,12 @@ int main(int argc, char *argv[])
{
parse_input(argc, argv);
parse_config();
init_dlsym();
psnes_init();
if (strlen(g_extern.basename) > 0)
psnes_set_cartridge_basename(g_extern.basename);
SSNES_LOG("Version of libsnes API: %u.%u\n", psnes_library_revision_major(), psnes_library_revision_minor());
void *rom_buf;
ssize_t rom_len = 0;

View File

@ -1,5 +1,8 @@
##### Config file for SSNES
## If enabled, load libsnes from a dynamic location.
# libsnes_path = "/path/to/libsnes.so"
#### Video
# Windowed xscale and yscale (Real x res: 296 * xscale, real y scale: 224 * xscale)