Set C++ global locale too in wxAppTraitsBase::SetLocale().
Ensure that C++ locale matches the C one, otherwise operations on C++ streams may get much slower because some implementations (notable MinGW-64) change and reset the C locale on every function call in this case. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -47,10 +47,15 @@
|
|||||||
#include "wx/tokenzr.h"
|
#include "wx/tokenzr.h"
|
||||||
#include "wx/thread.h"
|
#include "wx/thread.h"
|
||||||
|
|
||||||
#if wxUSE_EXCEPTIONS && wxUSE_STL
|
#if wxUSE_STL
|
||||||
#include <exception>
|
#if wxUSE_EXCEPTIONS
|
||||||
#include <typeinfo>
|
#include <exception>
|
||||||
#endif
|
#include <typeinfo>
|
||||||
|
#endif
|
||||||
|
#if wxUSE_INTL
|
||||||
|
#include <locale>
|
||||||
|
#endif
|
||||||
|
#endif // wxUSE_STL
|
||||||
|
|
||||||
#if !defined(__WINDOWS__) || defined(__WXMICROWIN__)
|
#if !defined(__WINDOWS__) || defined(__WXMICROWIN__)
|
||||||
#include <signal.h> // for SIGTRAP used by wxTrap()
|
#include <signal.h> // for SIGTRAP used by wxTrap()
|
||||||
@@ -834,7 +839,19 @@ bool wxConsoleAppTraitsBase::HasStderr()
|
|||||||
#if wxUSE_INTL
|
#if wxUSE_INTL
|
||||||
void wxAppTraitsBase::SetLocale()
|
void wxAppTraitsBase::SetLocale()
|
||||||
{
|
{
|
||||||
|
// We want to use the user locale by default in GUI applications in order
|
||||||
|
// to show the numbers, dates &c in the familiar format -- and also accept
|
||||||
|
// this format on input (especially important for decimal comma/dot).
|
||||||
wxSetlocale(LC_ALL, "");
|
wxSetlocale(LC_ALL, "");
|
||||||
|
|
||||||
|
#if wxUSE_STL
|
||||||
|
// At least in some environments, e.g. MinGW-64, if the global C++ locale
|
||||||
|
// is different from the global C locale, all stream operations temporarily
|
||||||
|
// change the locale resulting in a huge slowdown (3 times slower in some
|
||||||
|
// real-life applications), so change the C++ locale to match.
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
#endif //wxUSE_STL
|
||||||
|
|
||||||
wxUpdateLocaleIsUtf8();
|
wxUpdateLocaleIsUtf8();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user