diff options
author | José Fonseca <jfonseca@vmware.com> | 2014-09-25 15:19:09 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2014-09-26 21:00:33 +0100 |
commit | d5cda7c23f274c5be0ff0e47f711fd2be53de268 (patch) | |
tree | 98edb363e246b7f3ca675bc5730b26eb1a0ef52b /gui | |
parent | 20a1521efdac44c8219f00c2414de031891fb464 (diff) |
trace: Serialize wide-strings properly.
Wide strings are only used by DirectX APIs, mostly for descriptions, but
it's still useful to be able to read them.
I'm split on whether to bump the trace format version or not.
OpenGL traces are unaffected.
Diffstat (limited to 'gui')
-rw-r--r-- | gui/CMakeLists.txt | 5 | ||||
-rw-r--r-- | gui/apitracecall.cpp | 5 | ||||
-rw-r--r-- | gui/apitracecall.h | 1 | ||||
-rw-r--r-- | gui/saverthread.cpp | 10 |
4 files changed, 21 insertions, 0 deletions
diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index ad13475e..97e41eb2 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,3 +1,8 @@ +if (MSVC) + # http://qt-project.org/forums/viewthread/23714 + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:wchar_t-") +endif () + # Include the cmake file needed to use qt4 include( ${QT_USE_FILE} ) diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 59cc7e60..fe30947b 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -188,6 +188,11 @@ void VariantVisitor::visit(trace::String *node) m_variant = QVariant(QString::fromLatin1(node->value)); } +void VariantVisitor::visit(trace::WString *node) +{ + m_variant = QVariant(QString::fromWCharArray(node->value)); +} + void VariantVisitor::visit(trace::Enum *e) { ApiTraceEnumSignature *sig = 0; diff --git a/gui/apitracecall.h b/gui/apitracecall.h index 46ead63e..5c2b20dd 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -27,6 +27,7 @@ public: virtual void visit(trace::Float *node); virtual void visit(trace::Double *node); virtual void visit(trace::String *node); + virtual void visit(trace::WString *node); virtual void visit(trace::Enum *e); virtual void visit(trace::Bitmask *bitmask); virtual void visit(trace::Struct *str); diff --git a/gui/saverthread.cpp b/gui/saverthread.cpp index 4ad83c58..990aeeec 100644 --- a/gui/saverthread.cpp +++ b/gui/saverthread.cpp @@ -253,6 +253,16 @@ public: m_editedValue = new trace::String(newString); } + virtual void visit(trace::WString *node) + { + QString str = m_variant.toString(); + size_t len = str.length(); + wchar_t *newString = new wchar_t[len + 1]; + str.toWCharArray(newString); + newString[len] = 0; + m_editedValue = new trace::WString(newString); + } + virtual void visit(trace::Enum *e) { m_editedValue = e; |