mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2025-02-02 13:52:36 +01:00
- cleaned up cover and banner download coding.
This commit is contained in:
parent
b44c415602
commit
43e2dd50e4
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB |
@ -1050,8 +1050,7 @@ private:
|
||||
};
|
||||
void _game(bool launch = false);
|
||||
void _downloadUrl(const char *url, u8 **dl_file, u32 *dl_size);
|
||||
void _download(string gameId = string());
|
||||
void _downloadBnr(const char *gameID);
|
||||
void _download(string gameId = string(), int dl_type = 0);
|
||||
bool _code(char code[4], bool erase = false);
|
||||
void _about(bool help = false);
|
||||
bool _wbfsOp(WBFS_OP op);
|
||||
@ -1153,10 +1152,10 @@ private:
|
||||
//
|
||||
void _setThrdMsg(const wstringEx &msg, float progress);
|
||||
void _setDumpMsg(const wstringEx &msg, float progress, float fileprog);
|
||||
int _coverDownloader();
|
||||
void _downloadProgress(void *obj, int size, int position);
|
||||
int _coverDownloader();
|
||||
int _gametdbDownloaderAsync();
|
||||
int _downloadBnrAll();
|
||||
int _bannerDownloader();
|
||||
|
||||
static s32 _networkComplete(s32 result, void *usrData);
|
||||
void _initAsyncNetwork();
|
||||
@ -1189,7 +1188,6 @@ private:
|
||||
void _listEmuNands(const char *path, vector<string> &emuNands);
|
||||
|
||||
int _downloadCheatFileAsync();
|
||||
int _downloadBannerAsync();
|
||||
static void * _downloadUrlAsync(void *obj);
|
||||
|
||||
void _playGameSound(void);
|
||||
|
@ -78,7 +78,7 @@ void CMenu::_CoverBanner(void)
|
||||
if(m_btnMgr.selected(m_coverbnrBtnDlCover))
|
||||
{
|
||||
_hideCoverBanner();
|
||||
_download(id);
|
||||
_download(id, 1);
|
||||
_showCoverBanner();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_coverbnrBtnDeleteCover))
|
||||
@ -95,7 +95,7 @@ void CMenu::_CoverBanner(void)
|
||||
fsop_deleteFile(fmt("%s/%s.bnr", m_customBnrDir.c_str(), id));
|
||||
fsop_deleteFile(fmt("%s/%.3s.bnr", m_bnrCacheDir.c_str(), id));
|
||||
fsop_deleteFile(fmt("%s/%.3s.bnr", m_customBnrDir.c_str(), id));
|
||||
_downloadBnr(id);
|
||||
_download(id, 2);
|
||||
m_newGame = true;
|
||||
_showCoverBanner();
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ static const char FMT_CPIC_URL[] = "http://art.gametdb.com/{console}/cover2/{loc
|
||||
|
||||
static block download = { 0, 0 };
|
||||
static bool settingsmenu = false;
|
||||
static string m_coverDLGameId;
|
||||
static string dl_gameID;
|
||||
|
||||
void CMenu::_hideSettings(bool instant)
|
||||
{
|
||||
@ -227,9 +227,9 @@ void CMenu::_showDownload(void)
|
||||
|
||||
int count, countFlat;
|
||||
u32 n;
|
||||
void CMenu::_download(string gameId)
|
||||
void CMenu::_download(string gameId, int dl_type)
|
||||
{
|
||||
m_coverDLGameId = gameId;
|
||||
dl_gameID = gameId;
|
||||
bool dl_finished = false;
|
||||
SetupInput();
|
||||
_showDownload();
|
||||
@ -251,7 +251,7 @@ void CMenu::_download(string gameId)
|
||||
m_btnMgr.hide(m_wbfsPBar);
|
||||
m_btnMgr.hide(m_wbfsLblMessage);
|
||||
m_btnMgr.hide(m_wbfsLblDialog);
|
||||
if(strlen(m_coverDLGameId.c_str()) > 0)
|
||||
if(strlen(dl_gameID.c_str()) > 0)
|
||||
break;
|
||||
_showDownload();
|
||||
}
|
||||
@ -262,9 +262,9 @@ void CMenu::_download(string gameId)
|
||||
m_btnMgr.up();
|
||||
else if(BTN_DOWN_PRESSED)
|
||||
m_btnMgr.down();
|
||||
if(BTN_A_PRESSED || !gameId.empty())
|
||||
if(BTN_A_PRESSED || dl_type > 0)
|
||||
{
|
||||
if(m_btnMgr.selected(m_downloadBtnAll) || !gameId.empty())
|
||||
if(m_btnMgr.selected(m_downloadBtnAll) || dl_type == 1)
|
||||
{
|
||||
m_refreshGameList = true;// not needed instead just initcf()
|
||||
|
||||
@ -308,11 +308,11 @@ void CMenu::_download(string gameId)
|
||||
else if(ret == -3)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg30", L"No covers missing."));
|
||||
dl_finished = true;
|
||||
gameId.clear();
|
||||
dl_type = 0;
|
||||
//maybe show back button
|
||||
//m_btnMgr.show(m_downloadBtnBack);
|
||||
}
|
||||
if(m_btnMgr.selected(m_downloadBtnBanners))// || !gameId.empty())
|
||||
if(m_btnMgr.selected(m_downloadBtnBanners) || dl_type == 2)
|
||||
{
|
||||
//m_refreshGameList = true;
|
||||
|
||||
@ -334,13 +334,18 @@ void CMenu::_download(string gameId)
|
||||
m_btnMgr.show(m_wbfsLblDialog);
|
||||
|
||||
_start_pThread();
|
||||
int ret = _downloadBnrAll();
|
||||
int ret = _bannerDownloader();
|
||||
_stop_pThread();
|
||||
if(ret == 0)
|
||||
{
|
||||
if(dl_gameID.empty())
|
||||
{
|
||||
m_thrdMessage = wfmt(_fmt("dlmsg5", L"%i/%i files downloaded."), count, n);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, m_thrdMessage);
|
||||
}
|
||||
else
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg14", L"Done."));
|
||||
}
|
||||
else if(ret == -1)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg34", L"Banner URL not set properly!"));//banner url not set
|
||||
else if(ret == -2)
|
||||
@ -348,7 +353,7 @@ void CMenu::_download(string gameId)
|
||||
else if(ret == -3)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg33", L"No banners missing."));// no banners missing
|
||||
dl_finished = true;
|
||||
gameId.clear();
|
||||
dl_type = 0;
|
||||
//maybe show back button
|
||||
//m_btnMgr.show(m_downloadBtnBack);
|
||||
}
|
||||
@ -883,41 +888,6 @@ static string makeURL(const string format, const string gameId, const string cou
|
||||
|
||||
return url;
|
||||
}
|
||||
/*
|
||||
static bool checkPNGBuf(u8 *data)
|
||||
{
|
||||
if(data == NULL)
|
||||
return false;
|
||||
|
||||
PNGUPROP imgProp;
|
||||
IMGCTX ctx = PNGU_SelectImageFromBuffer(data);
|
||||
if (ctx == NULL)
|
||||
return false;
|
||||
int ret = PNGU_GetImageProperties(ctx, &imgProp);
|
||||
PNGU_ReleaseImageContext(ctx);
|
||||
return ret == PNGU_OK;
|
||||
}
|
||||
|
||||
static bool checkPNGFile(const char *filename)
|
||||
{
|
||||
u32 fileSize = 0;
|
||||
u8 *buffer = fsop_ReadFile(filename, &fileSize);
|
||||
bool ret = false;
|
||||
if(buffer != NULL)
|
||||
{
|
||||
ret = checkPNGBuf(buffer);
|
||||
MEM2_free(buffer);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
*/
|
||||
void CMenu::_setThrdMsg(const wstringEx &msg, float progress)
|
||||
{
|
||||
if (m_thrdStop) return;
|
||||
if (msg != L"...") m_thrdMessage = msg;
|
||||
m_thrdMessageAdded = true;
|
||||
m_thrdProgress = progress;
|
||||
}
|
||||
|
||||
void CMenu::_downloadProgress(void *obj, int size, int position)
|
||||
{
|
||||
@ -932,6 +902,79 @@ void CMenu::_downloadProgress(void *obj, int size, int position)
|
||||
}
|
||||
}
|
||||
|
||||
void * CMenu::_pThread(void *obj)
|
||||
{
|
||||
CMenu *m = (CMenu*)obj;
|
||||
m->SetupInput();
|
||||
while(m->m_thrdInstalling)
|
||||
{
|
||||
m->_mainLoopCommon();
|
||||
if(m->m_thrdUpdated)
|
||||
{
|
||||
m->m_thrdUpdated = false;
|
||||
m->_downloadProgress(obj, m->m_thrdTotal, m->m_thrdWritten);
|
||||
if(m->m_thrdProgress > 0.f)
|
||||
{
|
||||
m_btnMgr.setText(m->m_wbfsLblMessage, wfmt(L"%i%%", (int)(m->m_thrdProgress * 100.f)));
|
||||
m_btnMgr.setProgress(m->m_wbfsPBar, m->m_thrdProgress);
|
||||
}
|
||||
m->m_thrdDone = true;
|
||||
}
|
||||
if(m->m_thrdMessageAdded)
|
||||
{
|
||||
m->m_thrdMessageAdded = false;
|
||||
if(!m->m_thrdMessage.empty())
|
||||
m_btnMgr.setText(m->m_wbfsLblDialog, m->m_thrdMessage);
|
||||
}
|
||||
}
|
||||
m->m_thrdWorking = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CMenu::_start_pThread(void)
|
||||
{
|
||||
m_thrdPtr = LWP_THREAD_NULL;
|
||||
m_thrdWorking = true;
|
||||
m_thrdMessageAdded = false;
|
||||
m_thrdInstalling = true;
|
||||
m_thrdUpdated = false;
|
||||
m_thrdDone = true;
|
||||
m_thrdProgress = 0.f;
|
||||
m_thrdWritten = 0;
|
||||
m_thrdTotal = 0;
|
||||
LWP_CreateThread(&m_thrdPtr, _pThread, this, 0, 8 * 1024, 64);
|
||||
}
|
||||
|
||||
void CMenu::_stop_pThread(void)
|
||||
{
|
||||
if(m_thrdPtr == LWP_THREAD_NULL)
|
||||
return;
|
||||
|
||||
if(LWP_ThreadIsSuspended(m_thrdPtr))
|
||||
LWP_ResumeThread(m_thrdPtr);
|
||||
m_thrdInstalling = false;
|
||||
while(m_thrdWorking)
|
||||
usleep(50);
|
||||
LWP_JoinThread(m_thrdPtr, NULL);
|
||||
m_thrdPtr = LWP_THREAD_NULL;
|
||||
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 1.f);
|
||||
m_btnMgr.setText(m_wbfsLblMessage, L"100%");
|
||||
}
|
||||
|
||||
void CMenu::update_pThread(u64 amount, bool add)
|
||||
{
|
||||
if(m_thrdDone)
|
||||
{
|
||||
m_thrdDone = false;
|
||||
if(add)
|
||||
m_thrdWritten += amount;
|
||||
else
|
||||
m_thrdWritten = amount;
|
||||
m_thrdUpdated = true;
|
||||
}
|
||||
}
|
||||
|
||||
int CMenu::_coverDownloader()
|
||||
{
|
||||
count = 0;
|
||||
@ -952,7 +995,7 @@ int CMenu::_coverDownloader()
|
||||
vector<string> coverIDList;
|
||||
|
||||
/* create list of cover ID's that need downloading */
|
||||
if(m_coverDLGameId.empty())
|
||||
if(dl_gameID.empty())
|
||||
{
|
||||
for(u32 i = 0; i < m_gameList.size(); ++i)
|
||||
{
|
||||
@ -963,7 +1006,7 @@ int CMenu::_coverDownloader()
|
||||
}
|
||||
}
|
||||
else
|
||||
coverIDList.push_back(m_coverDLGameId);
|
||||
coverIDList.push_back(dl_gameID);
|
||||
|
||||
n = coverIDList.size();
|
||||
m_thrdTotal = n * 3;// 3 = download cover, save png, and make wfc
|
||||
@ -977,8 +1020,6 @@ int CMenu::_coverDownloader()
|
||||
}
|
||||
|
||||
/* initialize network connection */
|
||||
if(m_thrdTotal > 0)
|
||||
{
|
||||
m_thrdMessage = _t("dlmsg1", L"Initializing network...");
|
||||
m_thrdMessageAdded = true;
|
||||
if(_initNetwork() < 0)
|
||||
@ -1570,7 +1611,6 @@ int CMenu::_coverDownloader()
|
||||
if(!success)
|
||||
update_pThread(3);
|
||||
}
|
||||
}
|
||||
/* cover list done and downloading complete */
|
||||
if(c_gameTDB.IsLoaded())
|
||||
c_gameTDB.CloseFile();
|
||||
@ -1660,108 +1700,13 @@ int CMenu::_gametdbDownloaderAsync()
|
||||
/*********************************************************************************/
|
||||
/*********************************************************************************/
|
||||
|
||||
const char *banner_url = NULL;
|
||||
const char *banner_url_id3 = NULL;
|
||||
char *banner_location = NULL;
|
||||
int CMenu::_downloadBannerAsync()
|
||||
{
|
||||
m_thrdTotal = 2;// download and save
|
||||
m_thrdMessage = _t("dlmsg1", L"Initializing network...");
|
||||
m_thrdMessageAdded = true;
|
||||
|
||||
if(_initNetwork() < 0)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
|
||||
m_thrdMessage = _t("cfgbnr7", L"Downloading banner...");
|
||||
m_thrdMessageAdded = true;
|
||||
|
||||
download = downloadfile(banner_url);
|
||||
if(download.data == NULL || download.size < 0x5000)
|
||||
download = downloadfile(banner_url_id3);
|
||||
|
||||
/* minimum 50kb */
|
||||
if(download.data != NULL && download.size > 51200 && download.data[0] != '<')
|
||||
{
|
||||
update_pThread(1);// its downloaded
|
||||
if(banner_location != NULL)
|
||||
fsop_WriteFile(banner_location, download.data, download.size);
|
||||
update_pThread(1);// its saved
|
||||
if(download.data != NULL)
|
||||
free(download.data);
|
||||
return 0;
|
||||
}
|
||||
if(download.data != NULL)
|
||||
free(download.data);
|
||||
return -3;// download failed
|
||||
}
|
||||
|
||||
static const char *GAME_BNR_ID = "{gameid}";
|
||||
void CMenu::_downloadBnr(const char *gameID)
|
||||
{
|
||||
if(gameID == NULL || strlen(gameID) > 6)
|
||||
return;
|
||||
string base_url = m_cfg.getString("GENERAL", "custom_banner_url", CUSTOM_BANNER_URL);
|
||||
if(base_url.size() < 3 || base_url.find(GAME_BNR_ID) == string::npos)
|
||||
return;
|
||||
base_url.replace(base_url.find(GAME_BNR_ID), strlen(GAME_BNR_ID), gameID);
|
||||
banner_url = base_url.c_str();
|
||||
|
||||
string base_url_id3 = m_cfg.getString("GENERAL", "custom_banner_url", CUSTOM_BANNER_URL);
|
||||
base_url_id3.replace(base_url_id3.find(GAME_BNR_ID), strlen(GAME_BNR_ID), gameID, 3);
|
||||
banner_url_id3 = base_url_id3.c_str();
|
||||
|
||||
banner_location = fmt_malloc("%s/%s.bnr", m_customBnrDir.c_str(), gameID);
|
||||
if(banner_location == NULL)
|
||||
return;
|
||||
|
||||
bool dl_finished = false;
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if((BTN_HOME_PRESSED || BTN_B_PRESSED) && dl_finished)
|
||||
{
|
||||
m_btnMgr.hide(m_wbfsPBar);
|
||||
m_btnMgr.hide(m_wbfsLblMessage);
|
||||
m_btnMgr.hide(m_wbfsLblDialog);
|
||||
break;
|
||||
}
|
||||
if(!dl_finished)
|
||||
{
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 0.f, true);
|
||||
m_btnMgr.setText(m_wbfsLblMessage, L"0%");
|
||||
m_btnMgr.setText(m_wbfsLblDialog, L"");
|
||||
m_btnMgr.show(m_wbfsPBar);
|
||||
m_btnMgr.show(m_wbfsLblMessage);
|
||||
m_btnMgr.show(m_wbfsLblDialog);
|
||||
|
||||
_start_pThread();
|
||||
int ret = _downloadBannerAsync();
|
||||
_stop_pThread();
|
||||
if(ret == -1)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg27", L"Not enough memory!"));
|
||||
else if(ret == -2)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg2", L"Network initialization failed!"));
|
||||
else if(ret == -3)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg12", L"Download failed!"));
|
||||
else
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg14", L"Done."));
|
||||
dl_finished = true;
|
||||
}
|
||||
}
|
||||
if(banner_location != NULL)
|
||||
{
|
||||
MEM2_free(banner_location);
|
||||
banner_location = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int CMenu::_downloadBnrAll()
|
||||
int CMenu::_bannerDownloader()
|
||||
{
|
||||
vector<string> BnrIDList;
|
||||
count = 0;
|
||||
|
||||
if(dl_gameID.empty())
|
||||
{
|
||||
currentPartition = m_cfg.getInt(GC_DOMAIN, "partition", USB1);
|
||||
string gameDir(fmt(gc_games_dir, DeviceName[currentPartition]));
|
||||
string cacheDir(fmt("%s/%s_gamecube.db", m_listCacheDir.c_str(), DeviceName[currentPartition]));
|
||||
@ -1773,6 +1718,9 @@ int CMenu::_downloadBnrAll()
|
||||
BnrIDList.push_back(m_cacheList[i].id);
|
||||
}
|
||||
m_cacheList.clear();
|
||||
}
|
||||
else
|
||||
BnrIDList.push_back(dl_gameID);
|
||||
|
||||
n = BnrIDList.size();
|
||||
m_thrdTotal = n;
|
||||
@ -1783,6 +1731,16 @@ int CMenu::_downloadBnrAll()
|
||||
return -3;
|
||||
}
|
||||
|
||||
const char *banner_url = NULL;
|
||||
const char *banner_url_id3 = NULL;
|
||||
const char *GAME_BNR_ID = "{gameid}";
|
||||
string base_url = m_cfg.getString("GENERAL", "custom_banner_url", CUSTOM_BANNER_URL);
|
||||
if(base_url.size() < 3 || base_url.find(GAME_BNR_ID) == string::npos)
|
||||
{
|
||||
BnrIDList.clear();
|
||||
return -1;
|
||||
}
|
||||
|
||||
m_thrdMessage = _t("dlmsg1", L"Initializing network...");
|
||||
m_thrdMessageAdded = true;
|
||||
if(_initNetwork() < 0)
|
||||
@ -1791,13 +1749,6 @@ int CMenu::_downloadBnrAll()
|
||||
return -2;
|
||||
}
|
||||
|
||||
string base_url = m_cfg.getString("GENERAL", "custom_banner_url", CUSTOM_BANNER_URL);
|
||||
if(base_url.size() < 3 || base_url.find(GAME_BNR_ID) == string::npos)
|
||||
{
|
||||
BnrIDList.clear();
|
||||
return -1;
|
||||
}
|
||||
|
||||
for(u32 i = 0; i < BnrIDList.size(); ++i)
|
||||
{
|
||||
string base_url_id6 = base_url;
|
||||
@ -1808,7 +1759,10 @@ int CMenu::_downloadBnrAll()
|
||||
base_url_id3.replace(base_url_id3.find(GAME_BNR_ID), strlen(GAME_BNR_ID), BnrIDList[i].c_str(), 3);
|
||||
banner_url_id3 = base_url_id3.c_str();
|
||||
|
||||
if(dl_gameID.empty())
|
||||
m_thrdMessage = wfmt(_fmt("dlmsg3", L"Downloading banner %i/%i"), i + 1, n);
|
||||
else
|
||||
m_thrdMessage = _t("cfgbnr7", L"Downloading banner...");
|
||||
m_thrdMessageAdded = true;
|
||||
|
||||
download = downloadfile(banner_url);
|
||||
|
@ -342,79 +342,6 @@ int getTID(const char *path, u64 *tid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void * CMenu::_pThread(void *obj)
|
||||
{
|
||||
CMenu *m = (CMenu*)obj;
|
||||
m->SetupInput();
|
||||
while(m->m_thrdInstalling)
|
||||
{
|
||||
m->_mainLoopCommon();
|
||||
if(m->m_thrdUpdated)
|
||||
{
|
||||
m->m_thrdUpdated = false;
|
||||
m->_downloadProgress(obj, m->m_thrdTotal, m->m_thrdWritten);
|
||||
if(m->m_thrdProgress > 0.f)
|
||||
{
|
||||
m_btnMgr.setText(m->m_wbfsLblMessage, wfmt(L"%i%%", (int)(m->m_thrdProgress * 100.f)));
|
||||
m_btnMgr.setProgress(m->m_wbfsPBar, m->m_thrdProgress);
|
||||
}
|
||||
m->m_thrdDone = true;
|
||||
}
|
||||
if(m->m_thrdMessageAdded)
|
||||
{
|
||||
m->m_thrdMessageAdded = false;
|
||||
if(!m->m_thrdMessage.empty())
|
||||
m_btnMgr.setText(m->m_wbfsLblDialog, m->m_thrdMessage);
|
||||
}
|
||||
}
|
||||
m->m_thrdWorking = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CMenu::_start_pThread(void)
|
||||
{
|
||||
m_thrdPtr = LWP_THREAD_NULL;
|
||||
m_thrdWorking = true;
|
||||
m_thrdMessageAdded = false;
|
||||
m_thrdInstalling = true;
|
||||
m_thrdUpdated = false;
|
||||
m_thrdDone = true;
|
||||
m_thrdProgress = 0.f;
|
||||
m_thrdWritten = 0;
|
||||
m_thrdTotal = 0;
|
||||
LWP_CreateThread(&m_thrdPtr, _pThread, this, 0, 8 * 1024, 64);
|
||||
}
|
||||
|
||||
void CMenu::_stop_pThread(void)
|
||||
{
|
||||
if(m_thrdPtr == LWP_THREAD_NULL)
|
||||
return;
|
||||
|
||||
if(LWP_ThreadIsSuspended(m_thrdPtr))
|
||||
LWP_ResumeThread(m_thrdPtr);
|
||||
m_thrdInstalling = false;
|
||||
while(m_thrdWorking)
|
||||
usleep(50);
|
||||
LWP_JoinThread(m_thrdPtr, NULL);
|
||||
m_thrdPtr = LWP_THREAD_NULL;
|
||||
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 1.f);
|
||||
m_btnMgr.setText(m_wbfsLblMessage, L"100%");
|
||||
}
|
||||
|
||||
void CMenu::update_pThread(u64 amount, bool add)
|
||||
{
|
||||
if(m_thrdDone)
|
||||
{
|
||||
m_thrdDone = false;
|
||||
if(add)
|
||||
m_thrdWritten += amount;
|
||||
else
|
||||
m_thrdWritten = amount;
|
||||
m_thrdUpdated = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* only installs channel wads to emunand and mios wads to real nand */
|
||||
/* several places gecko prints are used but no error msg to the user is displayed */
|
||||
void CMenu::_Wad(const char *wad_path)
|
||||
|
@ -68,6 +68,14 @@ void CMenu::_addDiscProgress(int status, int total, void *user_data)
|
||||
}
|
||||
}
|
||||
|
||||
void CMenu::_setThrdMsg(const wstringEx &msg, float progress)
|
||||
{
|
||||
if (m_thrdStop) return;
|
||||
if (msg != L"...") m_thrdMessage = msg;
|
||||
m_thrdMessageAdded = true;
|
||||
m_thrdProgress = progress;
|
||||
}
|
||||
|
||||
bool CMenu::_searchGamesByID(const char *gameId)
|
||||
{
|
||||
for(vector<dir_discHdr>::iterator itr = m_gameList.begin(); itr != m_gameList.end(); ++itr)
|
||||
|
Loading…
x
Reference in New Issue
Block a user