Use ids for frames.
So that we don't need to send the same frames over and over again.
diff --git a/common/trace_parser.hpp b/common/trace_parser.hpp
index e0f8434..7bf0a7d 100644
--- a/common/trace_parser.hpp
+++ b/common/trace_parser.hpp
@@ -71,23 +71,26 @@
// Offset in the file of where signature was defined. It is used when
// reparsing to determine whether the signature definition is to be
// expected next or not.
- File::Offset offset;
+ File::Offset fileOffset;
};
typedef SigState<FunctionSigFlags> FunctionSigState;
typedef SigState<StructSig> StructSigState;
typedef SigState<EnumSig> EnumSigState;
typedef SigState<BitmaskSig> BitmaskSigState;
+ typedef SigState<StackFrame> StackFrameState;
typedef std::vector<FunctionSigState *> FunctionMap;
typedef std::vector<StructSigState *> StructMap;
typedef std::vector<EnumSigState *> EnumMap;
typedef std::vector<BitmaskSigState *> BitmaskMap;
+ typedef std::vector<StackFrameState *> StackFrameMap;
FunctionMap functions;
StructMap structs;
EnumMap enums;
BitmaskMap bitmasks;
+ StackFrameMap frames;
FunctionSig *glGetErrorSig;
@@ -148,7 +151,7 @@
bool parse_call_details(Call *call, Mode mode);
bool parse_call_backtrace(Call *call, Mode mode);
- bool parse_backtrace_frame(StackFrame *frame, Mode mode);
+ StackFrame * parse_backtrace_frame(Mode mode);
void adjust_call_flags(Call *call);