Events marked as important are associated internally to a pseudo thread with id 0 [A]. New-thread events are considered important and thus appear as if they were traced on thread 0. They will add thread N which will modify the Infos array. If someone was holding a A& = Infos[0] when Infos[N] was added then A can become stale. To combat this edge-case we'll thread 0 as a special case so it doesn't invalidate itself with its own events.
#rb arciel.rekman (indirectly)
#rnx
[CL 14989274 by Martin Ridgers in ue5-main branch]
This change introduces the concept of "channels" to TraceLog. When an event is emitted a channel now needs to be supplied. Channels are disabled by default and can be be enabled individually, allowing the user to limit the amount of events the tracing application produces. Channels can be enabled by the recording application (e.g. UnrealInsights) or enabled by default using a commandline argument, "-tracechannels" to enable a comma separated list of channels.
There are two new events related to channels, the announce event describing the channel, and the toggle event which notifies any changes in state. Note that all channels are enabled during static initialization in order to guarantee that any event emitted during that phase is recorded.
#rb martin.ridgers, ionut.matasaru
[CL 10950760 by Johan Berg in Dev-Core branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870584 by ryan durand in Main branch]