追蹤工具能夠以視覺化的方式呈現輸入事件分派路徑。每個持續時間和傳出/傳入流程事件都必須彙整,以簡單明瞭的方式說明事件路徑中包含哪些元件和函式路徑。
觸控事件流程
觸控事件路徑牽涉到觸控驅動程式庫元件、輸入管道、景觀及水晶檢視元件 (在本例中為 Flutter)。每個元件都會佔用水平列,其函式呼叫堆疊的順序會依照時間順序排列。
驅動程式從裝置讀取觸控事件,並建立 fuchsia.input.report.InputReport。驅動程式庫的呼叫堆疊會以「HID IO Queue」和「InputReportInstance GetReports」表示。
在輸入管道「touch-binding-process-reports」中,有一項流程事件會將「InputReportInstance GetReports」連結到下一個時間長度。FIDL 通訊協定方法為 fuchsia.input.report.InputReportsReader.ReadInputReports()。
有一項流程事件會將「touch-binding-process-reports」連結至「presentation_on_event」,由於輸入管道實作中的工作迴圈排列方式,因此它們分別以不同的函式呼叫堆疊表示。
「presentation_on_event」命名是舊版的保留設定,可讓基於追蹤指標輸入延遲指令碼持續運作。建議擁有者根據實際意圖變更時間長度和流程的名稱,但可能也需要更新受影響的指令碼。一般來說,追蹤運算指令碼設有「煙霧測試」以避免立即中斷,因此錯誤變更應由 CQ 擷取。
有一個流程事件,會將輸入管道的「觸控插入至情境」與風景的「插入器::插入」持續時間相連結。FIDL 通訊協定方法是 fuchsia.ui.pointerinjector.Device.Inject()。「touch-inject-into-scenic」時間長度以 Inject() 呼叫做為結尾,以刻意排除回傳確認。「presentation_on_event」整體持續時間也擷取傳回結果,這涵蓋了較長時間的回傳。
風景呼叫堆疊包含「插入器:插入」、「dispatch_event_to_client」和其他一些函式。有一個流程事件會將「dispatch_event_to_client」持續時間連線至 Flutter 的「PlatformView::OnHandlePointerEvent」持續時間。在接收端,觸控事件最終已到達,並由 UI 用戶端元件進行處理。