Avoid UTF8->UTF16->UTF8 roundtrip when logging on mobile

Make writeToAppLogFile() take an std::string parameter to avoid
an unnecessary UTF8->UTF16->UTF8 (std::string->QString->char *)
roundtrip.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-11-30 16:28:49 +01:00 committed by bstoeger
parent 7d1e0ef0d1
commit 4d4c250589
3 changed files with 8 additions and 8 deletions

View file

@ -12,7 +12,7 @@
#endif #endif
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
extern void writeToAppLogFile(QString logText); extern void writeToAppLogFile(const std::string &logText);
#endif #endif
int verbose; int verbose;
@ -26,7 +26,7 @@ void report_info(const char *fmt, ...)
LOG_MSG("INFO: %s\n", s.c_str()); LOG_MSG("INFO: %s\n", s.c_str());
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
writeToAppLogFile(s.c_str()); writeToAppLogFile(s);
#endif #endif
} }
@ -41,7 +41,7 @@ int report_error(const char *fmt, ...)
LOG_MSG("ERROR: %s\n", s.c_str()); LOG_MSG("ERROR: %s\n", s.c_str());
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
writeToAppLogFile(s.c_str()); writeToAppLogFile(s);
#endif #endif
/* if there is no error callback registered, don't produce errors */ /* if there is no error callback registered, don't produce errors */

View file

@ -1849,20 +1849,20 @@ void QMLManager::setBtEnabled(bool value)
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
void writeToAppLogFile(QString logText) void writeToAppLogFile(const std::string &logText)
{ {
// write to storage and flush so that the data doesn't get lost // write to storage and flush so that the data doesn't get lost
logText.append("\n");
QMLManager *self = QMLManager::instance(); QMLManager *self = QMLManager::instance();
if (self) { if (self) {
self->writeToAppLogFile(logText); self->writeToAppLogFile(logText);
} }
} }
void QMLManager::writeToAppLogFile(QString logText) void QMLManager::writeToAppLogFile(const std::string &logText)
{ {
if (appLogFileOpen) { if (appLogFileOpen) {
appLogFile.write(qPrintable(logText)); std::string line = logText + "\n";
appLogFile.write(line.c_str());
appLogFile.flush(); appLogFile.flush();
} }
} }

View file

@ -167,7 +167,7 @@ public:
QObject *qmlWindow; QObject *qmlWindow;
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
void writeToAppLogFile(QString logText); void writeToAppLogFile(const std::string &logText);
#endif #endif
qPrefCloudStorage::cloud_status oldStatus() const; qPrefCloudStorage::cloud_status oldStatus() const;
void setOldStatus(const qPrefCloudStorage::cloud_status value); void setOldStatus(const qPrefCloudStorage::cloud_status value);