mirror of
https://github.com/libretro/RetroArch
synced 2025-02-02 14:54:10 +00:00
(BlackBerry) First pass at using ios core .info files.
This commit is contained in:
parent
705b1045ae
commit
f4a0ed01e0
@ -1,186 +0,0 @@
|
|||||||
{
|
|
||||||
"snes9x_next_libretro_qnx.so":{
|
|
||||||
"display_name":"SNES / Super Famicom (SNES9x Next)",
|
|
||||||
"supported_extensions":"*.smc|*.fig|*.sfc|*.gd3|*.gd7|*.dx2|*.bsx|*.swc",
|
|
||||||
"corename":"SNES9x Next",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Super Nintendo Entertainment System",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"genesis_plus_gx_libretro_qnx.so":{
|
|
||||||
"display_name":"Sega (MS/GG/MD/CD)",
|
|
||||||
"supported_extensions":"*.md|*.smd|*.gen|*.sms|*.gg|*.sg|*.bin|*.cue|*.ios",
|
|
||||||
"corename":"Genesis Plus GX",
|
|
||||||
"manufacturer":"Sega",
|
|
||||||
"systemname":"Sega (Various)",
|
|
||||||
"default_overlay":"app/native/overlays/genesis6-landscape.cfg"
|
|
||||||
},
|
|
||||||
"vba_next_libretro_qnx.so":{
|
|
||||||
"display_name":"Game Boy Advance",
|
|
||||||
"supported_extensions":"*.gba",
|
|
||||||
"corename":"VBA Next",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Game Boy Advance",
|
|
||||||
"default_overlay":"app/native/overlays/box-gba.cfg"
|
|
||||||
},
|
|
||||||
"pcsx_rearmed_libretro_qnx.so":{
|
|
||||||
"display_name":"PlayStation1",
|
|
||||||
"supported_extensions":"*.bin|*.cue|*.img|*.mdf|*.pbp|*.cbn|*.toc",
|
|
||||||
"corename":"PCSX ReARMed",
|
|
||||||
"manufacturer":"Sony",
|
|
||||||
"systemname":"PlayStation",
|
|
||||||
"default_overlay":"app/native/overlays/psx-landscape.cfg"
|
|
||||||
},
|
|
||||||
"fb_alpha_libretro_qnx.so":{
|
|
||||||
"display_name":"Arcade",
|
|
||||||
"supported_extensions":"*.zip|*.ZIP",
|
|
||||||
"corename":"Final Burn Alpha",
|
|
||||||
"manufacturer":"Various",
|
|
||||||
"systemname":"Arcade (various)",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"gambatte_libretro_qnx.so":{
|
|
||||||
"display_name":"Game Boy / Game Boy Color",
|
|
||||||
"supported_extensions":"*.gb|*.gbc|*.dmg",
|
|
||||||
"corename":"gambatte",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Game Boy Color",
|
|
||||||
"default_overlay":"app/native/overlays/gameboy-landscape.cfg"
|
|
||||||
},
|
|
||||||
"stella_libretro_qnx.so":{
|
|
||||||
"display_name":"Atari 2600",
|
|
||||||
"supported_extensions":"*.a26|*.bin",
|
|
||||||
"corename":"Stella",
|
|
||||||
"manufacturer":"Atari",
|
|
||||||
"systemname":"Atari 2600",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"tyrquake_libretro_qnx.so":{
|
|
||||||
"display_name":"TyrQuake",
|
|
||||||
"supported_extensions":"*.pak",
|
|
||||||
"corename":"prboom",
|
|
||||||
"manufacturer":"",
|
|
||||||
"systemname":"",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"desmume_libretro_qnx.so":{
|
|
||||||
"display_name":"Nintendo DS",
|
|
||||||
"supported_extensions":"*.nds",
|
|
||||||
"corename":"DeSmuME",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Nintendo DS",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"mednafen_ngp_libretro_qnx.so":{
|
|
||||||
"display_name":"Neo Geo Pocket (Color)",
|
|
||||||
"supported_extensions":"*.ngp|*.ngc",
|
|
||||||
"corename":"Mednafen Neopop",
|
|
||||||
"manufacturer":"SNK",
|
|
||||||
"systemname":"Neo Geo Pocket (Color)",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"mednafen_pce_libretro_qnx.so":{
|
|
||||||
"display_name":"PC Engine/TurboGrafx-16",
|
|
||||||
"supported_extensions":"*.pce|*.sgx|*.cue",
|
|
||||||
"corename":"Mednafen PCE Fast",
|
|
||||||
"manufacturer":"NEC",
|
|
||||||
"systemname":"PC Engine/TurboGrafx-16",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"mednafen_psx_libretro_qnx.so":{
|
|
||||||
"display_name":"PlayStation1 (Mednafen PSX)",
|
|
||||||
"supported_extensions":"*.cue|*.toc",
|
|
||||||
"corename":"Mednafen PSX",
|
|
||||||
"manufacturer":"Sony",
|
|
||||||
"systemname":"PlayStation",
|
|
||||||
"default_overlay":"app/native/overlays/psx-landscape.cfg"
|
|
||||||
},
|
|
||||||
"mednafen_vb_libretro_qnx.so":{
|
|
||||||
"display_name":"Virtual Boy",
|
|
||||||
"supported_extensions":"*.vb|*.vboy|*.bin",
|
|
||||||
"corename":"Mednafen VB",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Virtual Boy",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"mednafen_wswan_libretro_qnx.so":{
|
|
||||||
"display_name":"WonderSwan (Color)",
|
|
||||||
"supported_extensions":"*.ws|*.wsc",
|
|
||||||
"corename":"Mednafen WonderSwan",
|
|
||||||
"manufacturer":"Bandai",
|
|
||||||
"systemname":"WonderSwan (Color)",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"mednafen_gba_libretro_qnx.so":{
|
|
||||||
"display_name":"Game Boy Advance (Mednafen VBA)",
|
|
||||||
"supported_extensions":"*.gba",
|
|
||||||
"corename":"Mednafen VBA",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Game Boy Advance",
|
|
||||||
"default_overlay":"app/native/overlays/gba-landscape.cfg"
|
|
||||||
},
|
|
||||||
"nestopia_libretro_qnx.so":{
|
|
||||||
"display_name":"NES / Famicom (NEStopia)",
|
|
||||||
"supported_extensions":"*.nes|*.fds",
|
|
||||||
"corename":"Nestopia",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Nintendo Entertainment System",
|
|
||||||
"default_overlay":"app/native/overlays/nes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"nxengine_libretro_qnx.so":{
|
|
||||||
"display_name":"NXEngine (Cave Story)",
|
|
||||||
"supported_extensions":"*.exe",
|
|
||||||
"corename":"NXEngine",
|
|
||||||
"manufacturer":"",
|
|
||||||
"systemname":"",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"prboom_libretro_qnx.so":{
|
|
||||||
"display_name":"PrBoom (DOOM)",
|
|
||||||
"supported_extensions":"*.wad|*.iwad",
|
|
||||||
"corename":"prboom",
|
|
||||||
"manufacturer":"",
|
|
||||||
"systemname":"",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"fceumm_libretro_qnx.so":{
|
|
||||||
"display_name":"NES / Famicom (FCEUmm)",
|
|
||||||
"supported_extensions":"*.nes|*.unif",
|
|
||||||
"corename":"FCEUmm",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Nintendo Entertainment System",
|
|
||||||
"default_overlay":"app/native/overlays/nes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"modelviewer_libretro_qnx.so":{
|
|
||||||
"display_name":"Modelviewer",
|
|
||||||
"supported_extensions":"*.obj",
|
|
||||||
"corename":"Modelviewer",
|
|
||||||
"manufacturer":"Various",
|
|
||||||
"systemname":"3D Models",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"quicknes_libretro_qnx.so":{
|
|
||||||
"display_name":"NES / Famicom (QuickNES)",
|
|
||||||
"supported_extensions":"*.nes",
|
|
||||||
"corename":"QuickNES",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Nintendo Entertainment System",
|
|
||||||
"default_overlay":"app/native/overlays/nes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"scenewalker_libretro_qnx.so":{
|
|
||||||
"display_name":"SceneWalker",
|
|
||||||
"supported_extensions":"*.obj",
|
|
||||||
"corename":"SceneWalker",
|
|
||||||
"manufacturer":"Various",
|
|
||||||
"systemname":"3D Models",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
},
|
|
||||||
"snes9x_libretro_qnx.so":{
|
|
||||||
"display_name":"SNES / Super Famicom (SNES9x)",
|
|
||||||
"supported_extensions":"*.smc|*.fig|*.sfc|*.gd3|*.gd7|*.dx2|*.bsx|*.swc",
|
|
||||||
"corename":"SNES9x",
|
|
||||||
"manufacturer":"Nintendo",
|
|
||||||
"systemname":"Super Nintendo Entertainment System",
|
|
||||||
"default_overlay":"app/native/overlays/snes-landscape.cfg"
|
|
||||||
}
|
|
||||||
}
|
|
@ -69,6 +69,7 @@
|
|||||||
<asset path="../../media/overlays">overlays</asset>
|
<asset path="../../media/overlays">overlays</asset>
|
||||||
<asset path="assets">assets</asset>
|
<asset path="assets">assets</asset>
|
||||||
<asset path="assets/images/icon.png">icon.png</asset>
|
<asset path="assets/images/icon.png">icon.png</asset>
|
||||||
|
<asset path="../../ios/modules">modules</asset>
|
||||||
|
|
||||||
|
|
||||||
<!-- Bright theme is used for this application. -->
|
<!-- Bright theme is used for this application. -->
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "conf/config_file.h"
|
#include "conf/config_file.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
#include "core_info.h"
|
||||||
|
|
||||||
#ifdef HAVE_RGUI
|
#ifdef HAVE_RGUI
|
||||||
#include "frontend/menu/rgui.h"
|
#include "frontend/menu/rgui.h"
|
||||||
@ -50,10 +51,6 @@ using namespace bb::device;
|
|||||||
extern screen_window_t screen_win;
|
extern screen_window_t screen_win;
|
||||||
extern screen_context_t screen_ctx;
|
extern screen_context_t screen_ctx;
|
||||||
|
|
||||||
//Use after calling findCores
|
|
||||||
//If we allow user added libs, this needs to be error checked
|
|
||||||
#define GET_CORE_INFO(x, y) coreInfo[coreList[x]].toMap()[y].toString()
|
|
||||||
|
|
||||||
RetroArch::RetroArch()
|
RetroArch::RetroArch()
|
||||||
{
|
{
|
||||||
qmlRegisterType<bb::cascades::pickers::FilePicker>("bb.cascades.pickers", 1, 0, "FilePicker");
|
qmlRegisterType<bb::cascades::pickers::FilePicker>("bb.cascades.pickers", 1, 0, "FilePicker");
|
||||||
@ -90,7 +87,8 @@ RetroArch::RetroArch()
|
|||||||
//Get core DropDown reference to populate it in C++
|
//Get core DropDown reference to populate it in C++
|
||||||
coreSelection = mAppPane->findChild<DropDown*>("dropdown_core");
|
coreSelection = mAppPane->findChild<DropDown*>("dropdown_core");
|
||||||
connect(coreSelection, SIGNAL(selectedValueChanged(QVariant)), this, SLOT(onCoreSelected(QVariant)));
|
connect(coreSelection, SIGNAL(selectedValueChanged(QVariant)), this, SLOT(onCoreSelected(QVariant)));
|
||||||
findCores();
|
core_info_list = get_core_info_list();
|
||||||
|
populateCores(core_info_list);
|
||||||
|
|
||||||
Application::instance()->setScene(mAppPane);
|
Application::instance()->setScene(mAppPane);
|
||||||
|
|
||||||
@ -113,7 +111,7 @@ RetroArch::RetroArch()
|
|||||||
|
|
||||||
RetroArch::~RetroArch()
|
RetroArch::~RetroArch()
|
||||||
{
|
{
|
||||||
free(coreList);
|
free_core_info_list(core_info_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RetroArch::aboutToQuit()
|
void RetroArch::aboutToQuit()
|
||||||
@ -249,10 +247,11 @@ void RetroArch::onCoreSelected(QVariant value)
|
|||||||
|
|
||||||
core.clear();
|
core.clear();
|
||||||
core.append("app/native/lib/");
|
core.append("app/native/lib/");
|
||||||
core.append(coreList[coreSelectedIndex]);
|
core.append(core_info_list->list[coreSelectedIndex].path);
|
||||||
emit coreChanged(core);
|
emit coreChanged(core);
|
||||||
|
|
||||||
romExtensions = GET_CORE_INFO(coreSelectedIndex, "supported_extensions");
|
romExtensions = QString("*.%1").arg(core_info_list->list[coreSelectedIndex].supportedExtensions);
|
||||||
|
romExtensions.replace("|", "|*.");
|
||||||
emit romExtensionsChanged(romExtensions);
|
emit romExtensionsChanged(romExtensions);
|
||||||
|
|
||||||
qDebug() << "Core Selected: " << core;
|
qDebug() << "Core Selected: " << core;
|
||||||
@ -289,59 +288,21 @@ void RetroArch::startEmulator()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RetroArch::findCores()
|
void RetroArch::populateCores(core_info_list_t * info)
|
||||||
{
|
{
|
||||||
DIR *dirp;
|
int i;
|
||||||
struct dirent* direntp;
|
Option *tmp;
|
||||||
int count=0, i=0;
|
|
||||||
|
|
||||||
dirp = opendir(g_settings.libretro);
|
//Populate DropDown
|
||||||
if( dirp != NULL )
|
for (i = 0; i < info->count; ++i)
|
||||||
{
|
{
|
||||||
for(;;)
|
qDebug() << info->list[i].displayName;
|
||||||
{
|
|
||||||
direntp = readdir( dirp );
|
|
||||||
if( direntp == NULL ) break;
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
fflush(stdout);
|
|
||||||
rewinddir(dirp);
|
|
||||||
|
|
||||||
if(count==2)
|
tmp = Option::create().text(QString(info->list[i].displayName))
|
||||||
{
|
.value(i);
|
||||||
printf("No Cores Found");fflush(stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
coreList = (char**)malloc(count*sizeof(char*));
|
coreSelection->add(tmp);
|
||||||
count = 0;
|
|
||||||
|
|
||||||
for(;;)
|
|
||||||
{
|
|
||||||
direntp = readdir( dirp );
|
|
||||||
if( direntp == NULL ) break;
|
|
||||||
coreList[count++] = strdup((char*)direntp->d_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Load info for Cores
|
|
||||||
JsonDataAccess jda;
|
|
||||||
|
|
||||||
coreInfo = jda.load("app/native/assets/coreInfo.json").toMap();
|
|
||||||
|
|
||||||
Option *tmp;
|
|
||||||
|
|
||||||
//Populate DropDown
|
|
||||||
for (i = 2; i < count; ++i)
|
|
||||||
{
|
|
||||||
qDebug() << GET_CORE_INFO(i, "display_name");
|
|
||||||
|
|
||||||
tmp = Option::create().text(GET_CORE_INFO(i, "display_name"))
|
|
||||||
.value(i);
|
|
||||||
|
|
||||||
coreSelection->add(tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir(dirp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RetroArch::findDevices()
|
void RetroArch::findDevices()
|
||||||
@ -376,9 +337,7 @@ void RetroArch::initRASettings()
|
|||||||
|
|
||||||
//If Physical keyboard or a device mapped to player 1, hide overlay
|
//If Physical keyboard or a device mapped to player 1, hide overlay
|
||||||
//TODO: Should there be a minimized/quick settings only overlay?
|
//TODO: Should there be a minimized/quick settings only overlay?
|
||||||
if(!hwInfo->isPhysicalKeyboardDevice() && !port_device[0])
|
if(hwInfo->isPhysicalKeyboardDevice() || port_device[0])
|
||||||
strlcpy(g_settings.input.overlay, GET_CORE_INFO(coreSelectedIndex, "default_overlay").toAscii().constData(), sizeof(g_settings.input.overlay));
|
|
||||||
else
|
|
||||||
*g_settings.input.overlay = '\0';
|
*g_settings.input.overlay = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <screen/screen.h>
|
#include <screen/screen.h>
|
||||||
#include <sys/neutrino.h>
|
#include <sys/neutrino.h>
|
||||||
#include "ButtonMap.h"
|
#include "ButtonMap.h"
|
||||||
|
#include "core_info.h"
|
||||||
|
|
||||||
using namespace bb::cascades;
|
using namespace bb::cascades;
|
||||||
|
|
||||||
@ -33,11 +34,11 @@ public:
|
|||||||
~ RetroArch();
|
~ RetroArch();
|
||||||
|
|
||||||
Q_INVOKABLE void startEmulator();
|
Q_INVOKABLE void startEmulator();
|
||||||
Q_INVOKABLE void findCores();
|
|
||||||
Q_INVOKABLE void findDevices();
|
Q_INVOKABLE void findDevices();
|
||||||
Q_INVOKABLE int mapButton(void* device, int player, int button);
|
Q_INVOKABLE int mapButton(void* device, int player, int button);
|
||||||
Q_INVOKABLE QString buttonToString(void* deviceVp, int button);
|
Q_INVOKABLE QString buttonToString(void* deviceVp, int button);
|
||||||
Q_INVOKABLE void discoverController();
|
Q_INVOKABLE void discoverController();
|
||||||
|
void populateCores(core_info_list_t * info);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void romChanged(QString);
|
void romChanged(QString);
|
||||||
@ -77,6 +78,7 @@ private:
|
|||||||
QVariantMap coreInfo;
|
QVariantMap coreInfo;
|
||||||
char **coreList;
|
char **coreList;
|
||||||
int coreSelectedIndex;
|
int coreSelectedIndex;
|
||||||
|
core_info_list_t *core_info_list;
|
||||||
|
|
||||||
ButtonMap *buttonMap;
|
ButtonMap *buttonMap;
|
||||||
};
|
};
|
||||||
|
92
blackberry-qnx/bb10/src/core_info.c
Normal file
92
blackberry-qnx/bb10/src/core_info.c
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
#include "core_info.h"
|
||||||
|
#include "general.h"
|
||||||
|
#include <math.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
|
core_info_list_t *get_core_info_list()
|
||||||
|
{
|
||||||
|
DIR *dirp;
|
||||||
|
struct dirent* direntp;
|
||||||
|
int count=0, i=0;
|
||||||
|
core_info_t *core_info;
|
||||||
|
core_info_list_t *core_info_list;
|
||||||
|
|
||||||
|
if(!*g_settings.libretro)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
dirp = opendir(g_settings.libretro);
|
||||||
|
if( dirp == NULL )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
//Count number of cores
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
direntp = readdir( dirp );
|
||||||
|
if( direntp == NULL ) break;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
rewinddir(dirp);
|
||||||
|
|
||||||
|
if(count == 2)
|
||||||
|
{
|
||||||
|
//Only . and ..
|
||||||
|
closedir(dirp);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
core_info = (core_info_t*)malloc(count*sizeof(core_info_t));
|
||||||
|
core_info_list = malloc(sizeof(core_info_list_t));
|
||||||
|
core_info_list->list = core_info;
|
||||||
|
count = 0;
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
direntp = readdir( dirp );
|
||||||
|
if( direntp == NULL ) break;
|
||||||
|
if(strcmp((char*)direntp->d_name, ".")==0 || strcmp((char*)direntp->d_name, "..")==0)
|
||||||
|
continue;
|
||||||
|
core_info[count++].path = strdup((char*)direntp->d_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
core_info_list->count = count;
|
||||||
|
|
||||||
|
for(i=0;i<count;++i)
|
||||||
|
{
|
||||||
|
char info_path[255];
|
||||||
|
snprintf(info_path, sizeof(info_path), "app/native/modules/");
|
||||||
|
strncat(info_path, core_info[i].path, sizeof(info_path)-strlen(info_path)-1);
|
||||||
|
char * substr = strrchr(info_path, '_');
|
||||||
|
if(substr)
|
||||||
|
{
|
||||||
|
info_path[strlen(info_path) - strlen(substr)] = '\0';
|
||||||
|
strncat(info_path, ".info", sizeof(info_path)-strlen(info_path)-1);
|
||||||
|
core_info[i].data = config_file_new(info_path);
|
||||||
|
|
||||||
|
if(core_info[i].data)
|
||||||
|
{
|
||||||
|
config_get_string(core_info[i].data, "display_name", &core_info[i].displayName);
|
||||||
|
config_get_string(core_info[i].data, "supported_extensions", &core_info[i].supportedExtensions);
|
||||||
|
} else {
|
||||||
|
core_info[i].displayName = "Not Supported";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(dirp);
|
||||||
|
|
||||||
|
return core_info_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void free_core_info_list(core_info_list_t * core_info_list)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i=0;i<core_info_list->count;++i)
|
||||||
|
{
|
||||||
|
free(core_info_list->list[i].path);
|
||||||
|
free(core_info_list->list[i].displayName);
|
||||||
|
free(core_info_list->list[i].supportedExtensions);
|
||||||
|
config_file_free(core_info_list->list[i].data);
|
||||||
|
}
|
||||||
|
free(core_info_list->list);
|
||||||
|
free(core_info_list);
|
||||||
|
}
|
30
blackberry-qnx/bb10/src/core_info.h
Normal file
30
blackberry-qnx/bb10/src/core_info.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#ifndef CORE_INFO_H_
|
||||||
|
#define CORE_INFO_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "conf/config_file.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char * path;
|
||||||
|
config_file_t* data;
|
||||||
|
char * configPath;
|
||||||
|
char * displayName;
|
||||||
|
char * supportedExtensions;
|
||||||
|
} core_info_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
core_info_t *list;
|
||||||
|
int count;
|
||||||
|
} core_info_list_t;
|
||||||
|
|
||||||
|
core_info_list_t *get_core_info_list();
|
||||||
|
void free_core_info_list(core_info_list_t * core_info_list);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* CORE_INFO_H_ */
|
Loading…
x
Reference in New Issue
Block a user