mirror of https://github.com/Cysharp/UniTask
Enable profiling is what controls task tracking
parent
9e2163616b
commit
b64dc571a7
|
@ -39,9 +39,9 @@ namespace Cysharp.Threading.Tasks.Editor
|
||||||
window = this; // set singleton.
|
window = this; // set singleton.
|
||||||
splitterState = SplitterGUILayout.CreateSplitterState(new float[] { 75f, 25f }, new int[] { 32, 32 }, null);
|
splitterState = SplitterGUILayout.CreateSplitterState(new float[] { 75f, 25f }, new int[] { 32, 32 }, null);
|
||||||
treeView = new UniTaskTrackerTreeView();
|
treeView = new UniTaskTrackerTreeView();
|
||||||
TaskTracker.EditorEnableState.EnableAutoReload = EditorPrefs.GetBool(TaskTracker.EnableAutoReloadKey, false);
|
TaskTracker.EnableState.EnableAutoReload = EditorPrefs.GetBool(TaskTracker.EnableAutoReloadKey, false);
|
||||||
TaskTracker.EditorEnableState.EnableTracking = EditorPrefs.GetBool(TaskTracker.EnableTrackingKey, false);
|
TaskTracker.EnableState.EnableTracking = EditorPrefs.GetBool(TaskTracker.EnableTrackingKey, false);
|
||||||
TaskTracker.EditorEnableState.EnableStackTrace = EditorPrefs.GetBool(TaskTracker.EnableStackTraceKey, false);
|
TaskTracker.EnableState.EnableStackTrace = EditorPrefs.GetBool(TaskTracker.EnableStackTraceKey, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnGUI()
|
void OnGUI()
|
||||||
|
@ -63,9 +63,9 @@ namespace Cysharp.Threading.Tasks.Editor
|
||||||
|
|
||||||
#region HeadPanel
|
#region HeadPanel
|
||||||
|
|
||||||
public static bool EnableAutoReload => TaskTracker.EditorEnableState.EnableAutoReload;
|
public static bool EnableAutoReload => TaskTracker.EnableState.EnableAutoReload;
|
||||||
public static bool EnableTracking => TaskTracker.EditorEnableState.EnableTracking;
|
public static bool EnableTracking => TaskTracker.EnableState.EnableTracking;
|
||||||
public static bool EnableStackTrace => TaskTracker.EditorEnableState.EnableStackTrace;
|
public static bool EnableStackTrace => TaskTracker.EnableState.EnableStackTrace;
|
||||||
static readonly GUIContent EnableAutoReloadHeadContent = EditorGUIUtility.TrTextContent("Enable AutoReload", "Reload automatically.", (Texture)null);
|
static readonly GUIContent EnableAutoReloadHeadContent = EditorGUIUtility.TrTextContent("Enable AutoReload", "Reload automatically.", (Texture)null);
|
||||||
static readonly GUIContent ReloadHeadContent = EditorGUIUtility.TrTextContent("Reload", "Reload View.", (Texture)null);
|
static readonly GUIContent ReloadHeadContent = EditorGUIUtility.TrTextContent("Reload", "Reload View.", (Texture)null);
|
||||||
static readonly GUIContent GCHeadContent = EditorGUIUtility.TrTextContent("GC.Collect", "Invoke GC.Collect.", (Texture)null);
|
static readonly GUIContent GCHeadContent = EditorGUIUtility.TrTextContent("GC.Collect", "Invoke GC.Collect.", (Texture)null);
|
||||||
|
@ -80,17 +80,17 @@ namespace Cysharp.Threading.Tasks.Editor
|
||||||
|
|
||||||
if (GUILayout.Toggle(EnableAutoReload, EnableAutoReloadHeadContent, EditorStyles.toolbarButton, EmptyLayoutOption) != EnableAutoReload)
|
if (GUILayout.Toggle(EnableAutoReload, EnableAutoReloadHeadContent, EditorStyles.toolbarButton, EmptyLayoutOption) != EnableAutoReload)
|
||||||
{
|
{
|
||||||
TaskTracker.EditorEnableState.EnableAutoReload = !EnableAutoReload;
|
TaskTracker.EnableState.EnableAutoReload = !EnableAutoReload;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GUILayout.Toggle(EnableTracking, EnableTrackingHeadContent, EditorStyles.toolbarButton, EmptyLayoutOption) != EnableTracking)
|
if (GUILayout.Toggle(EnableTracking, EnableTrackingHeadContent, EditorStyles.toolbarButton, EmptyLayoutOption) != EnableTracking)
|
||||||
{
|
{
|
||||||
TaskTracker.EditorEnableState.EnableTracking = !EnableTracking;
|
TaskTracker.EnableState.EnableTracking = !EnableTracking;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GUILayout.Toggle(EnableStackTrace, EnableStackTraceHeadContent, EditorStyles.toolbarButton, EmptyLayoutOption) != EnableStackTrace)
|
if (GUILayout.Toggle(EnableStackTrace, EnableStackTraceHeadContent, EditorStyles.toolbarButton, EmptyLayoutOption) != EnableStackTrace)
|
||||||
{
|
{
|
||||||
TaskTracker.EditorEnableState.EnableStackTrace = !EnableStackTrace;
|
TaskTracker.EnableState.EnableStackTrace = !EnableStackTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
GUILayout.FlexibleSpace();
|
GUILayout.FlexibleSpace();
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Cysharp.Threading.Tasks
|
||||||
public const string EnableTrackingKey = "UniTaskTrackerWindow_EnableTrackingKey";
|
public const string EnableTrackingKey = "UniTaskTrackerWindow_EnableTrackingKey";
|
||||||
public const string EnableStackTraceKey = "UniTaskTrackerWindow_EnableStackTraceKey";
|
public const string EnableStackTraceKey = "UniTaskTrackerWindow_EnableStackTraceKey";
|
||||||
|
|
||||||
public static class EditorEnableState
|
public static class EnableState
|
||||||
{
|
{
|
||||||
static bool enableAutoReload;
|
static bool enableAutoReload;
|
||||||
public static bool EnableAutoReload
|
public static bool EnableAutoReload
|
||||||
|
@ -57,6 +57,15 @@ namespace Cysharp.Threading.Tasks
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif ENABLE_PROFILER
|
||||||
|
|
||||||
|
public static class EnableState
|
||||||
|
{
|
||||||
|
public static bool EnableAutoReload;
|
||||||
|
public static bool EnableTracking;
|
||||||
|
public static bool EnableStackTrace;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,16 +73,16 @@ namespace Cysharp.Threading.Tasks
|
||||||
|
|
||||||
static readonly WeakDictionary<IUniTaskSource, (string formattedType, int trackingId, DateTime addTime, string stackTrace)> tracking = new WeakDictionary<IUniTaskSource, (string formattedType, int trackingId, DateTime addTime, string stackTrace)>();
|
static readonly WeakDictionary<IUniTaskSource, (string formattedType, int trackingId, DateTime addTime, string stackTrace)> tracking = new WeakDictionary<IUniTaskSource, (string formattedType, int trackingId, DateTime addTime, string stackTrace)>();
|
||||||
|
|
||||||
[Conditional("UNITY_EDITOR")]
|
[Conditional( "ENABLE_PROFILER" )]
|
||||||
public static void TrackActiveTask(IUniTaskSource task, int skipFrame)
|
public static void TrackActiveTask(IUniTaskSource task, int skipFrame)
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
dirty = true;
|
dirty = true;
|
||||||
if (!EditorEnableState.EnableTracking) return;
|
if (!EnableState.EnableTracking) return;
|
||||||
var stackTrace = EditorEnableState.EnableStackTrace ? new StackTrace(skipFrame, true).CleanupAsyncStackTrace() : "";
|
var stackTrace = EnableState.EnableStackTrace ? new StackTrace(skipFrame, true).CleanupAsyncStackTrace() : "";
|
||||||
|
|
||||||
string typeName;
|
string typeName;
|
||||||
if (EditorEnableState.EnableStackTrace)
|
if (EnableState.EnableStackTrace)
|
||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
TypeBeautify(task.GetType(), sb);
|
TypeBeautify(task.GetType(), sb);
|
||||||
|
@ -87,12 +96,12 @@ namespace Cysharp.Threading.Tasks
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
[Conditional("UNITY_EDITOR")]
|
[Conditional( "ENABLE_PROFILER" )]
|
||||||
public static void RemoveTracking(IUniTaskSource task)
|
public static void RemoveTracking(IUniTaskSource task)
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
dirty = true;
|
dirty = true;
|
||||||
if (!EditorEnableState.EnableTracking) return;
|
if (!EnableState.EnableTracking) return;
|
||||||
var success = tracking.TryRemove(task);
|
var success = tracking.TryRemove(task);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue