UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SlateTrace.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "Trace/Config.h"
8#include "Trace/Trace.h"
9
13
14#if UE_TRACE_ENABLED && !IS_PROGRAM && !UE_BUILD_SHIPPING
15#define UE_SLATE_TRACE_ENABLED 1
16#else
17#define UE_SLATE_TRACE_ENABLED 0
18#endif
19
20
22{
23 None = 0,
24 GlobalInvalidation = 1 << 0,
25 FastWidgetPath = 1 << 1,
26};
28
29
30#if UE_SLATE_TRACE_ENABLED
31
34class SWidget;
35
36
38
39class FSlateTrace : public FNoncopyable
40{
41public:
43 {
46
47 uint64 StartCycle;
48 const SWidget* Widget;
50 };
52 {
55
56 uint64 StartCycle;
57 const SWidget* Widget;
59 };
60
61 SLATECORE_API static void ApplicationTickAndDrawWidgets(float DeltaTime);
63 SLATECORE_API static void WidgetInvalidated(const SWidget* Widget, const SWidget* Investigator, EInvalidateWidgetReason Reason);
66
68 static void AddWidget(const SWidget* Widget);
69
71 static void UpdateWidgetInfo(const SWidget* Widget);
72
74 static void RemoveWidget(const SWidget* Widget);
75
76private:
77
80
82 static void HandleOnTraceStarted(FTraceAuxiliary::EConnectionType TraceType, const FString& TraceDestination);
83
86
87private:
89 static uint8 TraceCounter;
90};
91
92#define UE_TRACE_SLATE_BOOKMARK(Format, ...) \
93 if (UE_TRACE_CHANNELEXPR_IS_ENABLED(SlateChannel)) \
94 { \
95 TRACE_BOOKMARK(Format, ##__VA_ARGS__); \
96 }
97#define UE_TRACE_SLATE_APPLICATION_TICK_AND_DRAW_WIDGETS(DeltaTime) \
98 FSlateTrace::ApplicationTickAndDrawWidgets(DeltaTime);
99
100#define UE_TRACE_SLATE_APPLICATION_REGISTER_TRACE_EVENTS(SlateApplication) \
101 FSlateTrace::ApplicationRegisterTraceEvents(SlateApplication);
102
103#define UE_TRACE_SLATE_WIDGET_ADDED(Widget) \
104 FSlateTrace::AddWidget(Widget);
105
106#define UE_TRACE_SLATE_WIDGET_DEBUG_INFO(Widget) \
107 FSlateTrace::UpdateWidgetInfo(Widget);
108
109#define UE_TRACE_SLATE_WIDGET_REMOVED(Widget) \
110 FSlateTrace::RemoveWidget(Widget);
111
112#define UE_TRACE_SCOPED_SLATE_WIDGET_PAINT(Widget) \
113 FSlateTrace::FScopedWidgetPaintTrace _ScopedSlateWidgetPaintTrace(Widget);
114
115#define UE_TRACE_SCOPED_SLATE_WIDGET_UPDATE(Widget) \
116 FSlateTrace::FScopedWidgetUpdateTrace _ScopedSlateWidgetUpdateTrace(Widget);
117
118#define UE_TRACE_SLATE_WIDGET_INVALIDATED(Widget, Investigator, InvalidateWidgetReason) \
119 FSlateTrace::WidgetInvalidated(Widget, Investigator, InvalidateWidgetReason);
120
121#define UE_TRACE_SLATE_ROOT_INVALIDATED(Widget, Investigator) \
122 FSlateTrace::RootInvalidated(Widget, Investigator);
123
124#define UE_TRACE_SLATE_ROOT_CHILDORDER_INVALIDATED(Widget, Investigator) \
125 FSlateTrace::RootChildOrderInvalidated(Widget, Investigator);
126
127#else //UE_SLATE_TRACE_ENABLED
128
129#define UE_TRACE_SLATE_BOOKMARK(...)
130#define UE_TRACE_SLATE_APPLICATION_TICK_AND_DRAW_WIDGETS(DeltaTime)
131#define UE_TRACE_SLATE_APPLICATION_REGISTER_TRACE_EVENTS(SlateApplication)
132#define UE_TRACE_SLATE_WIDGET_ADDED(Widget)
133#define UE_TRACE_SLATE_WIDGET_DEBUG_INFO(Widget)
134#define UE_TRACE_SLATE_WIDGET_REMOVED(Widget)
135#define UE_TRACE_SCOPED_SLATE_WIDGET_PAINT(Widget)
136#define UE_TRACE_SCOPED_SLATE_WIDGET_UPDATE(Widget)
137#define UE_TRACE_SLATE_WIDGET_INVALIDATED(Widget, Investigator, InvalidateWidgetReason)
138#define UE_TRACE_SLATE_ROOT_INVALIDATED(Widget, Investigator)
139#define UE_TRACE_SLATE_ROOT_CHILDORDER_INVALIDATED(Widget, Investigator)
140
141#endif //UE_SLATE_TRACE_ENABLED
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
EInvalidateWidgetReason
Definition InvalidateWidgetReason.h:14
ESlateTraceApplicationFlags
Definition SlateTrace.h:22
#define UE_TRACE_CHANNEL_EXTERN(ChannelName,...)
Definition Trace.h:448
EWidgetUpdateFlags
Definition WidgetUpdateFlags.h:9
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UnrealTemplate.h:321
Definition SlateApplicationBase.h:114
EConnectionType
Definition TraceAuxiliary.h:78
Definition SWidget.h:165
UpdateFlags
Definition DetourCrowd.h:208