Support a ring buffer or a queue to store window manager traces
Currently the WM uses a BlockingQueue with limited capacity to store the traces and a separate thread to continuously write the buffer elements to disk. This implementation allows the WM trace to use its current logging behavior or to use a ring buffer instead. The ring buffer: - Stores the most recent traces and discard the oldest ones when it reaches maximum capacity. - Write to disk only when the trace logging is stopped or during a bugreport, instead of having a thread to continuously write to disk. The ring buffer can be selected (or disabled) using the command: - adb shell cmd window tracing continuous (true/false) Any value other than "true" (case insensitive) is considered false After selecting ring buffer, start and stop WM trace monitoring with 'adb shell cmd window tracing (start/stop)' Current capacity is fixed to 512KB. Future implementations will make this value configurable. Test: Flash a device. Enable continuous mode and window manager tracing. Use the device. Stop the trace and pull the logged trace. Open the trace in Winscope and check if the last X KB of data are there. Unit tests: atest WmTests:WindowTraceBufferTest Change-Id: Id4108b0231ab7af504240ea35c8a030fecf8b8a9
Loading
Please register or sign in to comment