/* * Copyright 2019, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import {transform, nanos_to_string, get_visible_chip} from './transform.js' function transform_wl_layer(layer) { function is_visible(layer) { return layer.parent == 0 || (layer.visibleInParent && layer.visible && (layer.hidden != 1)); } var chips = []; var rect = layer.displayFrame; var visible = is_visible(layer); if (visible && layer.parent != 0) { chips.push(get_visible_chip()); } if (!visible) { rect = undefined; } return transform({ obj: layer, kind: 'layer', name: layer.name, children: [ [layer.resolvedChildren, transform_wl_layer], ], rect, highlight: rect, chips, visible, stableId: layer.id, }); } function transform_wl_container(cntnr) { var rect = cntnr.geometry; var layersList = cntnr.layers || []; return transform({ obj: cntnr, kind: 'container', name: cntnr.name, children: [ [layersList, transform_wl_layer], ], rect, highlight: rect, stableId: cntnr.id, }); } function transform_wl_outputstate(layers) { var containerList = layers.containers || []; var fullBounds = layers.fullBounds; return transform({ obj: {name: "Output State", fullBounds: fullBounds}, kind: 'outputstate', name: 'Output State', rect: fullBounds, highlight: fullBounds, children: [ [containerList, transform_wl_container], ], }); } function transform_wl_entry(entry) { return transform({ obj: entry, kind: 'entry', name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where, children: [ [[entry.state], transform_wl_outputstate], ], timestamp: entry.elapsedRealtimeNanos, stableId: 'entry', }); } function transform_wayland_trace(entries) { var r = transform({ obj: entries, kind: 'wltrace', name: 'wltrace', children: [ [entries.entry, transform_wl_entry], ], }); return r; } export {transform_wl_outputstate, transform_wayland_trace};