summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJari Karppinen <jari.karppinen@qt.io>2019-05-22 14:29:13 +0300
committerJari Karppinen <jari.karppinen@qt.io>2019-05-23 11:25:11 +0300
commit243065d9203e58991ed3e7b1ff6d3e6b4d2d3281 (patch)
treea8e5f5b65a79a7022da7143b015d5b09567ce321
parent2b9c8edc95852069ca9b6a69dd66fca17b27d777 (diff)
Remove hardcoded C locale on Linux
Task-number: QT3DS-3522 Change-Id: Iab5af7e41ceed974bc692aca7bf59f5cd48772d7 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Pasi Keränen <pasi.keranen@qt.io>
-rw-r--r--src/Authoring/QT3DSDM/QT3DSDM.pro3
-rw-r--r--src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h14
-rw-r--r--src/Authoring/Studio/Application/StudioApp.cpp6
-rw-r--r--src/Runtime/Source/foundation/StringConversionImpl.h20
4 files changed, 24 insertions, 19 deletions
diff --git a/src/Authoring/QT3DSDM/QT3DSDM.pro b/src/Authoring/QT3DSDM/QT3DSDM.pro
index ca35f825..d0367220 100644
--- a/src/Authoring/QT3DSDM/QT3DSDM.pro
+++ b/src/Authoring/QT3DSDM/QT3DSDM.pro
@@ -56,4 +56,5 @@ HEADERS += \
Systems/Qt3DSDMDataTypes.h \
Systems/Qt3DSDMMetaDataTypes.h \
Systems/Qt3DSDMMetaDataValue.h \
- Systems/Qt3DSDMMetaData.h
+ Systems/Qt3DSDMMetaData.h \
+ Systems/Qt3DSDMWStrOpsImpl.h
diff --git a/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h b/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h
index a594abed..d65ac131 100644
--- a/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h
+++ b/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h
@@ -177,13 +177,15 @@ struct WStrOps<QT3DSF32>
{
QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<wchar_t> buffer)
{
- return static_cast<QT3DSU32>(
- swprintf(buffer.begin(), buffer.size(), L"%g", static_cast<QT3DSF64>(item)));
+ QString s = QLocale::c().toString(item);
+ wcsncpy(buffer.begin(), s.toStdWString().c_str(), buffer.size());
+ return s.length();
}
QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<char8_t> buffer)
{
- return static_cast<QT3DSU32>(
- _snprintf(buffer.begin(), buffer.size(), "%g", static_cast<QT3DSF64>(item)));
+ QString s = QLocale::c().toString(item);
+ strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size());
+ return s.length();
}
bool StrTo(const char8_t *buffer, QT3DSF32 &item)
{
@@ -198,7 +200,9 @@ struct WStrOps<QT3DSF64>
{
QT3DSU32 ToStr(QT3DSF64 item, NVDataRef<wchar_t> buffer)
{
- return static_cast<QT3DSU32>(swprintf(buffer.begin(), buffer.size(), L"%g", item));
+ QString s = QLocale::c().toString(item);
+ wcsncpy(buffer.begin(), s.toStdWString().c_str(), buffer.size());
+ return s.length();
}
bool StrTo(const char8_t *buffer, QT3DSF64 &item)
{
diff --git a/src/Authoring/Studio/Application/StudioApp.cpp b/src/Authoring/Studio/Application/StudioApp.cpp
index 9875f39d..c7264c97 100644
--- a/src/Authoring/Studio/Application/StudioApp.cpp
+++ b/src/Authoring/Studio/Application/StudioApp.cpp
@@ -69,12 +69,6 @@ const QString activePresentationQuery = QStringLiteral("activePresentation:");
int main(int argc, char *argv[])
{
- // Note: This will prevent localization from working on Linux, but it will fix QT3DS-1473
- // TODO: To be removed once the new parser is in use
-#if defined(Q_OS_LINUX)
- qputenv("LC_ALL", "C");
-#endif
-
bool isOpenGLES = false;
// init runtime static resources
diff --git a/src/Runtime/Source/foundation/StringConversionImpl.h b/src/Runtime/Source/foundation/StringConversionImpl.h
index c49c14b4..c5063e6d 100644
--- a/src/Runtime/Source/foundation/StringConversionImpl.h
+++ b/src/Runtime/Source/foundation/StringConversionImpl.h
@@ -37,6 +37,7 @@
#include "foundation/Utils.h"
#include "stdlib.h"
#include "stdio.h" //snprintf
+#include <QLocale>
#if !defined EA_PLATFORM_WINDOWS
#define _snprintf snprintf
@@ -184,13 +185,15 @@ namespace foundation {
{
QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<char8_t> buffer)
{
- return static_cast<QT3DSU32>(
- _snprintf(buffer.begin(), buffer.size(), "%g", static_cast<QT3DSF64>(item)));
+ QString s = QLocale::c().toString(item);
+ strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size());
+ return s.length();
}
bool StrTo(const char8_t *buffer, QT3DSF32 &item)
{
- item = (QT3DSF32)strtod(buffer, NULL);
- return true;
+ bool ok;
+ item = QLocale::c().toFloat(buffer, &ok);
+ return ok;
}
};
@@ -199,12 +202,15 @@ namespace foundation {
{
QT3DSU32 ToStr(QT3DSF64 item, NVDataRef<char8_t> buffer)
{
- return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%g", item));
+ QString s = QLocale::c().toString(item);
+ strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size());
+ return s.length();
}
bool StrTo(const char8_t *buffer, QT3DSF64 &item)
{
- item = strtod(buffer, NULL);
- return true;
+ bool ok;
+ item = QLocale::c().toDouble(buffer, &ok);
+ return ok;
}
};
}