Change wxString(<string>, wxConvUTF8) method of creating unicode from filenames to wxSafeConvertMB2WX()

(Just applied to FrameTools.cpp for now)
Allows one to properly restart Pokémon by hitting play :P

Ignore non-ASCII strings passed to DisplayMessage(). These strings would end up going to renderer display and statusbar/titlebar, which can't handle them properly.
This commit is contained in:
Shawn Hoffman 2012-03-19 10:37:15 -07:00
parent 4a1e8ba30a
commit ff6023df27
2 changed files with 15 additions and 6 deletions

View File

@ -73,6 +73,8 @@
#include "State.h" #include "State.h"
#include "Movie.h" #include "Movie.h"
#include <ctype.h>
// TODO: ugly, remove // TODO: ugly, remove
bool g_aspect_wide; bool g_aspect_wide;
@ -129,11 +131,18 @@ void DisplayMessage(const char *message, int time_in_ms)
SCoreStartupParameter& _CoreParameter = SCoreStartupParameter& _CoreParameter =
SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig::GetInstance().m_LocalCoreStartupParameter;
// Actually displaying non-ASCII could cause things to go pear-shaped
if (!isascii(message))
return;
g_video_backend->Video_AddMessage(message, time_in_ms); g_video_backend->Video_AddMessage(message, time_in_ms);
if (_CoreParameter.bRenderToMain && if (_CoreParameter.bRenderToMain &&
SConfig::GetInstance().m_InterfaceStatusbar) { SConfig::GetInstance().m_InterfaceStatusbar)
Host_UpdateStatusBar(message); {
} else Host_UpdateStatusBar(message);
}
else
Host_UpdateTitle(message); Host_UpdateTitle(message);
} }

View File

@ -632,12 +632,12 @@ void CFrame::BootGame(const std::string& filename)
bootfile = m_GameListCtrl->GetSelectedISO()->GetFileName(); bootfile = m_GameListCtrl->GetSelectedISO()->GetFileName();
} }
else if (!StartUp.m_strDefaultGCM.empty() else if (!StartUp.m_strDefaultGCM.empty()
&& wxFileExists(wxString(StartUp.m_strDefaultGCM.c_str(), wxConvUTF8))) && wxFileExists(wxSafeConvertMB2WX(StartUp.m_strDefaultGCM.c_str())))
bootfile = StartUp.m_strDefaultGCM; bootfile = StartUp.m_strDefaultGCM;
else else
{ {
if (!SConfig::GetInstance().m_LastFilename.empty() if (!SConfig::GetInstance().m_LastFilename.empty()
&& wxFileExists(wxString(SConfig::GetInstance().m_LastFilename.c_str(), wxConvUTF8))) && wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
bootfile = SConfig::GetInstance().m_LastFilename; bootfile = SConfig::GetInstance().m_LastFilename;
else else
{ {
@ -1646,7 +1646,7 @@ void CFrame::UpdateGUI()
} }
// Prepare to load last selected file, enable play button // Prepare to load last selected file, enable play button
else if (!SConfig::GetInstance().m_LastFilename.empty() else if (!SConfig::GetInstance().m_LastFilename.empty()
&& wxFileExists(wxString(SConfig::GetInstance().m_LastFilename.c_str(), wxConvUTF8))) && wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
{ {
if (m_ToolBar) if (m_ToolBar)
m_ToolBar->EnableTool(IDM_PLAY, true); m_ToolBar->EnableTool(IDM_PLAY, true);