]> git.cworth.org Git - apitrace/blobdiff - common/trace_writer.cpp
Trace enum signatures as a whole.
[apitrace] / common / trace_writer.cpp
index 84acfd8943cf7ba5541fcbaa195e1af5fdd3f4fa..1679989d6b11f3eed7da17ca61a6af5c3ceaea40 100644 (file)
@@ -258,14 +258,18 @@ void Writer::writeBlob(const void *data, size_t size) {
     }
 }
 
-void Writer::writeEnum(const EnumSig *sig) {
+void Writer::writeEnum(const EnumSig *sig, signed long long value) {
     _writeByte(trace::TYPE_ENUM);
     _writeUInt(sig->id);
     if (!lookup(enums, sig->id)) {
-        _writeString(sig->name);
-        Writer::writeSInt(sig->value);
+        _writeUInt(sig->num_values);
+        for (unsigned i = 0; i < sig->num_values; ++i) {
+            _writeString(sig->values[i].name);
+            writeSInt(sig->values[i].value);
+        }
         enums[sig->id] = true;
     }
+    writeSInt(value);
 }
 
 void Writer::writeBitmask(const BitmaskSig *sig, unsigned long long value) {
@@ -275,7 +279,7 @@ void Writer::writeBitmask(const BitmaskSig *sig, unsigned long long value) {
         _writeUInt(sig->num_flags);
         for (unsigned i = 0; i < sig->num_flags; ++i) {
             if (i != 0 && sig->flags[i].value == 0) {
-                os::DebugMessage("apitrace: warning: sig %s is zero but is not first flag\n", sig->flags[i].name);
+                os::log("apitrace: warning: sig %s is zero but is not first flag\n", sig->flags[i].name);
             }
             _writeString(sig->flags[i].name);
             _writeUInt(sig->flags[i].value);