public unsafe List <IEvent> BuildChildren(IEvent parent, byte[] data, int offset, Lazy <uint> parentTime, uint threadUid) { List <IEvent> events = new List <IEvent>(); fixed(byte *dataPointer = data) { byte *parentPointer = dataPointer + offset; short parentDepth = NativeEventHelper.GetDepth(parentPointer); short targetDepth = (short)(parentDepth + 1); offset += NativeEventHelper.EventSize; for (; offset < data.Length && NativeEventHelper.GetDepth(dataPointer + offset) > parentDepth; offset += NativeEventHelper.EventSize) { if (NativeEventHelper.GetDepth(dataPointer + offset) == targetDepth) { IEvent @event = new Event(parent, data, offset, parentTime, threadUid, this); events.Add(@event); } } } return(events); }
private unsafe uint GetTime() { fixed(byte *dataPointer = _data) { return(NativeEventHelper.GetTime(dataPointer + _offset)); } }
public override void OnApplyTemplate() { base.OnApplyTemplate(); //------------------ _headerPanel = GetTemplateChild(HeaderPanelPartName) as Panel; _contentPanel = GetTemplateChild(ContentPanelPartName) as Panel; _footerPanel = GetTemplateChild(FooterPanelPartName) as Panel; double eventPercent = NativeEventHelper.GetEventPercent(_event); //------------------ Border childrenIndicatorBorder = GetTemplateChild(ChildrenIndicatorBorderPartName) as Border; if (childrenIndicatorBorder != null) { childrenIndicatorBorder.Visibility = _event.HasChildren ? Visibility.Visible : Visibility.Hidden; } //------------------ Border percentsColorIndicatorBorder = GetTemplateChild(PercentsColorIndicatorBorderPartName) as Border; if (percentsColorIndicatorBorder != null) { percentsColorIndicatorBorder.Visibility = IsRootItem ? Visibility.Collapsed : Visibility.Visible; percentsColorIndicatorBorder.Background = new SolidColorBrush(PercentsToColorConverter.Convert(eventPercent)); } //------------------ TextBlock percentTextBlock = GetTemplateChild(PercentTextBlockPartName) as TextBlock; if (percentTextBlock != null) { percentTextBlock.Text = string.Format("{0}%", eventPercent); } //------------------ TextBlock timeTextBlock = GetTemplateChild(TimeTextBlockPartName) as TextBlock; if (timeTextBlock != null) { timeTextBlock.Text = string.Format("{0}ms", _event.Time); } //------------------ TextBlock hitsTextBlock = GetTemplateChild(HitsTextBlockPartName) as TextBlock; if (hitsTextBlock != null) { hitsTextBlock.Text = string.Format("{0}hits", _event.Hits); } //------------------ TextBlock nameTextBlock = GetTemplateChild(NameTextBlockPartName) as TextBlock; if (nameTextBlock != null) { nameTextBlock.Text = _eventMessageBuilder.BuildMessage(_event); } SynchronizeLevelOffset(LevelOffset); }
public unsafe List <IEvent> BuildChildren(IEvent parent, byte[] data, Lazy <uint> parentTime, uint threadUid) { List <IEvent> events = new List <IEvent>(); fixed(byte *dataPointer = data) { for (int offset = 0; offset < data.Length; offset += NativeEventHelper.EventSize) { if (NativeEventHelper.GetDepth(dataPointer + offset) == 0) { IEvent @event = new Event(parent, data, offset, parentTime, threadUid, this); events.Add(@event); } } } return(events); }