├── .gitignore
├── legend.xml
├── README.md
├── style.css
├── testdata
├── contents.txt
├── timeline-presentation-i.log
├── timeline-1.log
├── timeline-presentation-f.log
└── timeline-presentation-p.log
├── resdata.S
├── Makefile
├── wesgr.h
├── wesgr.c
├── parse.c
├── handler.c
└── graphdata.c
/.gitignore:
--------------------------------------------------------------------------------
1 | *.o
2 | *.swp
3 | /*.svg
4 | /wesgr
5 | /config.mk
6 |
7 |
--------------------------------------------------------------------------------
/legend.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | begin repaint
5 |
6 |
7 |
8 |
9 | post repaint
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | vblank
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | damage commit
28 | repaint flush
29 | hit screen
30 |
31 |
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Wesgr
2 |
3 | Wesgr is a [Weston](http://wayland.freedesktop.org/)
4 | JSON timeline data interpreter and grapher.
5 | Its intention is to produce an SVG image with annotations,
6 | describing the actions related to Weston's repaint loop.
7 |
8 | JSON timeline feature was merged and released first in Weston 1.6.91
9 | (Weston 1.7 alpha).
10 |
11 | ## Building
12 |
13 | No autotools yet, so just do `make`. There is no target
14 | for installing.
15 |
16 | ## Running
17 |
18 | ./wesgr -i testdata/timeline-1.log -o graph.svg
19 |
20 | It creates `graph.svg`.
21 |
22 | ## Example output
23 |
24 | This is a recording from Weston's DRM backend with two outputs.
25 | You can find the input data as `testdata/timeline-3.log`, and you can
26 | generate these with `make demo`.
27 |
28 | An overview of the whole recording, as PNG because the SVG is 960 kB:
29 | 
31 |
32 | A sub-range of the recording:
33 | 
35 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | text {
2 | font-family: Verdana, Geneva, sans-serif;
3 | font-size: 12px;
4 | }
5 |
6 | text[class~="output_label"] {
7 | font-weight: bold;
8 | }
9 |
10 | g[class~="delay_line"] path,
11 | g[class~="submit_line"] path,
12 | g[class~="gpu_line"] path,
13 | g[class~="renderer_gpu_line"] path {
14 | stroke: black;
15 | stroke-width: 5;
16 | }
17 |
18 | g[class~="trans_begin"] path {
19 | stroke: black;
20 | stroke-width: 1;
21 | }
22 |
23 | g[class~="trans_begin"] circle {
24 | stroke-width: 0;
25 | fill: green;
26 | }
27 |
28 | g[class~="trans_post"] path {
29 | stroke: black;
30 | stroke-width: 1;
31 | }
32 |
33 | g[class~="trans_post"] circle {
34 | stroke-width: 0;
35 | fill: blue;
36 | }
37 |
38 | g[class~="vblank"] path {
39 | stroke: #b00;
40 | stroke-width: 1;
41 | }
42 |
43 | g[class~="vblank"] circle {
44 | stroke-width: 0;
45 | fill: #b00;
46 | }
47 |
48 | g[class~="not_looping"] path {
49 | fill: #ddd;
50 | stroke-width: 0;
51 | }
52 |
53 | g[class~="damage"] path {
54 | stroke: black;
55 | stroke-width: 1;
56 | }
57 |
58 | g[class~="damage"] circle {
59 | stroke-width: 0;
60 | fill: #505;
61 | }
62 |
63 | path.axis, path.major_tick {
64 | stroke: #000;
65 | stroke-width: 1;
66 | }
67 |
68 | path.minor_tick {
69 | stroke: #888;
70 | stroke-width: 1;
71 | }
72 |
73 | text.tick_label {
74 | }
75 |
76 |
--------------------------------------------------------------------------------
/testdata/contents.txt:
--------------------------------------------------------------------------------
1 | timeline-1.log 2014-08-16
2 | Original test data, now outdated.
3 | Locally modified Weston repaint algorithm.
4 |
5 | timeline-2.log 2014-09-06
6 | New events core_commit_damage and core_flush_damage.
7 | Locally modified Weston repaint algorithm.
8 |
9 | Recorded on X11-backend, single output, no windows, just hovering over
10 | the panel buttons.
11 |
12 | timeline-3.log 2014-09-19
13 | Captured on DRM backend, two outputs, no correct vblank timestamping
14 | yet.
15 | Locally modified Weston repaint algorithm.
16 |
17 | Contains pointer movement, open weston-terminal, panel tooltip,
18 | simple-egl. Simple-egl is being dragged from one output to the other and
19 | back.
20 |
21 | timeline-egl-move-output.log 2014-10-02
22 | Captured on DRM backend, two outputs.
23 | Correct vblank timestamps, Weston 1.6.0 repaint algorithm.
24 |
25 | Contains simple-egl running, pointer movement, dragging simple-egl
26 | from one output to another.
27 |
28 | timeline-presentation-f.log 2014-10-02
29 | Captured on DRM backend, two outputs.
30 | Correct vblank timestamps, Weston 1.6.0 repaint algorithm.
31 |
32 | Contains presentation-shm -f on one output.
33 |
34 | timeline-presentation-i.log 2014-10-02
35 | Captured on DRM backend, two outputs.
36 | Correct vblank timestamps, Weston 1.6.0 repaint algorithm.
37 |
38 | Contains presentation-shm -i on one output.
39 |
40 | timeline-presentation-p.log 2014-10-02
41 | Captured on DRM backend, two outputs.
42 | Correct vblank timestamps, Weston 1.6.0 repaint algorithm.
43 |
44 | Contains presentation-shm -p on one output.
45 |
--------------------------------------------------------------------------------
/resdata.S:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright © 2015 Collabora, Ltd.
3 | *
4 | * Permission to use, copy, modify, distribute, and sell this software and
5 | * its documentation for any purpose is hereby granted without fee, provided
6 | * that the above copyright notice appear in all copies and that both that
7 | * copyright notice and this permission notice appear in supporting
8 | * documentation, and that the name of the copyright holders not be used in
9 | * advertising or publicity pertaining to distribution of the software
10 | * without specific, written prior permission. The copyright holders make
11 | * no representations about the suitability of this software for any
12 | * purpose. It is provided "as is" without express or implied warranty.
13 | *
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15 | * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 | * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18 | * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19 | * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 | */
22 |
23 | /* from: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967#comment-348129 */
24 |
25 | .altmacro
26 | .macro binfile name file
27 | .p2align 2
28 | .globl \name&_begin
29 | \name&_begin:
30 | .incbin \file
31 | \name&_end:
32 | .byte 0
33 | .p2align 2
34 | .globl \name&_len
35 | \name&_len:
36 | .int (\name&_end - \name&_begin)
37 | .endm
38 |
39 | .section .rodata
40 | binfile RES_style "style.css"
41 | binfile RES_legend "legend.xml"
42 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | CC ?= gcc
2 | V ?= 0
3 |
4 | -include config.mk
5 |
6 | CFLAGS+=-Wextra -Wall -Wno-unused-parameter \
7 | -Wstrict-prototypes -Wmissing-prototypes -O0 -g
8 | CPPFLAGS+=$(DEP_CFLAGS) -D_GNU_SOURCE
9 | LDLIBS+=$(DEP_LIBS) -lm
10 |
11 | HEADERS := $(wildcard *.h)
12 | OBJS := wesgr.o parse.o graphdata.o handler.o resdata.o
13 | EXE := wesgr
14 | GENERATED := config.mk
15 |
16 | all: $(EXE)
17 | demo: tgraph1.svg tgraph2.svg sample3-overview.svg sample3-detail.svg
18 |
19 | .PHONY: clean demo
20 |
21 | clean:
22 | rm -f *.o $(EXE) $(GENERATED)
23 |
24 | $(EXE): $(OBJS)
25 | $(M_V_LINK)$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
26 |
27 | $(OBJS): $(HEADERS) config.mk
28 |
29 | resdata.o: legend.xml style.css
30 |
31 | PKG_DEPS := json-c >= 0.11
32 | config.mk: Makefile
33 | $(M_V_GEN)\
34 | echo "DEP_CFLAGS=`pkg-config --cflags '$(PKG_DEPS)'`" > $@ && \
35 | echo "DEP_LIBS=`pkg-config --libs '$(PKG_DEPS)'`" >> $@
36 |
37 | tgraph1.svg: $(EXE) style.css
38 | ./$(EXE) -i testdata/timeline-1.log -o $@ -a 413 -b 620
39 |
40 | tgraph2.svg: $(EXE) style.css
41 | ./$(EXE) -i testdata/timeline-2.log -o $@
42 |
43 | sample3-overview.svg: $(EXE) style.css
44 | ./$(EXE) -i testdata/timeline-3.log -o $@
45 |
46 | sample3-detail.svg: $(EXE) style.css
47 | ./$(EXE) -i testdata/timeline-3.log -o $@ -a 26000 -b 26100
48 |
49 | %.o: %.c
50 | $(M_V_CC)$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
51 |
52 | %.o: %.S
53 | $(M_V_AS)$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c -o $@ $<
54 |
55 | .SUFFIXES:
56 |
57 | m_v_cc_0 = @echo " CC " $@;
58 | M_V_CC = $(m_v_cc_$(V))
59 | m_v_as_0 = @echo " CCAS " $@;
60 | M_V_AS = $(m_v_as_$(V))
61 | m_v_link_0 = @echo " LINK " $@;
62 | M_V_LINK = $(m_v_link_$(V))
63 | m_v_gen_0 = @echo " GEN " $@;
64 | M_V_GEN = $(m_v_gen_$(V))
65 |
--------------------------------------------------------------------------------
/testdata/timeline-presentation-i.log:
--------------------------------------------------------------------------------
1 | { "id":9, "type":"weston_surface", "desc":"top-level window 'presentation-shm'" }
2 | { "T":[4507015, 291554788], "N":"core_commit_damage", "ws":9 }
3 | { "id":10, "type":"weston_output", "name":"LVDS1" }
4 | { "id":9, "type":"weston_surface", "desc":"top-level window 'presentation-shm'" }
5 | { "T":[4507015, 291639100], "N":"core_repaint_req", "wo":10,
6 | "C": [
7 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
8 | ] }
9 | { "T":[4507015, 291648220], "N":"core_repaint_enter_loop", "wo":10,
10 | "C": [
11 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
12 | ] }
13 | { "T":[4507015, 306088848], "N":"core_repaint_finished", "wo":10, "vblank":[4507015, 306152000] }
14 | { "T":[4507015, 306189221], "N":"core_repaint_begin", "wo":10 }
15 | { "T":[4507015, 306492011], "N":"core_flush_damage", "ws":9, "wo":10 }
16 | { "T":[4507015, 306852068], "N":"core_repaint_posted", "wo":10 }
17 | { "T":[4507015, 322742677], "N":"core_repaint_finished", "wo":10, "vblank":[4507015, 322803000] }
18 | { "T":[4507015, 322865057], "N":"core_repaint_exit_loop", "wo":10 }
19 | { "T":[4507016, 307400901], "N":"core_commit_damage", "ws":9 }
20 | { "T":[4507016, 307487900], "N":"core_repaint_req", "wo":10,
21 | "C": [
22 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
23 | ] }
24 | { "T":[4507016, 307512105], "N":"core_repaint_enter_loop", "wo":10,
25 | "C": [
26 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
27 | ] }
28 | { "T":[4507016, 321745061], "N":"core_repaint_finished", "wo":10, "vblank":[4507016, 321811000] }
29 | { "T":[4507016, 321843774], "N":"core_repaint_begin", "wo":10 }
30 | { "T":[4507016, 322184562], "N":"core_flush_damage", "ws":9, "wo":10 }
31 | { "T":[4507016, 322548768], "N":"core_repaint_posted", "wo":10 }
32 | { "T":[4507016, 338396975], "N":"core_repaint_finished", "wo":10, "vblank":[4507016, 338462000] }
33 | { "T":[4507016, 338466334], "N":"core_repaint_exit_loop", "wo":10 }
34 | { "T":[4507017, 322944398], "N":"core_commit_damage", "ws":9 }
35 | { "T":[4507017, 323034397], "N":"core_repaint_req", "wo":10,
36 | "C": [
37 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
38 | ] }
39 | { "T":[4507017, 323061647], "N":"core_repaint_enter_loop", "wo":10,
40 | "C": [
41 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
42 | ] }
43 | { "T":[4507017, 337321678], "N":"core_repaint_finished", "wo":10, "vblank":[4507017, 337473000] }
44 | { "T":[4507017, 337379723], "N":"core_repaint_begin", "wo":10 }
45 | { "T":[4507017, 337661669], "N":"core_flush_damage", "ws":9, "wo":10 }
46 | { "T":[4507017, 337990635], "N":"core_repaint_posted", "wo":10 }
47 | { "T":[4507017, 353969849], "N":"core_repaint_finished", "wo":10, "vblank":[4507017, 354123000] }
48 | { "T":[4507017, 354064729], "N":"core_repaint_exit_loop", "wo":10 }
49 | { "T":[4507018, 338313187], "N":"core_commit_damage", "ws":9 }
50 | { "T":[4507018, 338377337], "N":"core_repaint_req", "wo":10,
51 | "C": [
52 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
53 | ] }
54 | { "T":[4507018, 338401290], "N":"core_repaint_enter_loop", "wo":10,
55 | "C": [
56 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":9 }
57 | ] }
58 | { "T":[4507018, 352977679], "N":"core_repaint_finished", "wo":10, "vblank":[4507018, 353131000] }
59 | { "T":[4507018, 353055633], "N":"core_repaint_begin", "wo":10 }
60 | { "T":[4507018, 353345326], "N":"core_flush_damage", "ws":9, "wo":10 }
61 | { "T":[4507018, 353690534], "N":"core_repaint_posted", "wo":10 }
62 | { "T":[4507018, 369626779], "N":"core_repaint_finished", "wo":10, "vblank":[4507018, 369781000] }
63 | { "T":[4507018, 369700419], "N":"core_repaint_exit_loop", "wo":10 }
64 |
--------------------------------------------------------------------------------
/wesgr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright © 2014 Pekka Paalanen
3 | *
4 | * Permission to use, copy, modify, distribute, and sell this software and
5 | * its documentation for any purpose is hereby granted without fee, provided
6 | * that the above copyright notice appear in all copies and that both that
7 | * copyright notice and this permission notice appear in supporting
8 | * documentation, and that the name of the copyright holders not be used in
9 | * advertising or publicity pertaining to distribution of the software
10 | * without specific, written prior permission. The copyright holders make
11 | * no representations about the suitability of this software for any
12 | * purpose. It is provided "as is" without express or implied warranty.
13 | *
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15 | * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 | * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18 | * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19 | * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 | */
22 |
23 | #ifndef WESGR_H
24 | #define WESGR_H
25 |
26 | #include
27 | #include
28 |
29 | #define ARRAY_LENGTH(a) (sizeof(a) / sizeof((a)[0]))
30 |
31 | struct json_object;
32 |
33 | struct info_weston_output;
34 | struct info_weston_surface;
35 |
36 | struct update {
37 | struct timespec damage;
38 | struct timespec flush;
39 | struct timespec vblank;
40 | struct update *next;
41 | };
42 |
43 | struct update_graph {
44 | struct update_graph *next;
45 | struct update *updates;
46 | const char *style;
47 | char *label;
48 |
49 | double y;
50 |
51 | struct update *need_vblank;
52 | };
53 |
54 | struct activity {
55 | struct timespec begin;
56 | struct timespec end;
57 | struct activity *next;
58 | };
59 |
60 | struct activity_set {
61 | struct activity *act;
62 | };
63 |
64 | struct vblank {
65 | struct timespec ts;
66 | struct vblank *next;
67 | };
68 |
69 | struct vblank_set {
70 | struct vblank *vbl;
71 | };
72 |
73 | struct transition {
74 | struct timespec ts;
75 | struct transition *next;
76 | };
77 |
78 | struct transition_set {
79 | struct transition *trans;
80 | const char *style;
81 | };
82 |
83 | struct line_block {
84 | struct timespec begin;
85 | struct timespec end;
86 | const char *style;
87 | char *desc;
88 | struct line_block *next;
89 | };
90 |
91 | struct line_graph {
92 | struct line_block *block;
93 | const char *style;
94 | const char *label;
95 |
96 | double y;
97 | };
98 |
99 | struct output_graph {
100 | struct info_weston_output *info;
101 | struct output_graph *next;
102 |
103 | struct line_graph delay_line;
104 | struct line_graph submit_line;
105 | struct line_graph gpu_line;
106 | struct line_graph renderer_gpu_line;
107 | struct transition_set begins;
108 | struct transition_set posts;
109 | struct vblank_set vblanks;
110 | struct activity_set not_looping;
111 | struct update_graph *updates;
112 |
113 | double y1, y2;
114 | double title_y;
115 |
116 | struct timespec last_req;
117 | struct timespec last_finished;
118 | struct timespec last_begin;
119 | struct timespec last_posted;
120 | struct timespec last_exit_loop;
121 | struct timespec last_renderer_gpu_begin;
122 | };
123 |
124 | struct graph_data {
125 | struct output_graph *output;
126 |
127 | struct timespec begin;
128 | struct timespec end;
129 |
130 | double time_axis_y;
131 | double legend_y;
132 | };
133 |
134 | struct surface_graph_list {
135 | struct surface_graph_list *next;
136 | struct output_graph *output_gr;
137 | struct update_graph *update_gr;
138 | };
139 |
140 | enum object_type {
141 | TYPE_WESTON_OUTPUT,
142 | TYPE_WESTON_SURFACE,
143 | };
144 |
145 | struct info_weston_output {
146 | const char *name;
147 | struct output_graph *output_gr;
148 | };
149 |
150 | struct info_weston_surface {
151 | char *description;
152 |
153 | struct update *open_update;
154 | struct surface_graph_list *glist;
155 | struct surface_graph_list *last;
156 | };
157 |
158 | struct object_info {
159 | unsigned id;
160 | enum object_type type;
161 | struct json_object *jobj;
162 | union {
163 | struct info_weston_output wo;
164 | struct info_weston_surface ws;
165 | } info;
166 | };
167 |
168 | struct lookup_table {
169 | unsigned id_base;
170 | void **array;
171 | unsigned alloc;
172 | };
173 |
174 | struct parse_context {
175 | struct lookup_table idmap;
176 | struct graph_data *gdata;
177 | };
178 |
179 | typedef int (*tp_handler_t)(struct parse_context *ctx,
180 | const struct timespec *ts,
181 | struct json_object *jobj);
182 |
183 | struct tp_handler_item {
184 | const char *tp_name;
185 | tp_handler_t func;
186 | };
187 |
188 | extern const struct tp_handler_item tp_handler_list[];
189 |
190 | int
191 | graph_data_init(struct graph_data *gdata);
192 |
193 | void
194 | graph_data_release(struct graph_data *gdata);
195 |
196 | int
197 | graph_data_end(struct graph_data *gdata);
198 |
199 | void
200 | graph_data_time(struct graph_data *gdata, const struct timespec *ts);
201 |
202 | int
203 | graph_data_to_svg(struct graph_data *gdata, int from_ms, int to_ms,
204 | const char *filename);
205 |
206 | int
207 | parse_context_init(struct parse_context *ctx, struct graph_data *gdata);
208 |
209 | void
210 | parse_context_release(struct parse_context *ctx);
211 |
212 | int
213 | parse_context_process_object(struct parse_context *ctx,
214 | struct json_object *jobj);
215 |
216 | struct object_info *
217 | get_object_info_from_timepoint(struct parse_context *ctx,
218 | struct json_object *jobj, const char *member);
219 |
220 | struct timespec
221 | get_timespec_from_timepoint(struct parse_context *ctx,
222 | struct json_object *jobj, const char *member);
223 |
224 | static inline void
225 | timespec_invalidate(struct timespec *ts)
226 | {
227 | ts->tv_nsec = -1;
228 | }
229 |
230 | static inline int
231 | timespec_is_valid(const struct timespec *ts)
232 | {
233 | return ts->tv_nsec >= 0;
234 | }
235 |
236 | void
237 | generic_error(const char *file, int line, const char *func);
238 |
239 | #define ERROR ({ generic_error(__FILE__, __LINE__, __func__); -1; })
240 | #define ERROR_NULL ({ generic_error(__FILE__, __LINE__, __func__); NULL; })
241 |
242 | #endif /* WESGR_H */
243 |
244 |
--------------------------------------------------------------------------------
/wesgr.c:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright © 2014 Pekka Paalanen
3 | *
4 | * Permission to use, copy, modify, distribute, and sell this software and
5 | * its documentation for any purpose is hereby granted without fee, provided
6 | * that the above copyright notice appear in all copies and that both that
7 | * copyright notice and this permission notice appear in supporting
8 | * documentation, and that the name of the copyright holders not be used in
9 | * advertising or publicity pertaining to distribution of the software
10 | * without specific, written prior permission. The copyright holders make
11 | * no representations about the suitability of this software for any
12 | * purpose. It is provided "as is" without express or implied warranty.
13 | *
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15 | * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 | * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18 | * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19 | * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 | */
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | #include
29 |
30 | #include "wesgr.h"
31 |
32 | struct bytebuf {
33 | uint8_t *data;
34 | size_t alloc;
35 | size_t len;
36 | size_t pos;
37 | };
38 |
39 | static void
40 | bytebuf_init(struct bytebuf *bb)
41 | {
42 | bb->data = NULL;
43 | bb->alloc = 0;
44 | bb->len = 0;
45 | bb->pos = 0;
46 | }
47 |
48 | static void
49 | bytebuf_release(struct bytebuf *bb)
50 | {
51 | free(bb->data);
52 | bytebuf_init(bb);
53 | }
54 |
55 | static int
56 | bytebuf_ensure(struct bytebuf *bb, size_t sz)
57 | {
58 | uint8_t *data;
59 |
60 | if (bb->alloc >= sz)
61 | return 0;
62 |
63 | data = realloc(bb->data, sz);
64 | if (!data)
65 | return ERROR;
66 |
67 | bb->data = data;
68 | bb->alloc = sz;
69 |
70 | return 0;
71 | }
72 |
73 | static int
74 | bytebuf_read_from_file(struct bytebuf *bb, FILE *fp, size_t sz)
75 | {
76 | size_t ret;
77 |
78 | if (bytebuf_ensure(bb, sz) < 0)
79 | return ERROR;
80 |
81 | ret = fread(bb->data, 1, sz, fp);
82 | if (ferror(fp))
83 | return ERROR;
84 |
85 | bb->len = ret;
86 | bb->pos = 0;
87 |
88 | return 0;
89 | }
90 |
91 | static int
92 | parse_file(const char *name, struct parse_context *ctx)
93 | {
94 | int ret = -1;
95 | struct bytebuf bb;
96 | FILE *fp;
97 | struct json_tokener *jtok;
98 | struct json_object *jobj;
99 |
100 | bytebuf_init(&bb);
101 | jtok = json_tokener_new();
102 | if (!jtok)
103 | return ERROR;
104 |
105 | fp = fopen(name, "r");
106 | if (!fp)
107 | goto out_release;
108 |
109 | while (1) {
110 | enum json_tokener_error jerr;
111 | int r;
112 |
113 | jobj = json_tokener_parse_ex(jtok,
114 | (char *)(bb.data + bb.pos),
115 | bb.len - bb.pos);
116 | jerr = json_tokener_get_error(jtok);
117 | if (!jobj && jerr == json_tokener_continue) {
118 | if (feof(fp)) {
119 | ret = 0;
120 | break;
121 | }
122 |
123 | if (bytebuf_read_from_file(&bb, fp, 8192) < 0)
124 | break;
125 |
126 | continue;
127 | }
128 |
129 | if (!jobj) {
130 | fprintf(stderr, "JSON parse failure: %d\n", jerr);
131 | break;
132 | }
133 |
134 | bb.pos += jtok->char_offset;
135 |
136 | r = parse_context_process_object(ctx, jobj);
137 | json_object_put(jobj);
138 |
139 | if (r < 0) {
140 | fprintf(stderr, "JSON interpretation error\n");
141 | break;
142 | }
143 | }
144 |
145 | fclose(fp);
146 |
147 | if (ret != -1)
148 | ret = graph_data_end(ctx->gdata);
149 |
150 | out_release:
151 | bytebuf_release(&bb);
152 | json_tokener_free(jtok);
153 |
154 | if (ret == -1)
155 | return ERROR;
156 | return ret;
157 | }
158 |
159 | struct prog_args {
160 | int from_ms;
161 | int to_ms;
162 | const char *infile;
163 | const char *svgfile;
164 | };
165 |
166 | static void
167 | print_usage(const char *prog)
168 | {
169 | printf("Usage:\n %s -i input.log -o output.svg [options]\n"
170 | "Arguments and options:\n"
171 | " -h, --help Print this help and exit.\n"
172 | " -i, --input=FILE Read FILE as the input data.\n"
173 | " -o, --output=FILE Write FILE as the output SVG.\n"
174 | " -a, --from-ms=MS Start the graph at MS milliseconds.\n"
175 | " -b, --to-ms=MS End the graph at MS milliseconds.\n",
176 | prog);
177 | }
178 |
179 | static int
180 | parse_opts(struct prog_args *args, int argc, char *argv[])
181 | {
182 | static const char short_opts[] = "hi:a:b:o:";
183 | static const struct option opts[] = {
184 | { "help", no_argument, 0, 'h' },
185 | { "input", required_argument, 0, 'i' },
186 | { "from-ms", required_argument, 0, 'a' },
187 | { "to-ms", required_argument, 0, 'b' },
188 | { "output", required_argument, 0, 'o' },
189 | { NULL, 0, 0, 0 }
190 | };
191 |
192 | while (1) {
193 | int c;
194 | int longindex;
195 |
196 | c = getopt_long(argc, argv, short_opts, opts, &longindex);
197 | if (c == -1)
198 | break;
199 |
200 | switch (c) {
201 | case '?':
202 | return -1;
203 | case 'h':
204 | print_usage(argv[0]);
205 | return -1;
206 | case 'i':
207 | args->infile = optarg;
208 | break;
209 | case 'a':
210 | args->from_ms = atoi(optarg);
211 | break;
212 | case 'b':
213 | args->to_ms = atoi(optarg);
214 | break;
215 | case 'o':
216 | args->svgfile = optarg;
217 | break;
218 | default:
219 | break;
220 | }
221 | }
222 |
223 | if (optind < argc) {
224 | fprintf(stderr, "Error, extra command line arguments:");
225 | while (optind < argc)
226 | fprintf(stderr, " %s", argv[optind++]);
227 | fprintf(stderr, "\n");
228 |
229 | return -1;
230 | }
231 |
232 | return 0;
233 | }
234 |
235 | int
236 | main(int argc, char *argv[])
237 | {
238 | struct prog_args args = { -1, -1, NULL, NULL };
239 | struct graph_data gdata;
240 | struct parse_context ctx;
241 |
242 | if (parse_opts(&args, argc, argv) < 0)
243 | return 1;
244 |
245 | if (!args.infile) {
246 | fprintf(stderr, "Error: input file not specified.\n");
247 | return 1;
248 | }
249 |
250 | if (!args.svgfile) {
251 | fprintf(stderr, "Error: output file not specified.\n");
252 | return 1;
253 | }
254 |
255 | if (graph_data_init(&gdata) < 0)
256 | return 1;
257 |
258 | if (parse_context_init(&ctx, &gdata) < 0)
259 | return 1;
260 |
261 | if (parse_file(args.infile, &ctx) < 0)
262 | return 1;
263 |
264 | if (graph_data_to_svg(&gdata, args.from_ms, args.to_ms,
265 | args.svgfile) < 0)
266 | return 1;
267 |
268 | parse_context_release(&ctx);
269 | graph_data_release(&gdata);
270 |
271 | return 0;
272 | }
273 |
274 | void
275 | generic_error(const char *file, int line, const char *func)
276 | {
277 | fprintf(stderr, "Error in %s(), %s:%d\n", func, file, line);
278 | }
279 |
280 |
--------------------------------------------------------------------------------
/parse.c:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright © 2014 Pekka Paalanen
3 | *
4 | * Permission to use, copy, modify, distribute, and sell this software and
5 | * its documentation for any purpose is hereby granted without fee, provided
6 | * that the above copyright notice appear in all copies and that both that
7 | * copyright notice and this permission notice appear in supporting
8 | * documentation, and that the name of the copyright holders not be used in
9 | * advertising or publicity pertaining to distribution of the software
10 | * without specific, written prior permission. The copyright holders make
11 | * no representations about the suitability of this software for any
12 | * purpose. It is provided "as is" without express or implied warranty.
13 | *
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15 | * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 | * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18 | * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19 | * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 | */
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | #include
30 |
31 | #include "wesgr.h"
32 |
33 | static void
34 | lookup_table_init(struct lookup_table *tbl)
35 | {
36 | tbl->id_base = 0;
37 | tbl->alloc = 0;
38 | tbl->array = NULL;
39 | }
40 |
41 | static int
42 | lookup_table_ensure(struct lookup_table *tbl, unsigned n)
43 | {
44 | void **arr;
45 | unsigned i;
46 |
47 | if (n <= tbl->alloc)
48 | return 0;
49 |
50 | n = (n / 512 + 1) * 512;
51 | if (n <= tbl->alloc)
52 | return ERROR;
53 |
54 | arr = realloc(tbl->array, n * sizeof(void *));
55 | if (!arr)
56 | return ERROR;
57 |
58 | for (i = tbl->alloc; i < n; i++)
59 | arr[i] = NULL;
60 |
61 | tbl->array = arr;
62 | tbl->alloc = n;
63 |
64 | return 0;
65 | }
66 |
67 | static void *
68 | lookup_table_get(struct lookup_table *tbl, unsigned id)
69 | {
70 | unsigned i = id - tbl->id_base;
71 |
72 | if (i >= tbl->alloc)
73 | return NULL;
74 |
75 | return tbl->array[i];
76 | }
77 |
78 | static int
79 | lookup_table_set(struct lookup_table *tbl, unsigned id, void *data)
80 | {
81 | unsigned i;
82 |
83 | if (id == 0)
84 | return -1;
85 |
86 | if (tbl->id_base == 0)
87 | tbl->id_base = id;
88 |
89 | i = id - tbl->id_base;
90 | if (lookup_table_ensure(tbl, i + 1) < 0)
91 | return ERROR;
92 |
93 | tbl->array[i] = data;
94 |
95 | return 0;
96 | }
97 |
98 | static void
99 | lookup_table_for_each(struct lookup_table *tbl,
100 | void (*func)(void **, void*), void *data)
101 | {
102 | unsigned i;
103 |
104 | for (i = 0; i < tbl->alloc; i++)
105 | if (tbl->array[i])
106 | (*func)(&tbl->array[i], data);
107 | }
108 |
109 | static void
110 | lookup_table_release(struct lookup_table *tbl)
111 | {
112 | free(tbl->array);
113 | }
114 |
115 | int
116 | parse_context_init(struct parse_context *ctx, struct graph_data *gdata)
117 | {
118 | lookup_table_init(&ctx->idmap);
119 | ctx->gdata = gdata;
120 |
121 | return 0;
122 | }
123 |
124 | static void
125 | object_info_destroy(struct object_info *oi)
126 | {
127 | struct surface_graph_list *sgl, *tmp;
128 |
129 | if (oi->jobj)
130 | json_object_put(oi->jobj);
131 |
132 | switch (oi->type) {
133 | default:
134 | case TYPE_WESTON_OUTPUT:
135 | break;
136 | case TYPE_WESTON_SURFACE:
137 | free(oi->info.ws.description);
138 | for (sgl = oi->info.ws.glist; sgl; sgl = tmp) {
139 | tmp = sgl->next;
140 | free(sgl);
141 | }
142 | break;
143 | }
144 |
145 | free(oi);
146 | }
147 |
148 | static void
149 | free_item(void **ptr, void *data)
150 | {
151 | object_info_destroy(*ptr);
152 | *ptr = NULL;
153 | }
154 |
155 | void
156 | parse_context_release(struct parse_context *ctx)
157 | {
158 | lookup_table_for_each(&ctx->idmap, free_item, NULL);
159 | lookup_table_release(&ctx->idmap);
160 | }
161 |
162 | static struct object_info *
163 | object_info_create(unsigned id, enum object_type type)
164 | {
165 | struct object_info *oi;
166 |
167 | oi = calloc(1, sizeof *oi);
168 | if (!oi)
169 | return ERROR_NULL;
170 |
171 | oi->id = id;
172 | oi->type = type;
173 |
174 | return oi;
175 | }
176 |
177 | static int
178 | object_info_update(struct object_info *oi, enum object_type type,
179 | struct json_object *jobj)
180 | {
181 | if (oi->type != type)
182 | return ERROR;
183 |
184 | if (oi->jobj)
185 | json_object_put(oi->jobj);
186 | oi->jobj = json_object_get(jobj);
187 |
188 | return 0;
189 | }
190 |
191 | static int
192 | get_object_type(enum object_type *type, const char *type_name)
193 | {
194 | static const struct {
195 | const char *name;
196 | enum object_type type;
197 | } map[] = {
198 | { "weston_output", TYPE_WESTON_OUTPUT },
199 | { "weston_surface", TYPE_WESTON_SURFACE },
200 | };
201 | unsigned i;
202 |
203 | for (i = 0; i < ARRAY_LENGTH(map); i++) {
204 | if (strcmp(map[i].name, type_name) == 0) {
205 | *type = map[i].type;
206 | return 0;
207 | }
208 | }
209 |
210 | return ERROR;
211 | }
212 |
213 | static int
214 | parse_id(unsigned *id, struct json_object *jobj)
215 | {
216 | int64_t val;
217 |
218 | errno = 0;
219 | val = json_object_get_int64(jobj);
220 | if (errno)
221 | return ERROR;
222 |
223 | if (val < 0 || val > UINT_MAX)
224 | return ERROR;
225 |
226 | *id = val;
227 |
228 | return 0;
229 | }
230 |
231 | static int
232 | parse_weston_output(struct parse_context *ctx, struct object_info *oi)
233 | {
234 | struct json_object *name_jobj;
235 |
236 | if (!json_object_object_get_ex(oi->jobj, "name", &name_jobj))
237 | return ERROR;
238 |
239 | oi->info.wo.name = json_object_get_string(name_jobj);
240 |
241 | return 0;
242 | }
243 |
244 | static int
245 | parse_weston_surface(struct parse_context *ctx, struct object_info *oi)
246 | {
247 | struct json_object *desc_jobj;
248 | struct json_object *parent;
249 | const char *desc;
250 | char str[64];
251 | int ret;
252 |
253 | if (!json_object_object_get_ex(oi->jobj, "desc", &desc_jobj))
254 | return ERROR;
255 |
256 | desc = json_object_get_string(desc_jobj);
257 | if (!desc) {
258 | snprintf(str, sizeof(str), "[id:%u]", oi->id);
259 | desc = str;
260 | }
261 |
262 | free(oi->info.ws.description);
263 | oi->info.ws.description = NULL;
264 |
265 | if (json_object_object_get_ex(oi->jobj, "main_surface", &parent)) {
266 | unsigned id;
267 | struct object_info *poi;
268 |
269 | if (parse_id(&id, parent) < 0)
270 | return ERROR;
271 |
272 | poi = lookup_table_get(&ctx->idmap, id);
273 | if (!poi)
274 | return ERROR;
275 |
276 | ret = asprintf(&oi->info.ws.description, "%s of %s", desc,
277 | poi->info.ws.description);
278 | if (ret < 0)
279 | oi->info.ws.description = NULL;
280 | } else {
281 | oi->info.ws.description = strdup(desc);
282 | }
283 |
284 | if (!oi->info.ws.description)
285 | return ERROR;
286 |
287 | return 0;
288 | }
289 |
290 | static int
291 | parse_context_process_info(struct parse_context *ctx,
292 | struct json_object *jobj,
293 | struct json_object *id_jobj)
294 | {
295 | unsigned id;
296 | struct object_info *oi;
297 | struct json_object *type_jobj;
298 | enum object_type type;
299 |
300 | if (parse_id(&id, id_jobj) < 0)
301 | return ERROR;
302 |
303 | if (!json_object_object_get_ex(jobj, "type", &type_jobj))
304 | return ERROR;
305 |
306 | if (!json_object_is_type(type_jobj, json_type_string))
307 | return ERROR;
308 |
309 | if (get_object_type(&type, json_object_get_string(type_jobj)) < 0)
310 | return ERROR;
311 |
312 | oi = lookup_table_get(&ctx->idmap, id);
313 | if (!oi) {
314 | oi = object_info_create(id, type);
315 | if (lookup_table_set(&ctx->idmap, id, oi) < 0)
316 | return ERROR;
317 | }
318 |
319 | if (object_info_update(oi, type, jobj) < 0)
320 | return ERROR;
321 |
322 | switch (oi->type) {
323 | case TYPE_WESTON_OUTPUT:
324 | return parse_weston_output(ctx, oi);
325 | case TYPE_WESTON_SURFACE:
326 | return parse_weston_surface(ctx, oi);
327 | }
328 |
329 | return 0;
330 | }
331 |
332 | static int
333 | parse_int(int64_t *r, struct json_object *jobj)
334 | {
335 | int64_t value;
336 |
337 | if (!jobj || !json_object_is_type(jobj, json_type_int))
338 | return ERROR;
339 |
340 | errno = 0;
341 | value = json_object_get_int64(jobj);
342 | if (errno)
343 | return ERROR;
344 |
345 | *r = value;
346 | return 0;
347 | }
348 |
349 | static int
350 | parse_timespec(struct timespec *ts_out, struct json_object *jobj)
351 | {
352 | int64_t v;
353 | struct timespec ts;
354 |
355 | if (!json_object_is_type(jobj, json_type_array))
356 | return ERROR;
357 |
358 | if (json_object_array_length(jobj) != 2)
359 | return ERROR;
360 |
361 | if (parse_int(&v, json_object_array_get_idx(jobj, 0)) < 0)
362 | return ERROR;
363 | ts.tv_sec = v;
364 |
365 | if (parse_int(&v, json_object_array_get_idx(jobj, 1)) < 0)
366 | return ERROR;
367 | ts.tv_nsec = v;
368 |
369 | *ts_out = ts;
370 |
371 | return 0;
372 | }
373 |
374 | static int
375 | parse_context_process_timepoint(struct parse_context *ctx,
376 | struct json_object *jobj,
377 | struct json_object *T_jobj)
378 | {
379 | struct timespec ts;
380 | struct json_object *name_jobj;
381 | const char *name;
382 | unsigned i;
383 |
384 | if (parse_timespec(&ts, T_jobj) < 0)
385 | return ERROR;
386 |
387 | if (!json_object_object_get_ex(jobj, "N", &name_jobj))
388 | return ERROR;
389 |
390 | if (!json_object_is_type(name_jobj, json_type_string))
391 | return ERROR;
392 |
393 | graph_data_time(ctx->gdata, &ts);
394 | name = json_object_get_string(name_jobj);
395 | for (i = 0; tp_handler_list[i].tp_name; i++)
396 | if (strcmp(tp_handler_list[i].tp_name, name) == 0)
397 | return tp_handler_list[i].func(ctx, &ts, jobj);
398 |
399 | fprintf(stderr, "unhandled timepoint '%s'\n", name);
400 |
401 | return 0;
402 | }
403 |
404 | int
405 | parse_context_process_object(struct parse_context *ctx,
406 | struct json_object *jobj)
407 | {
408 | struct json_object *key_obj;
409 |
410 | if (!json_object_is_type(jobj, json_type_object))
411 | return ERROR;
412 |
413 | if (json_object_object_get_ex(jobj, "id", &key_obj))
414 | return parse_context_process_info(ctx, jobj, key_obj);
415 |
416 | if (json_object_object_get_ex(jobj, "T", &key_obj))
417 | return parse_context_process_timepoint(ctx, jobj, key_obj);
418 |
419 | return ERROR;
420 | }
421 |
422 | struct object_info *
423 | get_object_info_from_timepoint(struct parse_context *ctx,
424 | struct json_object *jobj, const char *member)
425 | {
426 | struct json_object *mem_jobj;
427 | int64_t value;
428 | unsigned id;
429 |
430 | if (!json_object_object_get_ex(jobj, member, &mem_jobj))
431 | return ERROR_NULL;
432 |
433 | if (parse_int(&value, mem_jobj) < 0)
434 | return ERROR_NULL;
435 | id = value;
436 |
437 | return lookup_table_get(&ctx->idmap, id);
438 | }
439 |
440 | struct timespec
441 | get_timespec_from_timepoint(struct parse_context *ctx,
442 | struct json_object *jobj, const char *member)
443 | {
444 | struct json_object *mem_jobj;
445 | struct timespec ts;
446 |
447 | timespec_invalidate(&ts);
448 |
449 | if (!json_object_object_get_ex(jobj, member, &mem_jobj))
450 | return ts;
451 |
452 | parse_timespec(&ts, mem_jobj);
453 |
454 | return ts;
455 | }
456 |
--------------------------------------------------------------------------------
/handler.c:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright © 2014 Pekka Paalanen
3 | *
4 | * Permission to use, copy, modify, distribute, and sell this software and
5 | * its documentation for any purpose is hereby granted without fee, provided
6 | * that the above copyright notice appear in all copies and that both that
7 | * copyright notice and this permission notice appear in supporting
8 | * documentation, and that the name of the copyright holders not be used in
9 | * advertising or publicity pertaining to distribution of the software
10 | * without specific, written prior permission. The copyright holders make
11 | * no representations about the suitability of this software for any
12 | * purpose. It is provided "as is" without express or implied warranty.
13 | *
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15 | * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 | * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18 | * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19 | * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 | */
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 |
31 | #include
32 |
33 | #include "wesgr.h"
34 |
35 | static struct activity *
36 | activity_create(struct activity_set *acts,
37 | const struct timespec *begin, const struct timespec *end)
38 | {
39 | struct activity *act;
40 |
41 | act = calloc(1, sizeof *act);
42 | if (!act)
43 | return ERROR_NULL;
44 |
45 | act->begin = *begin;
46 | act->end = *end;
47 | act->next = acts->act;
48 | acts->act = act;
49 |
50 | return act;
51 | }
52 |
53 | static void
54 | activity_set_init(struct activity_set *acs)
55 | {
56 | acs->act = NULL;
57 | }
58 |
59 | static struct vblank *
60 | vblank_create(struct vblank_set *vblanks, const struct timespec *vbl_time)
61 | {
62 | struct vblank *vbl;
63 |
64 | vbl = calloc(1, sizeof *vbl);
65 | if (!vbl)
66 | return ERROR_NULL;
67 |
68 | vbl->ts = *vbl_time;
69 | vbl->next = vblanks->vbl;
70 | vblanks->vbl = vbl;
71 |
72 | return vbl;
73 | }
74 |
75 | static void
76 | vblank_set_init(struct vblank_set *vblanks)
77 | {
78 | vblanks->vbl = NULL;
79 | }
80 |
81 | static struct transition *
82 | transition_create(struct transition_set *tset, const struct timespec *ts)
83 | {
84 | struct transition *trans;
85 |
86 | trans = calloc(1, sizeof *trans);
87 | if (!trans)
88 | return ERROR_NULL;
89 |
90 | trans->ts = *ts;
91 | trans->next = tset->trans;
92 | tset->trans = trans;
93 |
94 | return trans;
95 | }
96 |
97 | static void
98 | transition_set_init(struct transition_set *tset, const char *style)
99 | {
100 | tset->trans = NULL;
101 | tset->style = style;
102 | }
103 |
104 | static void
105 | line_graph_init(struct line_graph *lg, const char *style, const char *label)
106 | {
107 | lg->block = NULL;
108 | lg->style = style;
109 | lg->label = label;
110 | }
111 |
112 | static struct output_graph *
113 | get_output_graph(struct parse_context *ctx, struct object_info *output)
114 | {
115 | struct output_graph *og;
116 | struct info_weston_output *wo;
117 |
118 | if (!output)
119 | return NULL;
120 |
121 | assert(output->type == TYPE_WESTON_OUTPUT);
122 | wo = &output->info.wo;
123 |
124 | if (wo->output_gr)
125 | return wo->output_gr;
126 |
127 | og = calloc(1, sizeof *og);
128 | if (!og)
129 | return ERROR_NULL;
130 |
131 | line_graph_init(&og->delay_line, "delay_line", "delay before repaint");
132 | line_graph_init(&og->submit_line, "submit_line", "output_repaint()");
133 | line_graph_init(&og->gpu_line, "gpu_line", "time to hit presentation");
134 | line_graph_init(&og->renderer_gpu_line, "renderer_gpu_line", "gpu rendering");
135 | transition_set_init(&og->begins, "trans_begin");
136 | transition_set_init(&og->posts, "trans_post");
137 | vblank_set_init(&og->vblanks);
138 | activity_set_init(&og->not_looping);
139 |
140 | timespec_invalidate(&og->last_req);
141 | timespec_invalidate(&og->last_finished);
142 | timespec_invalidate(&og->last_begin);
143 | timespec_invalidate(&og->last_posted);
144 | timespec_invalidate(&og->last_exit_loop);
145 | timespec_invalidate(&og->last_renderer_gpu_begin);
146 | og->info = wo;
147 | og->next = ctx->gdata->output;
148 | ctx->gdata->output = og;
149 |
150 | wo->output_gr = og;
151 |
152 | return og;
153 | }
154 |
155 | static struct line_block *
156 | line_block_create(struct line_graph *linegr, const struct timespec *begin,
157 | const struct timespec *end, const char *style)
158 | {
159 | struct line_block *lb;
160 |
161 | lb = calloc(1, sizeof *lb);
162 | if (!lb)
163 | return ERROR_NULL;
164 |
165 | lb->begin = *begin;
166 | lb->end = *end;
167 | lb->style = style;
168 | lb->next = linegr->block;
169 | linegr->block = lb;
170 |
171 | return lb;
172 | }
173 |
174 | static int
175 | core_repaint_begin(struct parse_context *ctx, const struct timespec *ts,
176 | struct json_object *jobj)
177 | {
178 | struct object_info *output;
179 | struct output_graph *og;
180 |
181 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
182 | og = get_output_graph(ctx, output);
183 | if (!og)
184 | return ERROR;
185 |
186 | og->last_begin = *ts;
187 |
188 | if (timespec_is_valid(&og->last_finished)) {
189 | struct line_block *lb;
190 | struct transition *trans;
191 |
192 | lb = line_block_create(&og->delay_line, &og->last_finished,
193 | ts, "repaint_delay");
194 | if (!lb)
195 | return ERROR;
196 |
197 | trans = transition_create(&og->begins, ts);
198 | if (!trans)
199 | return ERROR;
200 | }
201 |
202 | timespec_invalidate(&og->last_finished);
203 |
204 | return 0;
205 | }
206 |
207 | static int
208 | core_repaint_posted(struct parse_context *ctx, const struct timespec *ts,
209 | struct json_object *jobj)
210 | {
211 | struct object_info *output;
212 | struct output_graph *og;
213 |
214 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
215 | og = get_output_graph(ctx, output);
216 | if (!og)
217 | return ERROR;
218 |
219 | og->last_posted = *ts;
220 |
221 | if (timespec_is_valid(&og->last_begin)) {
222 | struct line_block *lb;
223 | struct transition *trans;
224 |
225 | lb = line_block_create(&og->submit_line, &og->last_begin,
226 | ts, "repaint_submit");
227 | if (!lb)
228 | return ERROR;
229 |
230 | trans = transition_create(&og->posts, ts);
231 | if (!trans)
232 | return ERROR;
233 | }
234 |
235 | timespec_invalidate(&og->last_begin);
236 |
237 | return 0;
238 | }
239 |
240 | static void
241 | process_need_list(struct update_graph *update_gr,
242 | const struct timespec *vblank)
243 | {
244 | struct update *update;
245 |
246 | update = update_gr->need_vblank;
247 | if (!update)
248 | return;
249 |
250 | while (1) {
251 | update->vblank = *vblank;
252 |
253 | if (!update->next)
254 | break;
255 |
256 | update = update->next;
257 | }
258 |
259 | update->next = update_gr->updates;
260 | update_gr->updates = update;
261 | update_gr->need_vblank = NULL;
262 | }
263 |
264 | static int
265 | core_repaint_finished(struct parse_context *ctx, const struct timespec *ts,
266 | struct json_object *jobj)
267 | {
268 | struct object_info *output;
269 | struct output_graph *og;
270 |
271 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
272 | og = get_output_graph(ctx, output);
273 | if (!og)
274 | return ERROR;
275 |
276 | og->last_finished = *ts;
277 |
278 | if (timespec_is_valid(&og->last_posted)) {
279 | struct line_block *lb;
280 | struct vblank *vbl;
281 | struct update_graph *ugr;
282 |
283 | lb = line_block_create(&og->gpu_line, &og->last_posted,
284 | ts, "repaint_gpu");
285 | if (!lb)
286 | return ERROR;
287 |
288 | /* XXX: use the real vblank time, not ts */
289 | vbl = vblank_create(&og->vblanks, ts);
290 | if (!vbl)
291 | return ERROR;
292 |
293 | for (ugr = og->updates; ugr; ugr = ugr->next)
294 | process_need_list(ugr, &vbl->ts);
295 | }
296 |
297 | timespec_invalidate(&og->last_posted);
298 |
299 | return 0;
300 | }
301 |
302 | static int
303 | core_repaint_req(struct parse_context *ctx, const struct timespec *ts,
304 | struct json_object *jobj)
305 | {
306 | struct object_info *output;
307 | struct output_graph *og;
308 |
309 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
310 | og = get_output_graph(ctx, output);
311 | if (!og)
312 | return ERROR;
313 |
314 | og->last_req = *ts;
315 |
316 | return 0;
317 | }
318 |
319 | static int
320 | core_repaint_exit_loop(struct parse_context *ctx, const struct timespec *ts,
321 | struct json_object *jobj)
322 | {
323 | struct object_info *output;
324 | struct output_graph *og;
325 |
326 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
327 | og = get_output_graph(ctx, output);
328 | if (!og)
329 | return ERROR;
330 |
331 | og->last_exit_loop = *ts;
332 |
333 | return 0;
334 | }
335 |
336 | static int
337 | core_repaint_enter_loop(struct parse_context *ctx, const struct timespec *ts,
338 | struct json_object *jobj)
339 | {
340 | struct object_info *output;
341 | struct output_graph *og;
342 | struct activity *act;
343 |
344 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
345 | og = get_output_graph(ctx, output);
346 | if (!og)
347 | return ERROR;
348 |
349 | if (!timespec_is_valid(&og->last_exit_loop)) {
350 | og->last_exit_loop.tv_sec = 0;
351 | og->last_exit_loop.tv_nsec = 0;
352 | }
353 |
354 | act = activity_create(&og->not_looping, &og->last_exit_loop, ts);
355 | if (!act)
356 | return ERROR;
357 |
358 | timespec_invalidate(&og->last_exit_loop);
359 |
360 | return 0;
361 | }
362 |
363 | static struct update *
364 | create_update(const struct timespec *damaged)
365 | {
366 | struct update *update;
367 |
368 | update = calloc(1, sizeof *update);
369 | if (!update)
370 | return ERROR_NULL;
371 |
372 | update->damage = *damaged;
373 | timespec_invalidate(&update->flush);
374 | timespec_invalidate(&update->vblank);
375 |
376 | return update;
377 | }
378 |
379 | static struct update_graph *
380 | create_update_graph(struct output_graph *output_gr,
381 | struct info_weston_surface *iws)
382 | {
383 | struct update_graph *update_gr;
384 |
385 | update_gr = calloc(1, sizeof *update_gr);
386 | if (!update_gr)
387 | return ERROR_NULL;
388 |
389 | update_gr->label = strdup(iws->description);
390 | update_gr->style = "damage";
391 | update_gr->next = output_gr->updates;
392 | output_gr->updates = update_gr;
393 |
394 | return update_gr;
395 | }
396 |
397 | static struct surface_graph_list *
398 | create_surface_graph_list(struct info_weston_surface *iws,
399 | struct output_graph *output_gr)
400 | {
401 | struct surface_graph_list *sgl;
402 |
403 | assert(output_gr);
404 |
405 | sgl = calloc(1, sizeof *sgl);
406 | if (!sgl)
407 | return ERROR_NULL;
408 |
409 | sgl->update_gr = create_update_graph(output_gr, iws);
410 | sgl->output_gr = output_gr;
411 | sgl->next = iws->glist;
412 | iws->glist = sgl;
413 |
414 | if (!sgl->update_gr)
415 | return ERROR_NULL;
416 |
417 | return sgl;
418 | }
419 |
420 | static struct surface_graph_list *
421 | get_surface_graph_list_default(struct parse_context *ctx,
422 | struct info_weston_surface *iws)
423 | {
424 | struct output_graph *output_gr;
425 | struct surface_graph_list *sgl;
426 |
427 | if (iws->last)
428 | return iws->last;
429 |
430 | assert(iws->glist == NULL);
431 |
432 | /* By default, pick whatever the first output is. */
433 | output_gr = ctx->gdata->output;
434 | if (!output_gr)
435 | return NULL;
436 |
437 | sgl = create_surface_graph_list(iws, output_gr);
438 | if (!sgl)
439 | return ERROR_NULL;
440 |
441 | iws->last = sgl;
442 |
443 | return sgl;
444 | }
445 |
446 | static struct surface_graph_list *
447 | get_surface_graph_list(struct parse_context *ctx,
448 | struct info_weston_surface *iws,
449 | struct output_graph *output_gr)
450 | {
451 | struct surface_graph_list *sgl;
452 |
453 | assert(output_gr);
454 |
455 | if (iws->last && iws->last->output_gr == output_gr)
456 | return iws->last;
457 |
458 | for (sgl = iws->glist; sgl; sgl = sgl->next) {
459 | if (sgl->output_gr == output_gr)
460 | return sgl;
461 | }
462 |
463 | sgl = create_surface_graph_list(iws, output_gr);
464 | if (!sgl)
465 | return ERROR_NULL;
466 |
467 | iws->last = sgl;
468 |
469 | return sgl;
470 | }
471 |
472 | static int
473 | put_update_to_graph_list(struct surface_graph_list *sgl, struct update *update)
474 | {
475 | if (!update)
476 | return 0;
477 |
478 | assert(update->next == NULL);
479 | update->next = sgl->update_gr->updates;
480 | sgl->update_gr->updates = update;
481 |
482 | return 0;
483 | }
484 |
485 | static int
486 | put_update_to_need_list(struct surface_graph_list *sgl, struct update *update)
487 | {
488 | if (!update)
489 | return 0;
490 |
491 | assert(update->next == NULL);
492 | update->next = sgl->update_gr->need_vblank;
493 | sgl->update_gr->need_vblank = update;
494 |
495 | return 0;
496 | }
497 |
498 | static int
499 | core_commit_damage(struct parse_context *ctx, const struct timespec *ts,
500 | struct json_object *jobj)
501 | {
502 | struct object_info *surface;
503 | struct surface_graph_list *sgl;
504 |
505 | surface = get_object_info_from_timepoint(ctx, jobj, "ws");
506 | if (!surface || surface->type != TYPE_WESTON_SURFACE)
507 | return ERROR;
508 |
509 | sgl = get_surface_graph_list_default(ctx, &surface->info.ws);
510 | if (!sgl) {
511 | fprintf(stderr, "info: ignoring core_commit_damage event at"
512 | " %" PRId64 ".%09ld\n",
513 | (int64_t)ts->tv_sec, ts->tv_nsec);
514 | return 0;
515 | }
516 |
517 | if (put_update_to_graph_list(sgl, surface->info.ws.open_update) < 0)
518 | return ERROR;
519 |
520 | surface->info.ws.open_update = create_update(ts);
521 | if (!surface->info.ws.open_update)
522 | return ERROR;
523 |
524 | return 0;
525 | }
526 |
527 | static int
528 | core_flush_damage(struct parse_context *ctx, const struct timespec *ts,
529 | struct json_object *jobj)
530 | {
531 | struct object_info *surface;
532 | struct object_info *output;
533 | struct output_graph *og;
534 | struct update *update;
535 | struct surface_graph_list *sgl;
536 |
537 | surface = get_object_info_from_timepoint(ctx, jobj, "ws");
538 | if (!surface || surface->type != TYPE_WESTON_SURFACE)
539 | return ERROR;
540 |
541 | update = surface->info.ws.open_update;
542 | if (!update) {
543 | update = create_update(ts);
544 | if (!update)
545 | return ERROR;
546 |
547 | timespec_invalidate(&update->damage);
548 | }
549 | surface->info.ws.open_update = NULL;
550 |
551 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
552 | og = get_output_graph(ctx, output);
553 | if (!og)
554 | return ERROR;
555 |
556 | update->flush = *ts;
557 |
558 | sgl = get_surface_graph_list(ctx, &surface->info.ws, og);
559 | if (!sgl)
560 | return ERROR;
561 |
562 | if (put_update_to_need_list(sgl, update) < 0)
563 | return ERROR;
564 |
565 | return 0;
566 | }
567 |
568 | static int
569 | renderer_gpu_begin(struct parse_context *ctx, const struct timespec *ts,
570 | struct json_object *jobj)
571 | {
572 | struct object_info *output;
573 | struct output_graph *og;
574 |
575 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
576 | og = get_output_graph(ctx, output);
577 | if (!og)
578 | return ERROR;
579 |
580 | og->last_renderer_gpu_begin =
581 | get_timespec_from_timepoint(ctx, jobj, "gpu");
582 |
583 | return 0;
584 | }
585 |
586 | static int
587 | renderer_gpu_end(struct parse_context *ctx, const struct timespec *ts,
588 | struct json_object *jobj)
589 | {
590 | struct object_info *output;
591 | struct output_graph *og;
592 |
593 | output = get_object_info_from_timepoint(ctx, jobj, "wo");
594 | og = get_output_graph(ctx, output);
595 | if (!og)
596 | return ERROR;
597 |
598 | if (timespec_is_valid(&og->last_renderer_gpu_begin)) {
599 | struct timespec gpu_ts;
600 | struct line_block *lb;
601 |
602 | gpu_ts = get_timespec_from_timepoint(ctx, jobj, "gpu");
603 |
604 | lb = line_block_create(&og->renderer_gpu_line,
605 | &og->last_renderer_gpu_begin,
606 | &gpu_ts, "renderer_gpu");
607 | if (!lb)
608 | return ERROR;
609 | }
610 |
611 | timespec_invalidate(&og->last_renderer_gpu_begin);
612 |
613 | return 0;
614 | }
615 |
616 | int
617 | graph_data_end(struct graph_data *gdata)
618 | {
619 | struct timespec invalid = { 0, 0 };
620 | struct output_graph *og;
621 | struct update_graph *upg;
622 |
623 | timespec_invalidate(&invalid);
624 |
625 | for (og = gdata->output; og; og = og->next) {
626 | if (timespec_is_valid(&og->last_exit_loop)) {
627 | struct activity *act;
628 |
629 | act = activity_create(&og->not_looping,
630 | &og->last_exit_loop, &invalid);
631 | if (!act)
632 | return ERROR;
633 | }
634 |
635 | for (upg = og->updates; upg; upg = upg->next)
636 | process_need_list(upg, &invalid);
637 | }
638 |
639 | return 0;
640 | }
641 |
642 | const struct tp_handler_item tp_handler_list[] = {
643 | { "core_repaint_enter_loop", core_repaint_enter_loop },
644 | { "core_repaint_exit_loop", core_repaint_exit_loop },
645 | { "core_repaint_finished", core_repaint_finished },
646 | { "core_repaint_begin", core_repaint_begin },
647 | { "core_repaint_posted", core_repaint_posted },
648 | { "core_repaint_req", core_repaint_req },
649 | { "core_commit_damage", core_commit_damage },
650 | { "core_flush_damage", core_flush_damage },
651 | { "renderer_gpu_begin", renderer_gpu_begin},
652 | { "renderer_gpu_end", renderer_gpu_end},
653 | { NULL, NULL }
654 | };
655 |
656 |
--------------------------------------------------------------------------------
/graphdata.c:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright © 2014 Pekka Paalanen
3 | *
4 | * Permission to use, copy, modify, distribute, and sell this software and
5 | * its documentation for any purpose is hereby granted without fee, provided
6 | * that the above copyright notice appear in all copies and that both that
7 | * copyright notice and this permission notice appear in supporting
8 | * documentation, and that the name of the copyright holders not be used in
9 | * advertising or publicity pertaining to distribution of the software
10 | * without specific, written prior permission. The copyright holders make
11 | * no representations about the suitability of this software for any
12 | * purpose. It is provided "as is" without express or implied warranty.
13 | *
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15 | * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 | * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18 | * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19 | * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 | */
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 |
30 | #include "wesgr.h"
31 |
32 | struct svg_context {
33 | FILE *fp;
34 | struct timespec begin;
35 | double width;
36 | double height;
37 | double nsec_to_x;
38 | double offset_x;
39 |
40 | struct {
41 | uint64_t a, b;
42 | } time_range;
43 | };
44 |
45 | int
46 | graph_data_init(struct graph_data *gdata)
47 | {
48 | memset(gdata, 0, sizeof *gdata);
49 | timespec_invalidate(&gdata->begin);
50 |
51 | return 0;
52 | }
53 |
54 | static void
55 | update_destroy(struct update *update)
56 | {
57 | free(update);
58 | }
59 |
60 | static void
61 | update_graph_destroy(struct update_graph *update_gr)
62 | {
63 | struct update *update, *tmp;
64 |
65 | assert(update_gr->need_vblank == NULL);
66 |
67 | for (update = update_gr->updates; update; update = tmp) {
68 | tmp = update->next;
69 | update_destroy(update);
70 | }
71 |
72 | free(update_gr->label);
73 | free(update_gr);
74 | }
75 |
76 | static void
77 | update_graph_list_destroy(struct update_graph *update_gr)
78 | {
79 | struct update_graph *tmp;
80 |
81 | for (; update_gr; update_gr = tmp) {
82 | tmp = update_gr->next;
83 | update_graph_destroy(update_gr);
84 | }
85 | }
86 |
87 | static void
88 | activity_destroy(struct activity *act)
89 | {
90 | free(act);
91 | }
92 |
93 | static void
94 | activity_set_release(struct activity_set *acts)
95 | {
96 | struct activity *act, *tmp;
97 |
98 | for (act = acts->act; act; act = tmp) {
99 | tmp = act->next;
100 | activity_destroy(act);
101 | }
102 | }
103 |
104 | static void
105 | vblank_destroy(struct vblank *vbl)
106 | {
107 | free(vbl);
108 | }
109 |
110 | static void
111 | vblank_set_release(struct vblank_set *vblanks)
112 | {
113 | struct vblank *vbl, *tmp;
114 |
115 | for (vbl = vblanks->vbl; vbl; vbl = tmp) {
116 | tmp = vbl->next;
117 | vblank_destroy(vbl);
118 | }
119 | }
120 |
121 | static void
122 | transition_destroy(struct transition *tr)
123 | {
124 | free(tr);
125 | }
126 |
127 | static void
128 | transition_set_release(struct transition_set *tset)
129 | {
130 | struct transition *tr, *tmp;
131 |
132 | for (tr = tset->trans; tr; tr = tmp) {
133 | tmp = tr->next;
134 | transition_destroy(tr);
135 | }
136 | }
137 |
138 | static void
139 | line_block_destroy(struct line_block *bl)
140 | {
141 | free(bl->desc);
142 | free(bl);
143 | }
144 |
145 | static void
146 | line_graph_release(struct line_graph *linegr)
147 | {
148 | struct line_block *lb, *tmp;
149 |
150 | for (lb = linegr->block; lb; lb = tmp) {
151 | tmp = lb->next;
152 | line_block_destroy(lb);
153 | }
154 | }
155 |
156 | static void
157 | output_graph_destroy(struct output_graph *og)
158 | {
159 | line_graph_release(&og->delay_line);
160 | line_graph_release(&og->submit_line);
161 | line_graph_release(&og->gpu_line);
162 | line_graph_release(&og->renderer_gpu_line);
163 | transition_set_release(&og->begins);
164 | transition_set_release(&og->posts);
165 | vblank_set_release(&og->vblanks);
166 | activity_set_release(&og->not_looping);
167 | update_graph_list_destroy(og->updates);
168 | free(og);
169 | }
170 |
171 | void
172 | graph_data_release(struct graph_data *gdata)
173 | {
174 | struct output_graph *og, *tmp;
175 |
176 | for (og = gdata->output; og; og = tmp) {
177 | tmp = og->next;
178 | output_graph_destroy(og);
179 | }
180 | }
181 |
182 | void
183 | graph_data_time(struct graph_data *gdata, const struct timespec *ts)
184 | {
185 | if (!timespec_is_valid(&gdata->begin))
186 | gdata->begin = *ts;
187 | gdata->end = *ts;
188 | }
189 |
190 | #define NSEC_PER_SEC 1000000000
191 |
192 | static int
193 | timespec_cmp(const struct timespec *a, const struct timespec *b)
194 | {
195 | assert(a->tv_nsec >= 0 && a->tv_nsec < NSEC_PER_SEC);
196 | assert(b->tv_nsec >= 0 && b->tv_nsec < NSEC_PER_SEC);
197 |
198 | if (a->tv_sec < b->tv_sec)
199 | return -1;
200 |
201 | if (a->tv_sec > b->tv_sec)
202 | return 1;
203 |
204 | if (a->tv_nsec < b->tv_nsec)
205 | return -1;
206 |
207 | if (a->tv_nsec > b->tv_nsec)
208 | return 1;
209 |
210 | return 0;
211 | }
212 |
213 | static void
214 | timespec_sub(struct timespec *r,
215 | const struct timespec *a, const struct timespec *b)
216 | {
217 | r->tv_sec = a->tv_sec - b->tv_sec;
218 | r->tv_nsec = a->tv_nsec - b->tv_nsec;
219 | if (r->tv_nsec < 0) {
220 | r->tv_sec--;
221 | r->tv_nsec += NSEC_PER_SEC;
222 | }
223 | }
224 |
225 | static uint64_t
226 | timespec_sub_to_nsec(const struct timespec *a, const struct timespec *b)
227 | {
228 | struct timespec d;
229 | uint64_t sec, nsec;
230 |
231 | if (!timespec_is_valid(a))
232 | return UINT64_MAX;
233 |
234 | if (timespec_cmp(a, b) < 0)
235 | return 0;
236 |
237 | timespec_sub(&d, a, b);
238 |
239 | sec = d.tv_sec;
240 | nsec = d.tv_nsec;
241 |
242 | nsec = sec * NSEC_PER_SEC + nsec;
243 |
244 | return nsec;
245 | }
246 |
247 | static double
248 | svg_get_x_from_nsec(struct svg_context *ctx, uint64_t nsec)
249 | {
250 | if (nsec < ctx->time_range.a)
251 | return ctx->offset_x;
252 |
253 | if (nsec > ctx->time_range.b)
254 | nsec = ctx->time_range.b;
255 |
256 | return ctx->offset_x + ctx->nsec_to_x * (nsec - ctx->time_range.a);
257 | }
258 |
259 | static double
260 | svg_get_x(struct svg_context *ctx, const struct timespec *ts)
261 | {
262 | return svg_get_x_from_nsec(ctx, timespec_sub_to_nsec(ts, &ctx->begin));
263 | }
264 |
265 | static int
266 | is_in_range(struct svg_context *ctx, const struct timespec *a,
267 | const struct timespec *b)
268 | {
269 | uint64_t begin, end;
270 |
271 | begin = timespec_sub_to_nsec(a, &ctx->begin);
272 |
273 | if (!timespec_is_valid(b))
274 | return begin <= ctx->time_range.b;
275 |
276 | assert(timespec_cmp(a, b) <= 0);
277 |
278 | if (timespec_cmp(b, &ctx->begin) < 0)
279 | return 0;
280 |
281 | end = timespec_sub_to_nsec(b, &ctx->begin);
282 |
283 | return !(end < ctx->time_range.a || begin > ctx->time_range.b);
284 | }
285 |
286 | static int
287 | is_point_in_range(struct svg_context *ctx, const struct timespec *a)
288 | {
289 | uint64_t pt;
290 |
291 | if (!timespec_is_valid(a))
292 | return 0;
293 |
294 | pt = timespec_sub_to_nsec(a, &ctx->begin);
295 |
296 | return !(pt < ctx->time_range.a || pt > ctx->time_range.b);
297 | }
298 |
299 | static int
300 | line_block_to_svg(struct line_block *lb, struct svg_context *ctx, double y)
301 | {
302 | double a, b;
303 |
304 | if (!is_in_range(ctx, &lb->begin, &lb->end))
305 | return 0;
306 |
307 | a = svg_get_x(ctx, &lb->begin);
308 | b = svg_get_x(ctx, &lb->end);
309 | fprintf(ctx->fp, "\n", a, y, b);
310 |
311 | return 0;
312 | }
313 |
314 | static int
315 | line_graph_to_svg(struct line_graph *linegr, struct svg_context *ctx)
316 | {
317 | struct line_block *lb;
318 |
319 | fprintf(ctx->fp, "\n", linegr->style);
320 | fprintf(ctx->fp,
321 | "%s\n",
324 | linegr->y, linegr->label);
325 |
326 | for (lb = linegr->block; lb; lb = lb->next)
327 | if (line_block_to_svg(lb, ctx, linegr->y) < 0)
328 | return ERROR;
329 |
330 | fprintf(ctx->fp, "\n");
331 |
332 | return 0;
333 | }
334 |
335 | static int
336 | transition_to_svg(struct transition *tr, struct svg_context *ctx,
337 | double y1, double y2)
338 | {
339 | double t;
340 |
341 | if (!is_in_range(ctx, &tr->ts, &tr->ts))
342 | return 0;
343 |
344 | t = svg_get_x(ctx, &tr->ts);
345 | fprintf(ctx->fp, ""
346 | "\n",
347 | t, y1, y2,
348 | t, (y1 + y2) * 0.5);
349 |
350 | return 0;
351 | }
352 |
353 | static int
354 | transition_set_to_svg(struct transition_set *tset, struct svg_context *ctx,
355 | double y1, double y2)
356 | {
357 | struct transition *tr;
358 |
359 | fprintf(ctx->fp, "\n", tset->style);
360 |
361 | for (tr = tset->trans; tr; tr = tr->next)
362 | if (transition_to_svg(tr, ctx, y1, y2) < 0)
363 | return ERROR;
364 |
365 | fprintf(ctx->fp, "\n");
366 |
367 | return 0;
368 | }
369 |
370 | static int
371 | vblank_to_svg(struct vblank *vbl, struct svg_context *ctx,
372 | double y1, double y2)
373 | {
374 | double t;
375 |
376 | if (!is_in_range(ctx, &vbl->ts, &vbl->ts))
377 | return 0;
378 |
379 | t = svg_get_x(ctx, &vbl->ts);
380 | fprintf(ctx->fp, ""
381 | "\n",
382 | t, y1, y2, t, y1);
383 |
384 | return 0;
385 | }
386 |
387 | static int
388 | vblank_set_to_svg(struct vblank_set *vblanks, struct svg_context *ctx,
389 | double y1, double y2)
390 | {
391 | struct vblank *vbl;
392 |
393 | fprintf(ctx->fp, "\n");
394 |
395 | for (vbl = vblanks->vbl; vbl; vbl = vbl->next)
396 | if (vblank_to_svg(vbl, ctx, y1, y2) < 0)
397 | return ERROR;
398 |
399 | fprintf(ctx->fp, "\n");
400 |
401 | return 0;
402 | }
403 |
404 | static int
405 | activity_to_svg(struct activity *act, struct svg_context *ctx,
406 | double y1, double y2)
407 | {
408 | double a, b;
409 |
410 | if (!is_in_range(ctx, &act->begin, &act->end))
411 | return 0;
412 |
413 | a = svg_get_x(ctx, &act->begin);
414 | b = svg_get_x(ctx, &act->end);
415 | fprintf(ctx->fp,
416 | "\n",
417 | a, y1, b, y2, a);
418 |
419 | return 0;
420 | }
421 |
422 | static int
423 | activity_set_to_svg(struct activity_set *acts, struct svg_context *ctx,
424 | double y1, double y2)
425 | {
426 | struct activity *act;
427 |
428 | fprintf(ctx->fp, "\n");
429 |
430 | for (act = acts->act; act; act = act->next)
431 | if (activity_to_svg(act, ctx, y1, y2) < 0)
432 | return ERROR;
433 |
434 | fprintf(ctx->fp, "\n");
435 |
436 | return 0;
437 | }
438 |
439 | static int
440 | update_to_svg(struct update *up, struct svg_context *ctx, double y,
441 | struct timespec **last_end)
442 | {
443 | double a, b;
444 | struct timespec *begin;
445 |
446 | if (timespec_is_valid(&up->damage))
447 | begin = &up->damage;
448 | else if (timespec_is_valid(&up->flush))
449 | begin = &up->flush;
450 | else if (timespec_is_valid(&up->vblank))
451 | begin = &up->vblank;
452 | else
453 | return 0;
454 |
455 | if (!is_in_range(ctx, begin, &up->vblank))
456 | return 0;
457 |
458 | /* XXX: we parse the list from end to begin, this is wrong way */
459 | if (*last_end && (!timespec_is_valid(*last_end) ||
460 | timespec_cmp(*last_end, begin) >= 0)) {
461 | y += 5.0;
462 | *last_end = NULL;
463 | } else {
464 | y -= 5.0;
465 | *last_end = &up->vblank;
466 | }
467 |
468 | if (is_point_in_range(ctx, &up->damage)) {
469 | double x = svg_get_x(ctx, &up->damage);
470 |
471 | fprintf(ctx->fp,
472 | "",
473 | x, y - 4.0, 8.0, x + 5.0, y);
474 | }
475 |
476 | if (is_point_in_range(ctx, &up->flush)) {
477 | double x = svg_get_x(ctx, &up->flush);
478 |
479 | fprintf(ctx->fp,
480 | "", x, y);
481 | }
482 |
483 | a = svg_get_x(ctx, begin);
484 | b = svg_get_x(ctx, &up->vblank);
485 | fprintf(ctx->fp, "\n", a, y, b);
486 |
487 | return 0;
488 | }
489 |
490 | static int
491 | update_graph_to_svg(struct update_graph *update_gr, struct svg_context *ctx)
492 | {
493 | struct update *upd;
494 | struct timespec *last_end = NULL;
495 |
496 | fprintf(ctx->fp, "\n", update_gr->style);
497 | fprintf(ctx->fp,
498 | "%s\n",
501 | update_gr->y, update_gr->label);
502 |
503 | for (upd = update_gr->updates; upd; upd = upd->next)
504 | if (update_to_svg(upd, ctx, update_gr->y, &last_end) < 0)
505 | return ERROR;
506 |
507 | fprintf(ctx->fp, "\n");
508 |
509 | return 0;
510 | }
511 |
512 | static int
513 | output_graph_to_svg(struct output_graph *og, struct svg_context *ctx)
514 | {
515 | struct update_graph *upg;
516 |
517 | fprintf(ctx->fp,
518 | "Output %s\n",
521 | og->title_y, og->info->name);
522 |
523 | if (activity_set_to_svg(&og->not_looping, ctx, og->y1, og->y2) < 0)
524 | return ERROR;
525 |
526 | if (vblank_set_to_svg(&og->vblanks, ctx, og->y1, og->y2) < 0)
527 | return ERROR;
528 |
529 | if (line_graph_to_svg(&og->delay_line, ctx) < 0)
530 | return ERROR;
531 |
532 | if (line_graph_to_svg(&og->submit_line, ctx) < 0)
533 | return ERROR;
534 |
535 | if (line_graph_to_svg(&og->gpu_line, ctx) < 0)
536 | return ERROR;
537 |
538 | if (line_graph_to_svg(&og->renderer_gpu_line, ctx) < 0)
539 | return ERROR;
540 |
541 | if (transition_set_to_svg(&og->begins, ctx,
542 | og->delay_line.y, og->submit_line.y) < 0)
543 | return ERROR;
544 |
545 | if (transition_set_to_svg(&og->posts, ctx,
546 | og->submit_line.y, og->gpu_line.y) < 0)
547 | return ERROR;
548 |
549 | for (upg = og->updates; upg; upg = upg->next)
550 | if (update_graph_to_svg(upg, ctx) < 0)
551 | return ERROR;
552 |
553 | return 0;
554 | }
555 |
556 | static uint64_t
557 | round_up(uint64_t nsec, uint64_t f)
558 | {
559 | return (nsec + f - 1) / f * f;
560 | }
561 |
562 | static uint64_t
563 | compute_big_skip_ns(struct svg_context *ctx)
564 | {
565 | static const uint64_t mtick_levels[] = { 1, 5 };
566 | uint64_t scale;
567 | uint64_t skip_ms;
568 | unsigned i;
569 |
570 | skip_ms = round(50.0 / ctx->nsec_to_x * 1e-6);
571 |
572 | for (scale = 1; scale < 100001; scale *= 10) {
573 | for (i = 0; i < ARRAY_LENGTH(mtick_levels); i++) {
574 | uint64_t skip = mtick_levels[i] * scale;
575 |
576 | if (skip_ms < skip)
577 | return skip * 1000000;
578 | }
579 | }
580 |
581 | return NSEC_PER_SEC;
582 | }
583 |
584 | static void
585 | time_scale_to_svg(struct svg_context *ctx, double y)
586 | {
587 | uint64_t nsec;
588 | uint64_t big_skip;
589 | uint64_t lil_skip;
590 | double left, right;
591 | const double big_tick_size = 15.0;
592 | const double lil_tick_size = 10.0;
593 | const double tick_label_up = 5.0;
594 |
595 | big_skip = compute_big_skip_ns(ctx);
596 | lil_skip = big_skip / 5;
597 |
598 | fprintf(ctx->fp, "time_range.a, big_skip);
600 | nsec <= ctx->time_range.b; nsec += big_skip) {
601 | fprintf(ctx->fp, "M %.2f %.2f V %.2f ",
602 | svg_get_x_from_nsec(ctx, nsec), y, y + big_tick_size);
603 | }
604 | fprintf(ctx->fp, "\" class=\"major_tick\" />\n");
605 |
606 | for (nsec = round_up(ctx->time_range.a, big_skip);
607 | nsec <= ctx->time_range.b; nsec += big_skip) {
608 | fprintf(ctx->fp, "%" PRIu64 "\n",
611 | svg_get_x_from_nsec(ctx, nsec),
612 | y - tick_label_up, nsec / 1000000);
613 | }
614 |
615 | fprintf(ctx->fp, "time_range.a, lil_skip);
617 | nsec <= ctx->time_range.b; nsec += lil_skip) {
618 | if (nsec % big_skip == 0)
619 | continue;
620 |
621 | fprintf(ctx->fp, "M %.2f %.2f V %.2f ",
622 | svg_get_x_from_nsec(ctx, nsec), y, y + lil_tick_size);
623 | }
624 | fprintf(ctx->fp, "\" class=\"minor_tick\" />\n");
625 |
626 | left = svg_get_x_from_nsec(ctx, ctx->time_range.a);
627 | right = svg_get_x_from_nsec(ctx, ctx->time_range.b);
628 | fprintf(ctx->fp, "\n",
629 | left, y, right);
630 |
631 | fprintf(ctx->fp, "time (ms)\n",
634 | (left + right) / 2.0, y - tick_label_up);
635 | }
636 |
637 | static int
638 | output_res(struct svg_context *ctx, char *data, size_t len)
639 | {
640 | size_t pos = 0;
641 | size_t n;
642 |
643 | while (pos < len) {
644 | n = fwrite(data + pos, 1, len - pos, ctx->fp);
645 | if (n < 1)
646 | return ERROR;
647 | pos += n;
648 | }
649 |
650 | return 0;
651 | }
652 |
653 | #define OUTPUT_RES(ctx, name) \
654 | ({ \
655 | extern char RES_##name##_begin; \
656 | extern int RES_##name##_len; \
657 | output_res((ctx), &RES_##name##_begin, RES_##name##_len); \
658 | })
659 |
660 | static int
661 | headers_to_svg(struct svg_context *ctx)
662 | {
663 |
664 | fprintf(ctx->fp,
665 | "\n");
690 | }
691 |
692 | static int
693 | legend_to_svg(struct svg_context *ctx, double y)
694 | {
695 | fprintf(ctx->fp, "\n",
696 | svg_get_x_from_nsec(ctx, 0), y);
697 |
698 | if (OUTPUT_RES(ctx, legend) < 0)
699 | return ERROR;
700 |
701 | fprintf(ctx->fp, "\n");
702 |
703 | return 0;
704 | }
705 |
706 | static void
707 | svg_context_init(struct svg_context *ctx, struct graph_data *gdata,
708 | int from_ms, int to_ms, double width, double height)
709 | {
710 | const double margin = 5.0;
711 | const double left_pad = 250.0;
712 | const double right_pad = 20.0;
713 |
714 | if (from_ms < 0)
715 | ctx->time_range.a = 0;
716 | else
717 | ctx->time_range.a = (uint64_t)from_ms * 1000000;
718 |
719 | if (to_ms < 0)
720 | ctx->time_range.b = timespec_sub_to_nsec(&gdata->end,
721 | &gdata->begin);
722 | else
723 | ctx->time_range.b = (uint64_t)to_ms * 1000000;
724 |
725 | ctx->width = width;
726 | ctx->height = height;
727 | ctx->begin = gdata->begin;
728 | ctx->offset_x = margin + left_pad;
729 |
730 | ctx->nsec_to_x = (ctx->width - 2 * margin - left_pad - right_pad) /
731 | (ctx->time_range.b - ctx->time_range.a);
732 | }
733 |
734 | static double
735 | update_graph_set_position(struct update_graph *update_gr, double y)
736 | {
737 | update_gr->y = y + 13.0;
738 |
739 | return y + 26.0;
740 | }
741 |
742 | static void
743 | graph_data_init_draw(struct graph_data *gdata, double *width, double *height)
744 | {
745 | struct output_graph *og;
746 | struct update_graph *upg;
747 | const double line_step = 20.0;
748 | const double output_margin = 30.0;
749 | double y = 50.5;
750 |
751 | gdata->time_axis_y = y;
752 | y += 30.0;
753 |
754 | for (og = gdata->output; og; og = og->next) {
755 | og->y1 = y - 10.0;
756 |
757 | og->title_y = y;
758 | y += line_step;
759 |
760 | og->delay_line.y = y;
761 | y += line_step;
762 |
763 | og->submit_line.y = y;
764 | y += line_step;
765 |
766 | og->gpu_line.y = y;
767 | y += line_step;
768 |
769 | og->renderer_gpu_line.y = y;
770 | y += line_step * 1.5;
771 |
772 | for (upg = og->updates; upg; upg = upg->next)
773 | y = update_graph_set_position(upg, y);
774 |
775 | og->y2 = y + 10.0;
776 |
777 | y += output_margin;
778 | }
779 |
780 | gdata->legend_y = y;
781 | y += 40.0;
782 |
783 | *width = 1300;
784 | *height = y + line_step;
785 | }
786 |
787 | int
788 | graph_data_to_svg(struct graph_data *gdata, int from_ms, int to_ms,
789 | const char *filename)
790 | {
791 | struct output_graph *og;
792 | struct svg_context ctx;
793 | double w, h;
794 |
795 | graph_data_init_draw(gdata, &w, &h);
796 | svg_context_init(&ctx, gdata, from_ms, to_ms, w, h);
797 |
798 | ctx.fp = fopen(filename, "w");
799 | if (!ctx.fp)
800 | return ERROR;
801 |
802 | if (headers_to_svg(&ctx) < 0)
803 | return ERROR;
804 |
805 | time_scale_to_svg(&ctx, gdata->time_axis_y);
806 |
807 | for (og = gdata->output; og; og = og->next)
808 | if (output_graph_to_svg(og, &ctx) < 0)
809 | return ERROR;
810 |
811 | if (legend_to_svg(&ctx, gdata->legend_y) < 0)
812 | return ERROR;
813 |
814 | footers_to_svg(&ctx);
815 |
816 | if (fclose(ctx.fp) != 0)
817 | return ERROR;
818 |
819 | return 0;
820 | }
821 |
822 |
--------------------------------------------------------------------------------
/testdata/timeline-1.log:
--------------------------------------------------------------------------------
1 | { "id":1, "type":"weston_output", "name":null }
2 | { "id":2, "type":"weston_surface", "desc":"cursor" }
3 | { "T":[9894, 391855448], "N":"core_repaint_req", "wo":1,
4 | "C": [
5 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
6 | ] }
7 | { "id":2, "type":"weston_surface", "desc":"cursor" }
8 | { "T":[9894, 391975574], "N":"core_repaint_enter_loop", "wo":1,
9 | "C": [
10 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
11 | ] }
12 | { "T":[9894, 392083409], "N":"core_repaint_finished", "wo":1 }
13 | { "T":[9894, 401243120], "N":"core_repaint_begin", "wo":1 }
14 | { "T":[9894, 402280608], "N":"core_repaint_req", "wo":1,
15 | "C": [
16 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
17 | ] }
18 | { "T":[9894, 402334665], "N":"core_repaint_posted", "wo":1 }
19 | { "T":[9894, 412376049], "N":"core_repaint_finished", "wo":1 }
20 | { "T":[9894, 421528427], "N":"core_repaint_begin", "wo":1 }
21 | { "T":[9894, 422284036], "N":"core_repaint_req", "wo":1,
22 | "C": [
23 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
24 | ] }
25 | { "T":[9894, 422346125], "N":"core_repaint_posted", "wo":1 }
26 | { "T":[9894, 432379896], "N":"core_repaint_finished", "wo":1 }
27 | { "T":[9894, 441533811], "N":"core_repaint_begin", "wo":1 }
28 | { "T":[9894, 442270982], "N":"core_repaint_req", "wo":1,
29 | "C": [
30 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
31 | ] }
32 | { "T":[9894, 442340334], "N":"core_repaint_posted", "wo":1 }
33 | { "T":[9894, 452376131], "N":"core_repaint_finished", "wo":1 }
34 | { "T":[9894, 461529487], "N":"core_repaint_begin", "wo":1 }
35 | { "T":[9894, 462264354], "N":"core_repaint_req", "wo":1,
36 | "C": [
37 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
38 | ] }
39 | { "T":[9894, 462325115], "N":"core_repaint_posted", "wo":1 }
40 | { "T":[9894, 472315725], "N":"core_repaint_finished", "wo":1 }
41 | { "T":[9894, 481466916], "N":"core_repaint_begin", "wo":1 }
42 | { "T":[9894, 482211490], "N":"core_repaint_req", "wo":1,
43 | "C": [
44 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
45 | ] }
46 | { "T":[9894, 482280214], "N":"core_repaint_posted", "wo":1 }
47 | { "T":[9894, 492262163], "N":"core_repaint_finished", "wo":1 }
48 | { "T":[9894, 501423621], "N":"core_repaint_begin", "wo":1 }
49 | { "T":[9894, 502176646], "N":"core_repaint_req", "wo":1,
50 | "C": [
51 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
52 | ] }
53 | { "T":[9894, 502237547], "N":"core_repaint_posted", "wo":1 }
54 | { "T":[9894, 512202316], "N":"core_repaint_finished", "wo":1 }
55 | { "T":[9894, 521370339], "N":"core_repaint_begin", "wo":1 }
56 | { "T":[9894, 522163662], "N":"core_repaint_req", "wo":1,
57 | "C": [
58 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
59 | ] }
60 | { "T":[9894, 522235808], "N":"core_repaint_posted", "wo":1 }
61 | { "T":[9894, 532267344], "N":"core_repaint_finished", "wo":1 }
62 | { "T":[9894, 541430478], "N":"core_repaint_begin", "wo":1 }
63 | { "T":[9894, 542186297], "N":"core_repaint_req", "wo":1,
64 | "C": [
65 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
66 | ] }
67 | { "T":[9894, 542248595], "N":"core_repaint_posted", "wo":1 }
68 | { "T":[9894, 552287534], "N":"core_repaint_finished", "wo":1 }
69 | { "T":[9894, 561447316], "N":"core_repaint_begin", "wo":1 }
70 | { "T":[9894, 562240081], "N":"core_repaint_req", "wo":1,
71 | "C": [
72 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
73 | ] }
74 | { "T":[9894, 562310690], "N":"core_repaint_posted", "wo":1 }
75 | { "T":[9894, 572289846], "N":"core_repaint_finished", "wo":1 }
76 | { "T":[9894, 581456192], "N":"core_repaint_begin", "wo":1 }
77 | { "T":[9894, 582207890], "N":"core_repaint_req", "wo":1,
78 | "C": [
79 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
80 | ] }
81 | { "T":[9894, 582269909], "N":"core_repaint_posted", "wo":1 }
82 | { "T":[9894, 592256608], "N":"core_repaint_finished", "wo":1 }
83 | { "T":[9894, 601416878], "N":"core_repaint_begin", "wo":1 }
84 | { "T":[9894, 602170671], "N":"core_repaint_req", "wo":1,
85 | "C": [
86 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
87 | ] }
88 | { "T":[9894, 602232481], "N":"core_repaint_posted", "wo":1 }
89 | { "T":[9894, 612278753], "N":"core_repaint_finished", "wo":1 }
90 | { "T":[9894, 621434205], "N":"core_repaint_begin", "wo":1 }
91 | { "T":[9894, 622184855], "N":"core_repaint_req", "wo":1,
92 | "C": [
93 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
94 | ] }
95 | { "T":[9894, 622337877], "N":"core_repaint_posted", "wo":1 }
96 | { "T":[9894, 632286442], "N":"core_repaint_finished", "wo":1 }
97 | { "T":[9894, 641445735], "N":"core_repaint_begin", "wo":1 }
98 | { "T":[9894, 642226347], "N":"core_repaint_req", "wo":1,
99 | "C": [
100 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
101 | ] }
102 | { "T":[9894, 642297864], "N":"core_repaint_posted", "wo":1 }
103 | { "T":[9894, 652326887], "N":"core_repaint_finished", "wo":1 }
104 | { "T":[9894, 661484503], "N":"core_repaint_begin", "wo":1 }
105 | { "T":[9894, 662241160], "N":"core_repaint_req", "wo":1,
106 | "C": [
107 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
108 | ] }
109 | { "T":[9894, 662302410], "N":"core_repaint_posted", "wo":1 }
110 | { "T":[9894, 672292042], "N":"core_repaint_finished", "wo":1 }
111 | { "T":[9894, 681450776], "N":"core_repaint_begin", "wo":1 }
112 | { "T":[9894, 682209668], "N":"core_repaint_req", "wo":1,
113 | "C": [
114 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
115 | ] }
116 | { "T":[9894, 682279928], "N":"core_repaint_posted", "wo":1 }
117 | { "T":[9894, 692260690], "N":"core_repaint_finished", "wo":1 }
118 | { "T":[9894, 701411811], "N":"core_repaint_begin", "wo":1 }
119 | { "T":[9894, 702169865], "N":"core_repaint_req", "wo":1,
120 | "C": [
121 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
122 | ] }
123 | { "T":[9894, 702231325], "N":"core_repaint_posted", "wo":1 }
124 | { "T":[9894, 712271452], "N":"core_repaint_finished", "wo":1 }
125 | { "T":[9894, 721429417], "N":"core_repaint_begin", "wo":1 }
126 | { "T":[9894, 722316747], "N":"core_repaint_req", "wo":1,
127 | "C": [
128 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
129 | ] }
130 | { "T":[9894, 722387915], "N":"core_repaint_posted", "wo":1 }
131 | { "T":[9894, 732418753], "N":"core_repaint_finished", "wo":1 }
132 | { "T":[9894, 741539074], "N":"core_repaint_begin", "wo":1 }
133 | { "T":[9894, 742278550], "N":"core_repaint_req", "wo":1,
134 | "C": [
135 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
136 | ] }
137 | { "T":[9894, 742339521], "N":"core_repaint_posted", "wo":1 }
138 | { "T":[9894, 752382372], "N":"core_repaint_finished", "wo":1 }
139 | { "T":[9894, 761460789], "N":"core_repaint_begin", "wo":1 }
140 | { "T":[9894, 762264937], "N":"core_repaint_req", "wo":1,
141 | "C": [
142 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
143 | ] }
144 | { "T":[9894, 762339877], "N":"core_repaint_posted", "wo":1 }
145 | { "T":[9894, 772314423], "N":"core_repaint_finished", "wo":1 }
146 | { "T":[9894, 781473646], "N":"core_repaint_begin", "wo":1 }
147 | { "T":[9894, 782308664], "N":"core_repaint_req", "wo":1,
148 | "C": [
149 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
150 | ] }
151 | { "T":[9894, 782378365], "N":"core_repaint_posted", "wo":1 }
152 | { "T":[9894, 792332239], "N":"core_repaint_finished", "wo":1 }
153 | { "T":[9894, 801459754], "N":"core_repaint_begin", "wo":1 }
154 | { "T":[9894, 801938374], "N":"core_repaint_req", "wo":1,
155 | "C": [
156 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
157 | ] }
158 | { "T":[9894, 801979370], "N":"core_repaint_posted", "wo":1 }
159 | { "T":[9894, 812045129], "N":"core_repaint_finished", "wo":1 }
160 | { "T":[9894, 821205818], "N":"core_repaint_begin", "wo":1 }
161 | { "T":[9894, 821929929], "N":"core_repaint_req", "wo":1,
162 | "C": [
163 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
164 | ] }
165 | { "T":[9894, 822042443], "N":"core_repaint_posted", "wo":1 }
166 | { "T":[9894, 832033472], "N":"core_repaint_finished", "wo":1 }
167 | { "T":[9894, 841199050], "N":"core_repaint_begin", "wo":1 }
168 | { "id":2, "type":"weston_surface", "desc":"cursor" }
169 | { "T":[9894, 842714738], "N":"core_repaint_req", "wo":1,
170 | "C": [
171 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
172 | ] }
173 | { "T":[9894, 842793170], "N":"core_repaint_posted", "wo":1 }
174 | { "T":[9894, 852812833], "N":"core_repaint_finished", "wo":1 }
175 | { "T":[9894, 861976386], "N":"core_repaint_begin", "wo":1 }
176 | { "T":[9894, 863688677], "N":"core_repaint_req", "wo":1,
177 | "C": [
178 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
179 | ] }
180 | { "T":[9894, 863759286], "N":"core_repaint_posted", "wo":1 }
181 | { "T":[9894, 873736277], "N":"core_repaint_finished", "wo":1 }
182 | { "T":[9894, 882896687], "N":"core_repaint_begin", "wo":1 }
183 | { "T":[9894, 883631972], "N":"core_repaint_req", "wo":1,
184 | "C": [
185 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
186 | ] }
187 | { "T":[9894, 883752099], "N":"core_repaint_posted", "wo":1 }
188 | { "T":[9894, 893680201], "N":"core_repaint_finished", "wo":1 }
189 | { "T":[9894, 902840401], "N":"core_repaint_begin", "wo":1 }
190 | { "T":[9894, 903570239], "N":"core_repaint_posted", "wo":1 }
191 | { "T":[9894, 913644239], "N":"core_repaint_finished", "wo":1 }
192 | { "T":[9894, 922804160], "N":"core_repaint_exit_loop", "wo":1 }
193 | { "T":[9894, 922890414], "N":"core_repaint_req", "wo":1,
194 | "C": [
195 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
196 | ] }
197 | { "T":[9894, 922926032], "N":"core_repaint_enter_loop", "wo":1,
198 | "C": [
199 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
200 | ] }
201 | { "T":[9894, 922983302], "N":"core_repaint_finished", "wo":1 }
202 | { "T":[9894, 932178633], "N":"core_repaint_begin", "wo":1 }
203 | { "T":[9894, 932866636], "N":"core_repaint_posted", "wo":1 }
204 | { "T":[9894, 942928344], "N":"core_repaint_finished", "wo":1 }
205 | { "T":[9894, 952087077], "N":"core_repaint_exit_loop", "wo":1 }
206 | { "T":[9894, 967764068], "N":"core_repaint_req", "wo":1,
207 | "C": [
208 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
209 | ] }
210 | { "T":[9894, 967812677], "N":"core_repaint_enter_loop", "wo":1,
211 | "C": [
212 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
213 | ] }
214 | { "T":[9894, 967873439], "N":"core_repaint_finished", "wo":1 }
215 | { "T":[9894, 977029379], "N":"core_repaint_begin", "wo":1 }
216 | { "T":[9894, 977740151], "N":"core_repaint_posted", "wo":1 }
217 | { "T":[9894, 987855077], "N":"core_repaint_finished", "wo":1 }
218 | { "T":[9894, 997027570], "N":"core_repaint_exit_loop", "wo":1 }
219 | { "id":3, "type":"weston_surface", "desc":"panel for output (null)" }
220 | { "T":[9895, 96644384], "N":"core_repaint_req", "wo":1,
221 | "C": [
222 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
223 | ] }
224 | { "id":3, "type":"weston_surface", "desc":"panel for output (null)" }
225 | { "T":[9895, 96697603], "N":"core_repaint_enter_loop", "wo":1,
226 | "C": [
227 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
228 | ] }
229 | { "T":[9895, 96742091], "N":"core_repaint_finished", "wo":1 }
230 | { "T":[9895, 105895657], "N":"core_repaint_begin", "wo":1 }
231 | { "T":[9895, 107641471], "N":"core_repaint_posted", "wo":1 }
232 | { "T":[9895, 117748576], "N":"core_repaint_finished", "wo":1 }
233 | { "T":[9895, 126912059], "N":"core_repaint_exit_loop", "wo":1 }
234 | { "T":[9895, 193661578], "N":"core_repaint_req", "wo":1,
235 | "C": [
236 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
237 | ] }
238 | { "T":[9895, 193720035], "N":"core_repaint_enter_loop", "wo":1,
239 | "C": [
240 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
241 | ] }
242 | { "T":[9895, 193763895], "N":"core_repaint_finished", "wo":1 }
243 | { "T":[9895, 202920184], "N":"core_repaint_begin", "wo":1 }
244 | { "T":[9895, 203647089], "N":"core_repaint_posted", "wo":1 }
245 | { "T":[9895, 213698250], "N":"core_repaint_finished", "wo":1 }
246 | { "T":[9895, 222766331], "N":"core_repaint_exit_loop", "wo":1 }
247 | { "T":[9895, 478848963], "N":"core_repaint_req", "wo":1,
248 | "C": [
249 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
250 | ] }
251 | { "T":[9895, 478916360], "N":"core_repaint_enter_loop", "wo":1,
252 | "C": [
253 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
254 | ] }
255 | { "T":[9895, 479113940], "N":"core_repaint_finished", "wo":1 }
256 | { "T":[9895, 488259334], "N":"core_repaint_begin", "wo":1 }
257 | { "T":[9895, 489816089], "N":"core_repaint_posted", "wo":1 }
258 | { "T":[9895, 499898819], "N":"core_repaint_finished", "wo":1 }
259 | { "T":[9895, 509022493], "N":"core_repaint_exit_loop", "wo":1 }
260 | { "T":[9895, 999850087], "N":"core_repaint_req", "wo":1,
261 | "C": [
262 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
263 | ] }
264 | { "T":[9895, 999913992], "N":"core_repaint_enter_loop", "wo":1,
265 | "C": [
266 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
267 | ] }
268 | { "T":[9895, 999985299], "N":"core_repaint_finished", "wo":1 }
269 | { "T":[9896, 9172878], "N":"core_repaint_begin", "wo":1 }
270 | { "T":[9896, 10204219], "N":"core_repaint_req", "wo":1,
271 | "C": [
272 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
273 | ] }
274 | { "T":[9896, 10256670], "N":"core_repaint_posted", "wo":1 }
275 | { "T":[9896, 20304968], "N":"core_repaint_finished", "wo":1 }
276 | { "T":[9896, 29458813], "N":"core_repaint_begin", "wo":1 }
277 | { "T":[9896, 30347260], "N":"core_repaint_req", "wo":1,
278 | "C": [
279 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
280 | ] }
281 | { "T":[9896, 30412421], "N":"core_repaint_posted", "wo":1 }
282 | { "T":[9896, 40394231], "N":"core_repaint_finished", "wo":1 }
283 | { "T":[9896, 49545282], "N":"core_repaint_begin", "wo":1 }
284 | { "T":[9896, 50344123], "N":"core_repaint_req", "wo":1,
285 | "C": [
286 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
287 | ] }
288 | { "T":[9896, 50415221], "N":"core_repaint_posted", "wo":1 }
289 | { "T":[9896, 60388370], "N":"core_repaint_finished", "wo":1 }
290 | { "T":[9896, 69584469], "N":"core_repaint_begin", "wo":1 }
291 | { "T":[9896, 71506073], "N":"core_repaint_req", "wo":1,
292 | "C": [
293 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
294 | ] }
295 | { "T":[9896, 71580105], "N":"core_repaint_posted", "wo":1 }
296 | { "T":[9896, 81550810], "N":"core_repaint_finished", "wo":1 }
297 | { "T":[9896, 90712896], "N":"core_repaint_begin", "wo":1 }
298 | { "T":[9896, 91486664], "N":"core_repaint_req", "wo":1,
299 | "C": [
300 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
301 | ] }
302 | { "T":[9896, 91558251], "N":"core_repaint_posted", "wo":1 }
303 | { "T":[9896, 101544670], "N":"core_repaint_finished", "wo":1 }
304 | { "T":[9896, 110669112], "N":"core_repaint_begin", "wo":1 }
305 | { "T":[9896, 112385733], "N":"core_repaint_req", "wo":1,
306 | "C": [
307 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
308 | ] }
309 | { "T":[9896, 112442024], "N":"core_repaint_posted", "wo":1 }
310 | { "T":[9896, 122488227], "N":"core_repaint_finished", "wo":1 }
311 | { "T":[9896, 131592066], "N":"core_repaint_begin", "wo":1 }
312 | { "T":[9896, 132305422], "N":"core_repaint_posted", "wo":1 }
313 | { "T":[9896, 142363428], "N":"core_repaint_finished", "wo":1 }
314 | { "T":[9896, 151523279], "N":"core_repaint_exit_loop", "wo":1 }
315 | { "T":[9896, 151606180], "N":"core_repaint_req", "wo":1,
316 | "C": [
317 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
318 | ] }
319 | { "T":[9896, 151641101], "N":"core_repaint_enter_loop", "wo":1,
320 | "C": [
321 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
322 | ] }
323 | { "T":[9896, 151697951], "N":"core_repaint_finished", "wo":1 }
324 | { "T":[9896, 160849492], "N":"core_repaint_begin", "wo":1 }
325 | { "T":[9896, 161564104], "N":"core_repaint_posted", "wo":1 }
326 | { "T":[9896, 171634263], "N":"core_repaint_finished", "wo":1 }
327 | { "T":[9896, 180744038], "N":"core_repaint_exit_loop", "wo":1 }
328 | { "T":[9896, 180825612], "N":"core_repaint_req", "wo":1,
329 | "C": [
330 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
331 | ] }
332 | { "T":[9896, 180860323], "N":"core_repaint_enter_loop", "wo":1,
333 | "C": [
334 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
335 | ] }
336 | { "T":[9896, 180916196], "N":"core_repaint_finished", "wo":1 }
337 | { "T":[9896, 190069971], "N":"core_repaint_begin", "wo":1 }
338 | { "T":[9896, 190775365], "N":"core_repaint_req", "wo":1,
339 | "C": [
340 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
341 | ] }
342 | { "T":[9896, 190824673], "N":"core_repaint_posted", "wo":1 }
343 | { "T":[9896, 200877860], "N":"core_repaint_finished", "wo":1 }
344 | { "T":[9896, 210038759], "N":"core_repaint_begin", "wo":1 }
345 | { "T":[9896, 210738635], "N":"core_repaint_req", "wo":1,
346 | "C": [
347 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":2 }
348 | ] }
349 | { "T":[9896, 210787454], "N":"core_repaint_posted", "wo":1 }
350 | { "T":[9896, 220842666], "N":"core_repaint_finished", "wo":1 }
351 | { "T":[9896, 230042187], "N":"core_repaint_begin", "wo":1 }
352 | { "T":[9896, 230784457], "N":"core_repaint_posted", "wo":1 }
353 | { "T":[9896, 240834501], "N":"core_repaint_finished", "wo":1 }
354 | { "T":[9896, 249993794], "N":"core_repaint_exit_loop", "wo":1 }
355 | { "T":[9896, 400627822], "N":"core_repaint_req", "wo":1,
356 | "C": [
357 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
358 | ] }
359 | { "T":[9896, 400679784], "N":"core_repaint_enter_loop", "wo":1,
360 | "C": [
361 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
362 | ] }
363 | { "T":[9896, 400720431], "N":"core_repaint_finished", "wo":1 }
364 | { "T":[9896, 409876860], "N":"core_repaint_begin", "wo":1 }
365 | { "T":[9896, 411668909], "N":"core_repaint_posted", "wo":1 }
366 | { "T":[9896, 421774547], "N":"core_repaint_finished", "wo":1 }
367 | { "T":[9896, 430946131], "N":"core_repaint_exit_loop", "wo":1 }
368 | { "T":[9896, 457487232], "N":"core_repaint_req", "wo":1,
369 | "C": [
370 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
371 | ] }
372 | { "T":[9896, 457544432], "N":"core_repaint_enter_loop", "wo":1,
373 | "C": [
374 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":3 }
375 | ] }
376 | { "T":[9896, 457587245], "N":"core_repaint_finished", "wo":1 }
377 | { "T":[9896, 466654277], "N":"core_repaint_begin", "wo":1 }
378 | { "T":[9896, 467358414], "N":"core_repaint_posted", "wo":1 }
379 | { "T":[9896, 477390369], "N":"core_repaint_finished", "wo":1 }
380 | { "T":[9896, 486460056], "N":"core_repaint_exit_loop", "wo":1 }
381 | { "id":4, "type":"weston_surface", "desc":"top-level window 'Wayland Terminal'" }
382 | { "T":[9896, 495187592], "N":"core_repaint_req", "wo":1,
383 | "C": [
384 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":4 }
385 | ] }
386 | { "id":4, "type":"weston_surface", "desc":"top-level window 'Wayland Terminal'" }
387 | { "T":[9896, 495222791], "N":"core_repaint_enter_loop", "wo":1,
388 | "C": [
389 | { "f":"weston_surface_schedule_repaint", "l":1174, "ws":4 }
390 | ] }
391 | { "T":[9896, 495253731], "N":"core_repaint_finished", "wo":1 }
392 | { "T":[9896, 504391163], "N":"core_repaint_begin", "wo":1 }
393 | { "id":4, "type":"weston_surface", "desc":"top-level window 'Wayland Terminal'" }
394 | { "T":[9896, 507046377], "N":"core_repaint_req", "wo":1,
395 | "C": [
396 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
397 | ] }
398 | { "T":[9896, 507109164], "N":"core_repaint_posted", "wo":1 }
399 | { "T":[9896, 517126802], "N":"core_repaint_finished", "wo":1 }
400 | { "T":[9896, 526279879], "N":"core_repaint_begin", "wo":1 }
401 | { "id":4, "type":"weston_surface", "desc":"top-level window 'Wayland Terminal'" }
402 | { "T":[9896, 528621018], "N":"core_repaint_req", "wo":1,
403 | "C": [
404 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
405 | ] }
406 | { "T":[9896, 528688624], "N":"core_repaint_posted", "wo":1 }
407 | { "T":[9896, 538654649], "N":"core_repaint_finished", "wo":1 }
408 | { "T":[9896, 547821834], "N":"core_repaint_begin", "wo":1 }
409 | { "id":4, "type":"weston_surface", "desc":"top-level window 'pq@farn:~/git/weston'" }
410 | { "T":[9896, 550626786], "N":"core_repaint_req", "wo":1,
411 | "C": [
412 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
413 | ] }
414 | { "T":[9896, 550721700], "N":"core_repaint_posted", "wo":1 }
415 | { "T":[9896, 560659789], "N":"core_repaint_finished", "wo":1 }
416 | { "T":[9896, 569833120], "N":"core_repaint_begin", "wo":1 }
417 | { "T":[9896, 570647326], "N":"core_repaint_req", "wo":1,
418 | "C": [
419 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
420 | ] }
421 | { "T":[9896, 570690976], "N":"core_repaint_posted", "wo":1 }
422 | { "T":[9896, 580694157], "N":"core_repaint_finished", "wo":1 }
423 | { "T":[9896, 589846186], "N":"core_repaint_begin", "wo":1 }
424 | { "T":[9896, 590616183], "N":"core_repaint_req", "wo":1,
425 | "C": [
426 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
427 | ] }
428 | { "T":[9896, 590659624], "N":"core_repaint_posted", "wo":1 }
429 | { "T":[9896, 600717351], "N":"core_repaint_finished", "wo":1 }
430 | { "T":[9896, 609870916], "N":"core_repaint_begin", "wo":1 }
431 | { "T":[9896, 610615351], "N":"core_repaint_req", "wo":1,
432 | "C": [
433 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
434 | ] }
435 | { "T":[9896, 610657535], "N":"core_repaint_posted", "wo":1 }
436 | { "T":[9896, 620726506], "N":"core_repaint_finished", "wo":1 }
437 | { "T":[9896, 629879373], "N":"core_repaint_begin", "wo":1 }
438 | { "T":[9896, 630616265], "N":"core_repaint_req", "wo":1,
439 | "C": [
440 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
441 | ] }
442 | { "T":[9896, 630658379], "N":"core_repaint_posted", "wo":1 }
443 | { "T":[9896, 640672875], "N":"core_repaint_finished", "wo":1 }
444 | { "T":[9896, 649827628], "N":"core_repaint_begin", "wo":1 }
445 | { "T":[9896, 650624094], "N":"core_repaint_req", "wo":1,
446 | "C": [
447 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
448 | ] }
449 | { "T":[9896, 650666627], "N":"core_repaint_posted", "wo":1 }
450 | { "T":[9896, 660678957], "N":"core_repaint_finished", "wo":1 }
451 | { "T":[9896, 669837132], "N":"core_repaint_begin", "wo":1 }
452 | { "T":[9896, 670606081], "N":"core_repaint_req", "wo":1,
453 | "C": [
454 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
455 | ] }
456 | { "T":[9896, 670648614], "N":"core_repaint_posted", "wo":1 }
457 | { "T":[9896, 680655217], "N":"core_repaint_finished", "wo":1 }
458 | { "T":[9896, 689815627], "N":"core_repaint_begin", "wo":1 }
459 | { "T":[9896, 690664963], "N":"core_repaint_req", "wo":1,
460 | "C": [
461 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
462 | ] }
463 | { "T":[9896, 690714131], "N":"core_repaint_posted", "wo":1 }
464 | { "T":[9896, 700810340], "N":"core_repaint_finished", "wo":1 }
465 | { "T":[9896, 709983392], "N":"core_repaint_begin", "wo":1 }
466 | { "T":[9896, 711112301], "N":"core_repaint_req", "wo":1,
467 | "C": [
468 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
469 | ] }
470 | { "T":[9896, 711161539], "N":"core_repaint_posted", "wo":1 }
471 | { "T":[9896, 721222757], "N":"core_repaint_finished", "wo":1 }
472 | { "T":[9896, 730386520], "N":"core_repaint_begin", "wo":1 }
473 | { "T":[9896, 733172196], "N":"core_repaint_req", "wo":1,
474 | "C": [
475 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
476 | ] }
477 | { "T":[9896, 733223599], "N":"core_repaint_posted", "wo":1 }
478 | { "T":[9896, 743209460], "N":"core_repaint_finished", "wo":1 }
479 | { "T":[9896, 752361209], "N":"core_repaint_begin", "wo":1 }
480 | { "T":[9896, 753221580], "N":"core_repaint_req", "wo":1,
481 | "C": [
482 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
483 | ] }
484 | { "T":[9896, 753265021], "N":"core_repaint_posted", "wo":1 }
485 | { "T":[9896, 763271834], "N":"core_repaint_finished", "wo":1 }
486 | { "T":[9896, 772428961], "N":"core_repaint_begin", "wo":1 }
487 | { "T":[9896, 773277180], "N":"core_repaint_req", "wo":1,
488 | "C": [
489 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
490 | ] }
491 | { "T":[9896, 773319992], "N":"core_repaint_posted", "wo":1 }
492 | { "T":[9896, 783383516], "N":"core_repaint_finished", "wo":1 }
493 | { "T":[9896, 792540992], "N":"core_repaint_begin", "wo":1 }
494 | { "T":[9896, 793352684], "N":"core_repaint_req", "wo":1,
495 | "C": [
496 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
497 | ] }
498 | { "T":[9896, 793394659], "N":"core_repaint_posted", "wo":1 }
499 | { "T":[9896, 803461465], "N":"core_repaint_finished", "wo":1 }
500 | { "T":[9896, 812566002], "N":"core_repaint_begin", "wo":1 }
501 | { "T":[9896, 813365751], "N":"core_repaint_req", "wo":1,
502 | "C": [
503 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
504 | ] }
505 | { "T":[9896, 813407935], "N":"core_repaint_posted", "wo":1 }
506 | { "T":[9896, 823467687], "N":"core_repaint_finished", "wo":1 }
507 | { "T":[9896, 832552738], "N":"core_repaint_begin", "wo":1 }
508 | { "T":[9896, 833357725], "N":"core_repaint_req", "wo":1,
509 | "C": [
510 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
511 | ] }
512 | { "T":[9896, 833396766], "N":"core_repaint_posted", "wo":1 }
513 | { "T":[9896, 843406093], "N":"core_repaint_finished", "wo":1 }
514 | { "T":[9896, 852537729], "N":"core_repaint_begin", "wo":1 }
515 | { "T":[9896, 853364855], "N":"core_repaint_req", "wo":1,
516 | "C": [
517 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
518 | ] }
519 | { "T":[9896, 853407109], "N":"core_repaint_posted", "wo":1 }
520 | { "T":[9896, 863415877], "N":"core_repaint_finished", "wo":1 }
521 | { "T":[9896, 872539202], "N":"core_repaint_begin", "wo":1 }
522 | { "T":[9896, 873346982], "N":"core_repaint_req", "wo":1,
523 | "C": [
524 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
525 | ] }
526 | { "T":[9896, 873389026], "N":"core_repaint_posted", "wo":1 }
527 | { "T":[9896, 883449756], "N":"core_repaint_finished", "wo":1 }
528 | { "T":[9896, 892551290], "N":"core_repaint_begin", "wo":1 }
529 | { "T":[9896, 893359909], "N":"core_repaint_req", "wo":1,
530 | "C": [
531 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
532 | ] }
533 | { "T":[9896, 893401883], "N":"core_repaint_posted", "wo":1 }
534 | { "T":[9896, 903462194], "N":"core_repaint_finished", "wo":1 }
535 | { "T":[9896, 912566242], "N":"core_repaint_begin", "wo":1 }
536 | { "T":[9896, 913375979], "N":"core_repaint_req", "wo":1,
537 | "C": [
538 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
539 | ] }
540 | { "T":[9896, 913417813], "N":"core_repaint_posted", "wo":1 }
541 | { "T":[9896, 923481337], "N":"core_repaint_finished", "wo":1 }
542 | { "T":[9896, 932584896], "N":"core_repaint_begin", "wo":1 }
543 | { "T":[9896, 933408391], "N":"core_repaint_req", "wo":1,
544 | "C": [
545 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
546 | ] }
547 | { "T":[9896, 933449807], "N":"core_repaint_posted", "wo":1 }
548 | { "T":[9896, 943465838], "N":"core_repaint_finished", "wo":1 }
549 | { "T":[9896, 952563461], "N":"core_repaint_begin", "wo":1 }
550 | { "T":[9896, 953370055], "N":"core_repaint_req", "wo":1,
551 | "C": [
552 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
553 | ] }
554 | { "T":[9896, 953412518], "N":"core_repaint_posted", "wo":1 }
555 | { "T":[9896, 963427432], "N":"core_repaint_finished", "wo":1 }
556 | { "T":[9896, 972534903], "N":"core_repaint_begin", "wo":1 }
557 | { "T":[9896, 973345547], "N":"core_repaint_req", "wo":1,
558 | "C": [
559 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
560 | ] }
561 | { "T":[9896, 973387661], "N":"core_repaint_posted", "wo":1 }
562 | { "T":[9896, 983421432], "N":"core_repaint_finished", "wo":1 }
563 | { "T":[9896, 992539798], "N":"core_repaint_begin", "wo":1 }
564 | { "T":[9896, 993377261], "N":"core_repaint_req", "wo":1,
565 | "C": [
566 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
567 | ] }
568 | { "T":[9896, 993420143], "N":"core_repaint_posted", "wo":1 }
569 | { "T":[9897, 3481781], "N":"core_repaint_finished", "wo":1 }
570 | { "T":[9897, 12588134], "N":"core_repaint_begin", "wo":1 }
571 | { "T":[9897, 13407089], "N":"core_repaint_req", "wo":1,
572 | "C": [
573 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
574 | ] }
575 | { "T":[9897, 13449482], "N":"core_repaint_posted", "wo":1 }
576 | { "T":[9897, 23514333], "N":"core_repaint_finished", "wo":1 }
577 | { "T":[9897, 32628718], "N":"core_repaint_begin", "wo":1 }
578 | { "T":[9897, 33441876], "N":"core_repaint_req", "wo":1,
579 | "C": [
580 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
581 | ] }
582 | { "T":[9897, 33483781], "N":"core_repaint_posted", "wo":1 }
583 | { "T":[9897, 43496390], "N":"core_repaint_finished", "wo":1 }
584 | { "T":[9897, 52604000], "N":"core_repaint_begin", "wo":1 }
585 | { "T":[9897, 53439577], "N":"core_repaint_req", "wo":1,
586 | "C": [
587 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
588 | ] }
589 | { "T":[9897, 53481901], "N":"core_repaint_posted", "wo":1 }
590 | { "T":[9897, 63497304], "N":"core_repaint_finished", "wo":1 }
591 | { "T":[9897, 72601772], "N":"core_repaint_begin", "wo":1 }
592 | { "T":[9897, 73410390], "N":"core_repaint_req", "wo":1,
593 | "C": [
594 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
595 | ] }
596 | { "T":[9897, 73452365], "N":"core_repaint_posted", "wo":1 }
597 | { "T":[9897, 83516167], "N":"core_repaint_finished", "wo":1 }
598 | { "T":[9897, 92635232], "N":"core_repaint_begin", "wo":1 }
599 | { "T":[9897, 93447691], "N":"core_repaint_req", "wo":1,
600 | "C": [
601 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
602 | ] }
603 | { "T":[9897, 93489806], "N":"core_repaint_posted", "wo":1 }
604 | { "T":[9897, 103537335], "N":"core_repaint_finished", "wo":1 }
605 | { "T":[9897, 112661079], "N":"core_repaint_begin", "wo":1 }
606 | { "T":[9897, 113472631], "N":"core_repaint_req", "wo":1,
607 | "C": [
608 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
609 | ] }
610 | { "T":[9897, 113514256], "N":"core_repaint_posted", "wo":1 }
611 | { "T":[9897, 123532732], "N":"core_repaint_finished", "wo":1 }
612 | { "T":[9897, 132649981], "N":"core_repaint_begin", "wo":1 }
613 | { "T":[9897, 133461393], "N":"core_repaint_req", "wo":1,
614 | "C": [
615 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
616 | ] }
617 | { "T":[9897, 133503437], "N":"core_repaint_posted", "wo":1 }
618 | { "T":[9897, 143517164], "N":"core_repaint_finished", "wo":1 }
619 | { "T":[9897, 152641326], "N":"core_repaint_begin", "wo":1 }
620 | { "T":[9897, 153493386], "N":"core_repaint_req", "wo":1,
621 | "C": [
622 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
623 | ] }
624 | { "T":[9897, 153537665], "N":"core_repaint_posted", "wo":1 }
625 | { "T":[9897, 163548948], "N":"core_repaint_finished", "wo":1 }
626 | { "T":[9897, 172707193], "N":"core_repaint_begin", "wo":1 }
627 | { "T":[9897, 173572802], "N":"core_repaint_req", "wo":1,
628 | "C": [
629 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
630 | ] }
631 | { "T":[9897, 173617081], "N":"core_repaint_posted", "wo":1 }
632 | { "T":[9897, 183646103], "N":"core_repaint_finished", "wo":1 }
633 | { "T":[9897, 192806164], "N":"core_repaint_begin", "wo":1 }
634 | { "T":[9897, 193628052], "N":"core_repaint_req", "wo":1,
635 | "C": [
636 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
637 | ] }
638 | { "T":[9897, 193670166], "N":"core_repaint_posted", "wo":1 }
639 | { "T":[9897, 203737880], "N":"core_repaint_finished", "wo":1 }
640 | { "T":[9897, 212900525], "N":"core_repaint_begin", "wo":1 }
641 | { "T":[9897, 214173656], "N":"core_repaint_req", "wo":1,
642 | "C": [
643 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
644 | ] }
645 | { "T":[9897, 214224989], "N":"core_repaint_posted", "wo":1 }
646 | { "T":[9897, 224246259], "N":"core_repaint_finished", "wo":1 }
647 | { "T":[9897, 233367278], "N":"core_repaint_begin", "wo":1 }
648 | { "T":[9897, 233771937], "N":"core_repaint_req", "wo":1,
649 | "C": [
650 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
651 | ] }
652 | { "T":[9897, 233787791], "N":"core_repaint_posted", "wo":1 }
653 | { "T":[9897, 243826451], "N":"core_repaint_finished", "wo":1 }
654 | { "T":[9897, 252986861], "N":"core_repaint_begin", "wo":1 }
655 | { "T":[9897, 253799740], "N":"core_repaint_req", "wo":1,
656 | "C": [
657 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
658 | ] }
659 | { "T":[9897, 253842762], "N":"core_repaint_posted", "wo":1 }
660 | { "T":[9897, 263854882], "N":"core_repaint_finished", "wo":1 }
661 | { "T":[9897, 273023673], "N":"core_repaint_begin", "wo":1 }
662 | { "T":[9897, 273802190], "N":"core_repaint_req", "wo":1,
663 | "C": [
664 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
665 | ] }
666 | { "T":[9897, 273844095], "N":"core_repaint_posted", "wo":1 }
667 | { "T":[9897, 283908876], "N":"core_repaint_finished", "wo":1 }
668 | { "T":[9897, 293062721], "N":"core_repaint_begin", "wo":1 }
669 | { "T":[9897, 293826920], "N":"core_repaint_req", "wo":1,
670 | "C": [
671 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
672 | ] }
673 | { "T":[9897, 293868196], "N":"core_repaint_posted", "wo":1 }
674 | { "T":[9897, 303929695], "N":"core_repaint_finished", "wo":1 }
675 | { "T":[9897, 313080397], "N":"core_repaint_begin", "wo":1 }
676 | { "T":[9897, 313848438], "N":"core_repaint_req", "wo":1,
677 | "C": [
678 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
679 | ] }
680 | { "T":[9897, 313890063], "N":"core_repaint_posted", "wo":1 }
681 | { "T":[9897, 323950932], "N":"core_repaint_finished", "wo":1 }
682 | { "T":[9897, 333108479], "N":"core_repaint_begin", "wo":1 }
683 | { "T":[9897, 333876729], "N":"core_repaint_req", "wo":1,
684 | "C": [
685 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
686 | ] }
687 | { "T":[9897, 333918564], "N":"core_repaint_posted", "wo":1 }
688 | { "T":[9897, 343925167], "N":"core_repaint_finished", "wo":1 }
689 | { "T":[9897, 353074822], "N":"core_repaint_begin", "wo":1 }
690 | { "T":[9897, 353831409], "N":"core_repaint_req", "wo":1,
691 | "C": [
692 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
693 | ] }
694 | { "T":[9897, 353872615], "N":"core_repaint_posted", "wo":1 }
695 | { "T":[9897, 363883967], "N":"core_repaint_finished", "wo":1 }
696 | { "T":[9897, 373040187], "N":"core_repaint_begin", "wo":1 }
697 | { "T":[9897, 373808647], "N":"core_repaint_req", "wo":1,
698 | "C": [
699 | { "f":"weston_view_schedule_repaint", "l":1187, "ws":4 }
700 | ] }
701 | { "T":[9897, 373851180], "N":"core_repaint_posted", "wo":1 }
702 | { "T":[9897, 383917916], "N":"core_repaint_finished", "wo":1 }
703 | { "T":[9897, 393072669], "N":"core_repaint_begin", "wo":1 }
704 | { "T":[9897, 393838266], "N":"core_repaint_posted", "wo":1 }
705 | { "T":[9897, 403944602], "N":"core_repaint_finished", "wo":1 }
706 | { "T":[9897, 413098447], "N":"core_repaint_exit_loop", "wo":1 }
707 |
--------------------------------------------------------------------------------
/testdata/timeline-presentation-f.log:
--------------------------------------------------------------------------------
1 | { "id":7, "type":"weston_output", "name":"LVDS1" }
2 | { "T":[4507001, 220075424], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 220140000] }
3 | { "T":[4507001, 220215734], "N":"core_repaint_begin", "wo":7 }
4 | { "id":8, "type":"weston_surface", "desc":"top-level window 'presentation-shm'" }
5 | { "T":[4507001, 220483382], "N":"core_flush_damage", "ws":8, "wo":7 }
6 | { "T":[4507001, 220834989], "N":"core_repaint_posted", "wo":7 }
7 | { "id":8, "type":"weston_surface", "desc":"top-level window 'presentation-shm'" }
8 | { "T":[4507001, 221213305], "N":"core_commit_damage", "ws":8 }
9 | { "T":[4507001, 221276041], "N":"core_repaint_req", "wo":7,
10 | "C": [
11 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
12 | ] }
13 | { "T":[4507001, 236684664], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 236793000] }
14 | { "T":[4507001, 236777998], "N":"core_repaint_begin", "wo":7 }
15 | { "T":[4507001, 237057633], "N":"core_flush_damage", "ws":8, "wo":7 }
16 | { "T":[4507001, 237396972], "N":"core_repaint_posted", "wo":7 }
17 | { "T":[4507001, 237739141], "N":"core_commit_damage", "ws":8 }
18 | { "T":[4507001, 237796197], "N":"core_repaint_req", "wo":7,
19 | "C": [
20 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
21 | ] }
22 | { "T":[4507001, 253382056], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 253441000] }
23 | { "T":[4507001, 253503504], "N":"core_repaint_begin", "wo":7 }
24 | { "T":[4507001, 253770791], "N":"core_flush_damage", "ws":8, "wo":7 }
25 | { "T":[4507001, 254168637], "N":"core_repaint_posted", "wo":7 }
26 | { "T":[4507001, 254520307], "N":"core_commit_damage", "ws":8 }
27 | { "T":[4507001, 254577445], "N":"core_repaint_req", "wo":7,
28 | "C": [
29 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
30 | ] }
31 | { "T":[4507001, 270064242], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 270090000] }
32 | { "T":[4507001, 270186585], "N":"core_repaint_begin", "wo":7 }
33 | { "T":[4507001, 270454824], "N":"core_flush_damage", "ws":8, "wo":7 }
34 | { "T":[4507001, 270805726], "N":"core_repaint_posted", "wo":7 }
35 | { "T":[4507001, 271178942], "N":"core_commit_damage", "ws":8 }
36 | { "T":[4507001, 271236379], "N":"core_repaint_req", "wo":7,
37 | "C": [
38 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
39 | ] }
40 | { "T":[4507001, 286679703], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 286740000] }
41 | { "T":[4507001, 286802119], "N":"core_repaint_begin", "wo":7 }
42 | { "T":[4507001, 287112818], "N":"core_flush_damage", "ws":8, "wo":7 }
43 | { "T":[4507001, 287457708], "N":"core_repaint_posted", "wo":7 }
44 | { "T":[4507001, 287805850], "N":"core_commit_damage", "ws":8 }
45 | { "T":[4507001, 287862746], "N":"core_repaint_req", "wo":7,
46 | "C": [
47 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
48 | ] }
49 | { "T":[4507001, 303330585], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 303391000] }
50 | { "T":[4507001, 303452121], "N":"core_repaint_begin", "wo":7 }
51 | { "T":[4507001, 303719002], "N":"core_flush_damage", "ws":8, "wo":7 }
52 | { "T":[4507001, 304112190], "N":"core_repaint_posted", "wo":7 }
53 | { "T":[4507001, 304466511], "N":"core_commit_damage", "ws":8 }
54 | { "T":[4507001, 304524826], "N":"core_repaint_req", "wo":7,
55 | "C": [
56 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
57 | ] }
58 | { "T":[4507001, 319980893], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 320040000] }
59 | { "T":[4507001, 320138589], "N":"core_repaint_begin", "wo":7 }
60 | { "T":[4507001, 320403796], "N":"core_flush_damage", "ws":8, "wo":7 }
61 | { "T":[4507001, 320749386], "N":"core_repaint_posted", "wo":7 }
62 | { "T":[4507001, 321098131], "N":"core_commit_damage", "ws":8 }
63 | { "T":[4507001, 321155408], "N":"core_repaint_req", "wo":7,
64 | "C": [
65 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
66 | ] }
67 | { "T":[4507001, 336630557], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 336691000] }
68 | { "T":[4507001, 336750915], "N":"core_repaint_begin", "wo":7 }
69 | { "T":[4507001, 337064987], "N":"core_flush_damage", "ws":8, "wo":7 }
70 | { "T":[4507001, 337409814], "N":"core_repaint_posted", "wo":7 }
71 | { "T":[4507001, 337722457], "N":"core_commit_damage", "ws":8 }
72 | { "T":[4507001, 337780286], "N":"core_repaint_req", "wo":7,
73 | "C": [
74 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
75 | ] }
76 | { "T":[4507001, 353281090], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 353342000] }
77 | { "T":[4507001, 353404418], "N":"core_repaint_begin", "wo":7 }
78 | { "T":[4507001, 353675193], "N":"core_flush_damage", "ws":8, "wo":7 }
79 | { "T":[4507001, 354064109], "N":"core_repaint_posted", "wo":7 }
80 | { "T":[4507001, 354432965], "N":"core_commit_damage", "ws":8 }
81 | { "T":[4507001, 354490037], "N":"core_repaint_req", "wo":7,
82 | "C": [
83 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
84 | ] }
85 | { "T":[4507001, 369922095], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 369991000] }
86 | { "T":[4507001, 370077693], "N":"core_repaint_begin", "wo":7 }
87 | { "T":[4507001, 370347685], "N":"core_flush_damage", "ws":8, "wo":7 }
88 | { "T":[4507001, 370696609], "N":"core_repaint_posted", "wo":7 }
89 | { "T":[4507001, 371064084], "N":"core_commit_damage", "ws":8 }
90 | { "T":[4507001, 371121447], "N":"core_repaint_req", "wo":7,
91 | "C": [
92 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
93 | ] }
94 | { "T":[4507001, 386580196], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 386642000] }
95 | { "T":[4507001, 386702456], "N":"core_repaint_begin", "wo":7 }
96 | { "T":[4507001, 386971753], "N":"core_flush_damage", "ws":8, "wo":7 }
97 | { "T":[4507001, 387362512], "N":"core_repaint_posted", "wo":7 }
98 | { "T":[4507001, 387708444], "N":"core_commit_damage", "ws":8 }
99 | { "T":[4507001, 387765130], "N":"core_repaint_req", "wo":7,
100 | "C": [
101 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
102 | ] }
103 | { "T":[4507001, 403229745], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 403292000] }
104 | { "T":[4507001, 403345498], "N":"core_repaint_begin", "wo":7 }
105 | { "T":[4507001, 403602316], "N":"core_flush_damage", "ws":8, "wo":7 }
106 | { "T":[4507001, 403930061], "N":"core_repaint_posted", "wo":7 }
107 | { "T":[4507001, 404280113], "N":"core_commit_damage", "ws":8 }
108 | { "T":[4507001, 404338077], "N":"core_repaint_req", "wo":7,
109 | "C": [
110 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
111 | ] }
112 | { "T":[4507001, 419870877], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 419940000] }
113 | { "T":[4507001, 419991829], "N":"core_repaint_begin", "wo":7 }
114 | { "T":[4507001, 420306184], "N":"core_flush_damage", "ws":8, "wo":7 }
115 | { "T":[4507001, 420654089], "N":"core_repaint_posted", "wo":7 }
116 | { "T":[4507001, 421017043], "N":"core_commit_damage", "ws":8 }
117 | { "T":[4507001, 421073649], "N":"core_repaint_req", "wo":7,
118 | "C": [
119 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
120 | ] }
121 | { "T":[4507001, 436527473], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 436594000] }
122 | { "T":[4507001, 436639860], "N":"core_repaint_begin", "wo":7 }
123 | { "T":[4507001, 436916971], "N":"core_flush_damage", "ws":8, "wo":7 }
124 | { "T":[4507001, 437309329], "N":"core_repaint_posted", "wo":7 }
125 | { "T":[4507001, 437664315], "N":"core_commit_damage", "ws":8 }
126 | { "T":[4507001, 437722284], "N":"core_repaint_req", "wo":7,
127 | "C": [
128 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
129 | ] }
130 | { "T":[4507001, 453179820], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 453242000] }
131 | { "T":[4507001, 453302541], "N":"core_repaint_begin", "wo":7 }
132 | { "T":[4507001, 453570446], "N":"core_flush_damage", "ws":8, "wo":7 }
133 | { "T":[4507001, 453915764], "N":"core_repaint_posted", "wo":7 }
134 | { "T":[4507001, 454269048], "N":"core_commit_damage", "ws":8 }
135 | { "T":[4507001, 454326049], "N":"core_repaint_req", "wo":7,
136 | "C": [
137 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
138 | ] }
139 | { "T":[4507001, 469831745], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 469892000] }
140 | { "T":[4507001, 469953208], "N":"core_repaint_begin", "wo":7 }
141 | { "T":[4507001, 470266490], "N":"core_flush_damage", "ws":8, "wo":7 }
142 | { "T":[4507001, 470614290], "N":"core_repaint_posted", "wo":7 }
143 | { "T":[4507001, 470959220], "N":"core_commit_damage", "ws":8 }
144 | { "T":[4507001, 471033228], "N":"core_repaint_req", "wo":7,
145 | "C": [
146 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
147 | ] }
148 | { "T":[4507001, 486475363], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 486541000] }
149 | { "T":[4507001, 486598003], "N":"core_repaint_begin", "wo":7 }
150 | { "T":[4507001, 486931671], "N":"core_flush_damage", "ws":8, "wo":7 }
151 | { "T":[4507001, 487325228], "N":"core_repaint_posted", "wo":7 }
152 | { "T":[4507001, 487681916], "N":"core_commit_damage", "ws":8 }
153 | { "T":[4507001, 487738661], "N":"core_repaint_req", "wo":7,
154 | "C": [
155 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
156 | ] }
157 | { "T":[4507001, 503133682], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 503194000] }
158 | { "T":[4507001, 503254102], "N":"core_repaint_begin", "wo":7 }
159 | { "T":[4507001, 503521836], "N":"core_flush_damage", "ws":8, "wo":7 }
160 | { "T":[4507001, 503865208], "N":"core_repaint_posted", "wo":7 }
161 | { "T":[4507001, 504259818], "N":"core_commit_damage", "ws":8 }
162 | { "T":[4507001, 504317397], "N":"core_repaint_req", "wo":7,
163 | "C": [
164 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
165 | ] }
166 | { "T":[4507001, 519701289], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 519843000] }
167 | { "T":[4507001, 519797608], "N":"core_repaint_begin", "wo":7 }
168 | { "T":[4507001, 520101939], "N":"core_flush_damage", "ws":8, "wo":7 }
169 | { "T":[4507001, 520441184], "N":"core_repaint_posted", "wo":7 }
170 | { "T":[4507001, 520783554], "N":"core_commit_damage", "ws":8 }
171 | { "T":[4507001, 520840008], "N":"core_repaint_req", "wo":7,
172 | "C": [
173 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
174 | ] }
175 | { "T":[4507001, 536426284], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 536490000] }
176 | { "T":[4507001, 536549217], "N":"core_repaint_begin", "wo":7 }
177 | { "T":[4507001, 536816488], "N":"core_flush_damage", "ws":8, "wo":7 }
178 | { "T":[4507001, 537211267], "N":"core_repaint_posted", "wo":7 }
179 | { "T":[4507001, 537555314], "N":"core_commit_damage", "ws":8 }
180 | { "T":[4507001, 537626778], "N":"core_repaint_req", "wo":7,
181 | "C": [
182 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
183 | ] }
184 | { "T":[4507001, 553073076], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 553141000] }
185 | { "T":[4507001, 553187891], "N":"core_repaint_begin", "wo":7 }
186 | { "T":[4507001, 553461424], "N":"core_flush_damage", "ws":8, "wo":7 }
187 | { "T":[4507001, 553811582], "N":"core_repaint_posted", "wo":7 }
188 | { "T":[4507001, 554195770], "N":"core_commit_damage", "ws":8 }
189 | { "T":[4507001, 554254572], "N":"core_repaint_req", "wo":7,
190 | "C": [
191 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
192 | ] }
193 | { "T":[4507001, 569729742], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 569794000] }
194 | { "T":[4507001, 569843209], "N":"core_repaint_begin", "wo":7 }
195 | { "T":[4507001, 570146012], "N":"core_flush_damage", "ws":8, "wo":7 }
196 | { "T":[4507001, 570476907], "N":"core_repaint_posted", "wo":7 }
197 | { "T":[4507001, 570828334], "N":"core_commit_damage", "ws":8 }
198 | { "T":[4507001, 570885351], "N":"core_repaint_req", "wo":7,
199 | "C": [
200 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
201 | ] }
202 | { "T":[4507001, 586372634], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 586441000] }
203 | { "T":[4507001, 586491466], "N":"core_repaint_begin", "wo":7 }
204 | { "T":[4507001, 586764320], "N":"core_flush_damage", "ws":8, "wo":7 }
205 | { "T":[4507001, 587159959], "N":"core_repaint_posted", "wo":7 }
206 | { "T":[4507001, 587508283], "N":"core_commit_damage", "ws":8 }
207 | { "T":[4507001, 587564998], "N":"core_repaint_req", "wo":7,
208 | "C": [
209 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
210 | ] }
211 | { "T":[4507001, 603066738], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 603093000] }
212 | { "T":[4507001, 603188788], "N":"core_repaint_begin", "wo":7 }
213 | { "T":[4507001, 603456501], "N":"core_flush_damage", "ws":8, "wo":7 }
214 | { "T":[4507001, 603801151], "N":"core_repaint_posted", "wo":7 }
215 | { "T":[4507001, 604197115], "N":"core_commit_damage", "ws":8 }
216 | { "T":[4507001, 604254197], "N":"core_repaint_req", "wo":7,
217 | "C": [
218 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
219 | ] }
220 | { "T":[4507001, 619639322], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 619732000] }
221 | { "T":[4507001, 619728664], "N":"core_repaint_begin", "wo":7 }
222 | { "T":[4507001, 619982874], "N":"core_flush_damage", "ws":8, "wo":7 }
223 | { "T":[4507001, 620350050], "N":"core_repaint_posted", "wo":7 }
224 | { "T":[4507001, 620789732], "N":"core_commit_damage", "ws":8 }
225 | { "T":[4507001, 620847902], "N":"core_repaint_req", "wo":7,
226 | "C": [
227 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
228 | ] }
229 | { "T":[4507001, 636323245], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 636391000] }
230 | { "T":[4507001, 636443648], "N":"core_repaint_begin", "wo":7 }
231 | { "T":[4507001, 636721376], "N":"core_flush_damage", "ws":8, "wo":7 }
232 | { "T":[4507001, 637123090], "N":"core_repaint_posted", "wo":7 }
233 | { "T":[4507001, 637473701], "N":"core_commit_damage", "ws":8 }
234 | { "T":[4507001, 637532939], "N":"core_repaint_req", "wo":7,
235 | "C": [
236 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
237 | ] }
238 | { "T":[4507001, 652977041], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 653042000] }
239 | { "T":[4507001, 653146986], "N":"core_repaint_begin", "wo":7 }
240 | { "T":[4507001, 653414511], "N":"core_flush_damage", "ws":8, "wo":7 }
241 | { "T":[4507001, 653760712], "N":"core_repaint_posted", "wo":7 }
242 | { "T":[4507001, 654109096], "N":"core_commit_damage", "ws":8 }
243 | { "T":[4507001, 654166318], "N":"core_repaint_req", "wo":7,
244 | "C": [
245 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
246 | ] }
247 | { "T":[4507001, 669633353], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 669695000] }
248 | { "T":[4507001, 669755623], "N":"core_repaint_begin", "wo":7 }
249 | { "T":[4507001, 670069349], "N":"core_flush_damage", "ws":8, "wo":7 }
250 | { "T":[4507001, 670418581], "N":"core_repaint_posted", "wo":7 }
251 | { "T":[4507001, 670771280], "N":"core_commit_damage", "ws":8 }
252 | { "T":[4507001, 670829164], "N":"core_repaint_req", "wo":7,
253 | "C": [
254 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
255 | ] }
256 | { "T":[4507001, 686275789], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 686344000] }
257 | { "T":[4507001, 686389626], "N":"core_repaint_begin", "wo":7 }
258 | { "T":[4507001, 686656903], "N":"core_flush_damage", "ws":8, "wo":7 }
259 | { "T":[4507001, 687029930], "N":"core_repaint_posted", "wo":7 }
260 | { "T":[4507001, 687386264], "N":"core_commit_damage", "ws":8 }
261 | { "T":[4507001, 687443445], "N":"core_repaint_req", "wo":7,
262 | "C": [
263 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
264 | ] }
265 | { "T":[4507001, 702933700], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 702994000] }
266 | { "T":[4507001, 703097783], "N":"core_repaint_begin", "wo":7 }
267 | { "T":[4507001, 703359442], "N":"core_flush_damage", "ws":8, "wo":7 }
268 | { "T":[4507001, 703704303], "N":"core_repaint_posted", "wo":7 }
269 | { "T":[4507001, 704070334], "N":"core_commit_damage", "ws":8 }
270 | { "T":[4507001, 704126820], "N":"core_repaint_req", "wo":7,
271 | "C": [
272 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
273 | ] }
274 | { "T":[4507001, 719579577], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 719643000] }
275 | { "T":[4507001, 719704515], "N":"core_repaint_begin", "wo":7 }
276 | { "T":[4507001, 719967143], "N":"core_flush_damage", "ws":8, "wo":7 }
277 | { "T":[4507001, 720342941], "N":"core_repaint_posted", "wo":7 }
278 | { "T":[4507001, 720693135], "N":"core_commit_damage", "ws":8 }
279 | { "T":[4507001, 720749409], "N":"core_repaint_req", "wo":7,
280 | "C": [
281 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
282 | ] }
283 | { "T":[4507001, 736222785], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 736292000] }
284 | { "T":[4507001, 736336146], "N":"core_repaint_begin", "wo":7 }
285 | { "T":[4507001, 736601056], "N":"core_flush_damage", "ws":8, "wo":7 }
286 | { "T":[4507001, 736948832], "N":"core_repaint_posted", "wo":7 }
287 | { "T":[4507001, 737300069], "N":"core_commit_damage", "ws":8 }
288 | { "T":[4507001, 737357396], "N":"core_repaint_req", "wo":7,
289 | "C": [
290 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
291 | ] }
292 | { "T":[4507001, 752886810], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 752948000] }
293 | { "T":[4507001, 753050807], "N":"core_repaint_begin", "wo":7 }
294 | { "T":[4507001, 753323736], "N":"core_flush_damage", "ws":8, "wo":7 }
295 | { "T":[4507001, 753669659], "N":"core_repaint_posted", "wo":7 }
296 | { "T":[4507001, 754032487], "N":"core_commit_damage", "ws":8 }
297 | { "T":[4507001, 754089373], "N":"core_repaint_req", "wo":7,
298 | "C": [
299 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
300 | ] }
301 | { "T":[4507001, 769532213], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 769594000] }
302 | { "T":[4507001, 769653870], "N":"core_repaint_begin", "wo":7 }
303 | { "T":[4507001, 769920671], "N":"core_flush_damage", "ws":8, "wo":7 }
304 | { "T":[4507001, 770311045], "N":"core_repaint_posted", "wo":7 }
305 | { "T":[4507001, 770657214], "N":"core_commit_damage", "ws":8 }
306 | { "T":[4507001, 770714978], "N":"core_repaint_req", "wo":7,
307 | "C": [
308 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
309 | ] }
310 | { "T":[4507001, 786172707], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 786243000] }
311 | { "T":[4507001, 786288385], "N":"core_repaint_begin", "wo":7 }
312 | { "T":[4507001, 786560911], "N":"core_flush_damage", "ws":8, "wo":7 }
313 | { "T":[4507001, 786911944], "N":"core_repaint_posted", "wo":7 }
314 | { "T":[4507001, 787263193], "N":"core_commit_damage", "ws":8 }
315 | { "T":[4507001, 787319843], "N":"core_repaint_req", "wo":7,
316 | "C": [
317 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
318 | ] }
319 | { "T":[4507001, 802833267], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 802895000] }
320 | { "T":[4507001, 802955998], "N":"core_repaint_begin", "wo":7 }
321 | { "T":[4507001, 803270911], "N":"core_flush_damage", "ws":8, "wo":7 }
322 | { "T":[4507001, 803618761], "N":"core_repaint_posted", "wo":7 }
323 | { "T":[4507001, 803967339], "N":"core_commit_damage", "ws":8 }
324 | { "T":[4507001, 804042845], "N":"core_repaint_req", "wo":7,
325 | "C": [
326 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
327 | ] }
328 | { "T":[4507001, 819475585], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 819541000] }
329 | { "T":[4507001, 819600097], "N":"core_repaint_begin", "wo":7 }
330 | { "T":[4507001, 819874393], "N":"core_flush_damage", "ws":8, "wo":7 }
331 | { "T":[4507001, 820268034], "N":"core_repaint_posted", "wo":7 }
332 | { "T":[4507001, 820620530], "N":"core_commit_damage", "ws":8 }
333 | { "T":[4507001, 820677687], "N":"core_repaint_req", "wo":7,
334 | "C": [
335 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
336 | ] }
337 | { "T":[4507001, 836135830], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 836196000] }
338 | { "T":[4507001, 836257003], "N":"core_repaint_begin", "wo":7 }
339 | { "T":[4507001, 836523967], "N":"core_flush_damage", "ws":8, "wo":7 }
340 | { "T":[4507001, 836868125], "N":"core_repaint_posted", "wo":7 }
341 | { "T":[4507001, 837298586], "N":"core_commit_damage", "ws":8 }
342 | { "T":[4507001, 837356059], "N":"core_repaint_req", "wo":7,
343 | "C": [
344 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
345 | ] }
346 | { "T":[4507001, 852780054], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 852846000] }
347 | { "T":[4507001, 852898912], "N":"core_repaint_begin", "wo":7 }
348 | { "T":[4507001, 853212189], "N":"core_flush_damage", "ws":8, "wo":7 }
349 | { "T":[4507001, 853562602], "N":"core_repaint_posted", "wo":7 }
350 | { "T":[4507001, 853915474], "N":"core_commit_damage", "ws":8 }
351 | { "T":[4507001, 853974135], "N":"core_repaint_req", "wo":7,
352 | "C": [
353 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
354 | ] }
355 | { "T":[4507001, 869434276], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 869496000] }
356 | { "T":[4507001, 869554058], "N":"core_repaint_begin", "wo":7 }
357 | { "T":[4507001, 869821012], "N":"core_flush_damage", "ws":8, "wo":7 }
358 | { "T":[4507001, 870216402], "N":"core_repaint_posted", "wo":7 }
359 | { "T":[4507001, 870571611], "N":"core_commit_damage", "ws":8 }
360 | { "T":[4507001, 870628984], "N":"core_repaint_req", "wo":7,
361 | "C": [
362 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
363 | ] }
364 | { "T":[4507001, 886085511], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 886146000] }
365 | { "T":[4507001, 886208332], "N":"core_repaint_begin", "wo":7 }
366 | { "T":[4507001, 886474987], "N":"core_flush_damage", "ws":8, "wo":7 }
367 | { "T":[4507001, 886817986], "N":"core_repaint_posted", "wo":7 }
368 | { "T":[4507001, 887214067], "N":"core_commit_damage", "ws":8 }
369 | { "T":[4507001, 887271189], "N":"core_repaint_req", "wo":7,
370 | "C": [
371 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
372 | ] }
373 | { "T":[4507001, 902694773], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 902785000] }
374 | { "T":[4507001, 902835127], "N":"core_repaint_begin", "wo":7 }
375 | { "T":[4507001, 903135491], "N":"core_flush_damage", "ws":8, "wo":7 }
376 | { "T":[4507001, 903345881], "N":"core_repaint_posted", "wo":7 }
377 | { "T":[4507001, 903665420], "N":"core_commit_damage", "ws":8 }
378 | { "T":[4507001, 903701775], "N":"core_repaint_req", "wo":7,
379 | "C": [
380 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
381 | ] }
382 | { "T":[4507001, 919372979], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 919446000] }
383 | { "T":[4507001, 919445611], "N":"core_repaint_begin", "wo":7 }
384 | { "T":[4507001, 919611450], "N":"core_flush_damage", "ws":8, "wo":7 }
385 | { "T":[4507001, 919817082], "N":"core_repaint_posted", "wo":7 }
386 | { "T":[4507001, 920153237], "N":"core_commit_damage", "ws":8 }
387 | { "T":[4507001, 920186709], "N":"core_repaint_req", "wo":7,
388 | "C": [
389 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
390 | ] }
391 | { "T":[4507001, 936073216], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 936097000] }
392 | { "T":[4507001, 936194537], "N":"core_repaint_begin", "wo":7 }
393 | { "T":[4507001, 936460645], "N":"core_flush_damage", "ws":8, "wo":7 }
394 | { "T":[4507001, 936805902], "N":"core_repaint_posted", "wo":7 }
395 | { "T":[4507001, 937192549], "N":"core_commit_damage", "ws":8 }
396 | { "T":[4507001, 937249881], "N":"core_repaint_req", "wo":7,
397 | "C": [
398 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
399 | ] }
400 | { "T":[4507001, 952678509], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 952745000] }
401 | { "T":[4507001, 952800448], "N":"core_repaint_begin", "wo":7 }
402 | { "T":[4507001, 953115596], "N":"core_flush_damage", "ws":8, "wo":7 }
403 | { "T":[4507001, 953464739], "N":"core_repaint_posted", "wo":7 }
404 | { "T":[4507001, 953813115], "N":"core_commit_damage", "ws":8 }
405 | { "T":[4507001, 953869831], "N":"core_repaint_req", "wo":7,
406 | "C": [
407 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
408 | ] }
409 | { "T":[4507001, 969335531], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 969397000] }
410 | { "T":[4507001, 969456565], "N":"core_repaint_begin", "wo":7 }
411 | { "T":[4507001, 969724763], "N":"core_flush_damage", "ws":8, "wo":7 }
412 | { "T":[4507001, 970118090], "N":"core_repaint_posted", "wo":7 }
413 | { "T":[4507001, 970469740], "N":"core_commit_damage", "ws":8 }
414 | { "T":[4507001, 970527398], "N":"core_repaint_req", "wo":7,
415 | "C": [
416 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
417 | ] }
418 | { "T":[4507001, 985975313], "N":"core_repaint_finished", "wo":7, "vblank":[4507001, 986044000] }
419 | { "T":[4507001, 986136883], "N":"core_repaint_begin", "wo":7 }
420 | { "T":[4507001, 986405949], "N":"core_flush_damage", "ws":8, "wo":7 }
421 | { "T":[4507001, 986751637], "N":"core_repaint_posted", "wo":7 }
422 | { "T":[4507001, 987106378], "N":"core_commit_damage", "ws":8 }
423 | { "T":[4507001, 987163194], "N":"core_repaint_req", "wo":7,
424 | "C": [
425 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
426 | ] }
427 | { "T":[4507002, 2632107], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 2697000] }
428 | { "T":[4507002, 2754272], "N":"core_repaint_begin", "wo":7 }
429 | { "T":[4507002, 3068418], "N":"core_flush_damage", "ws":8, "wo":7 }
430 | { "T":[4507002, 3415869], "N":"core_repaint_posted", "wo":7 }
431 | { "T":[4507002, 3761899], "N":"core_commit_damage", "ws":8 }
432 | { "T":[4507002, 3818735], "N":"core_repaint_req", "wo":7,
433 | "C": [
434 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
435 | ] }
436 | { "T":[4507002, 19286785], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 19347000] }
437 | { "T":[4507002, 19409963], "N":"core_repaint_begin", "wo":7 }
438 | { "T":[4507002, 19677388], "N":"core_flush_damage", "ws":8, "wo":7 }
439 | { "T":[4507002, 20068347], "N":"core_repaint_posted", "wo":7 }
440 | { "T":[4507002, 20433601], "N":"core_commit_damage", "ws":8 }
441 | { "T":[4507002, 20491124], "N":"core_repaint_req", "wo":7,
442 | "C": [
443 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
444 | ] }
445 | { "T":[4507002, 35938026], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 35999000] }
446 | { "T":[4507002, 36090128], "N":"core_repaint_begin", "wo":7 }
447 | { "T":[4507002, 36348648], "N":"core_flush_damage", "ws":8, "wo":7 }
448 | { "T":[4507002, 36672657], "N":"core_repaint_posted", "wo":7 }
449 | { "T":[4507002, 37099692], "N":"core_commit_damage", "ws":8 }
450 | { "T":[4507002, 37158254], "N":"core_repaint_req", "wo":7,
451 | "C": [
452 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
453 | ] }
454 | { "T":[4507002, 52585642], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 52647000] }
455 | { "T":[4507002, 52707199], "N":"core_repaint_begin", "wo":7 }
456 | { "T":[4507002, 52975431], "N":"core_flush_damage", "ws":8, "wo":7 }
457 | { "T":[4507002, 53367618], "N":"core_repaint_posted", "wo":7 }
458 | { "T":[4507002, 53716960], "N":"core_commit_damage", "ws":8 }
459 | { "T":[4507002, 53773866], "N":"core_repaint_req", "wo":7,
460 | "C": [
461 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
462 | ] }
463 | { "T":[4507002, 69197912], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 69300000] }
464 | { "T":[4507002, 69310159], "N":"core_repaint_begin", "wo":7 }
465 | { "T":[4507002, 69577949], "N":"core_flush_damage", "ws":8, "wo":7 }
466 | { "T":[4507002, 69913812], "N":"core_repaint_posted", "wo":7 }
467 | { "T":[4507002, 70263841], "N":"core_commit_damage", "ws":8 }
468 | { "T":[4507002, 70321053], "N":"core_repaint_req", "wo":7,
469 | "C": [
470 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
471 | ] }
472 | { "T":[4507002, 85878498], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 85945000] }
473 | { "T":[4507002, 86046110], "N":"core_repaint_begin", "wo":7 }
474 | { "T":[4507002, 86321135], "N":"core_flush_damage", "ws":8, "wo":7 }
475 | { "T":[4507002, 86667096], "N":"core_repaint_posted", "wo":7 }
476 | { "T":[4507002, 87035305], "N":"core_commit_damage", "ws":8 }
477 | { "T":[4507002, 87092617], "N":"core_repaint_req", "wo":7,
478 | "C": [
479 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
480 | ] }
481 | { "T":[4507002, 102525230], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 102597000] }
482 | { "T":[4507002, 102643371], "N":"core_repaint_begin", "wo":7 }
483 | { "T":[4507002, 102914673], "N":"core_flush_damage", "ws":8, "wo":7 }
484 | { "T":[4507002, 103309865], "N":"core_repaint_posted", "wo":7 }
485 | { "T":[4507002, 103658956], "N":"core_commit_damage", "ws":8 }
486 | { "T":[4507002, 103716690], "N":"core_repaint_req", "wo":7,
487 | "C": [
488 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
489 | ] }
490 | { "T":[4507002, 119187097], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 119249000] }
491 | { "T":[4507002, 119309196], "N":"core_repaint_begin", "wo":7 }
492 | { "T":[4507002, 119579345], "N":"core_flush_damage", "ws":8, "wo":7 }
493 | { "T":[4507002, 119927548], "N":"core_repaint_posted", "wo":7 }
494 | { "T":[4507002, 120281003], "N":"core_commit_damage", "ws":8 }
495 | { "T":[4507002, 120338501], "N":"core_repaint_req", "wo":7,
496 | "C": [
497 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
498 | ] }
499 | { "T":[4507002, 135833870], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 135896000] }
500 | { "T":[4507002, 135950251], "N":"core_repaint_begin", "wo":7 }
501 | { "T":[4507002, 136248442], "N":"core_flush_damage", "ws":8, "wo":7 }
502 | { "T":[4507002, 136584315], "N":"core_repaint_posted", "wo":7 }
503 | { "T":[4507002, 136928260], "N":"core_commit_damage", "ws":8 }
504 | { "T":[4507002, 136986190], "N":"core_repaint_req", "wo":7,
505 | "C": [
506 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
507 | ] }
508 | { "T":[4507002, 152485056], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 152548000] }
509 | { "T":[4507002, 152608971], "N":"core_repaint_begin", "wo":7 }
510 | { "T":[4507002, 152876736], "N":"core_flush_damage", "ws":8, "wo":7 }
511 | { "T":[4507002, 153273417], "N":"core_repaint_posted", "wo":7 }
512 | { "T":[4507002, 153625608], "N":"core_commit_damage", "ws":8 }
513 | { "T":[4507002, 153682499], "N":"core_repaint_req", "wo":7,
514 | "C": [
515 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
516 | ] }
517 | { "T":[4507002, 169134424], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 169197000] }
518 | { "T":[4507002, 169250810], "N":"core_repaint_begin", "wo":7 }
519 | { "T":[4507002, 169509045], "N":"core_flush_damage", "ws":8, "wo":7 }
520 | { "T":[4507002, 169838458], "N":"core_repaint_posted", "wo":7 }
521 | { "T":[4507002, 170239079], "N":"core_commit_damage", "ws":8 }
522 | { "T":[4507002, 170296146], "N":"core_repaint_req", "wo":7,
523 | "C": [
524 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
525 | ] }
526 | { "T":[4507002, 185784734], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 185845000] }
527 | { "T":[4507002, 185907725], "N":"core_repaint_begin", "wo":7 }
528 | { "T":[4507002, 186220294], "N":"core_flush_damage", "ws":8, "wo":7 }
529 | { "T":[4507002, 186568278], "N":"core_repaint_posted", "wo":7 }
530 | { "T":[4507002, 186912279], "N":"core_commit_damage", "ws":8 }
531 | { "T":[4507002, 186969094], "N":"core_repaint_req", "wo":7,
532 | "C": [
533 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
534 | ] }
535 | { "T":[4507002, 202437428], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 202498000] }
536 | { "T":[4507002, 202557721], "N":"core_repaint_begin", "wo":7 }
537 | { "T":[4507002, 202827542], "N":"core_flush_damage", "ws":8, "wo":7 }
538 | { "T":[4507002, 203221515], "N":"core_repaint_posted", "wo":7 }
539 | { "T":[4507002, 203572827], "N":"core_commit_damage", "ws":8 }
540 | { "T":[4507002, 203630044], "N":"core_repaint_req", "wo":7,
541 | "C": [
542 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
543 | ] }
544 | { "T":[4507002, 219083570], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 219149000] }
545 | { "T":[4507002, 219199449], "N":"core_repaint_begin", "wo":7 }
546 | { "T":[4507002, 219470426], "N":"core_flush_damage", "ws":8, "wo":7 }
547 | { "T":[4507002, 219814904], "N":"core_repaint_posted", "wo":7 }
548 | { "T":[4507002, 220221842], "N":"core_commit_damage", "ws":8 }
549 | { "T":[4507002, 220280479], "N":"core_repaint_req", "wo":7,
550 | "C": [
551 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
552 | ] }
553 | { "T":[4507002, 235735143], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 235798000] }
554 | { "T":[4507002, 235855952], "N":"core_repaint_begin", "wo":7 }
555 | { "T":[4507002, 236175218], "N":"core_flush_damage", "ws":8, "wo":7 }
556 | { "T":[4507002, 236522329], "N":"core_repaint_posted", "wo":7 }
557 | { "T":[4507002, 236868924], "N":"core_commit_damage", "ws":8 }
558 | { "T":[4507002, 236925945], "N":"core_repaint_req", "wo":7,
559 | "C": [
560 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
561 | ] }
562 | { "T":[4507002, 252391478], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 252451000] }
563 | { "T":[4507002, 252512755], "N":"core_repaint_begin", "wo":7 }
564 | { "T":[4507002, 252780418], "N":"core_flush_damage", "ws":8, "wo":7 }
565 | { "T":[4507002, 253176943], "N":"core_repaint_posted", "wo":7 }
566 | { "T":[4507002, 253526117], "N":"core_commit_damage", "ws":8 }
567 | { "T":[4507002, 253584082], "N":"core_repaint_req", "wo":7,
568 | "C": [
569 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
570 | ] }
571 | { "T":[4507002, 269060915], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 269096000] }
572 | { "T":[4507002, 269172223], "N":"core_repaint_begin", "wo":7 }
573 | { "T":[4507002, 269439347], "N":"core_flush_damage", "ws":8, "wo":7 }
574 | { "T":[4507002, 269788710], "N":"core_repaint_posted", "wo":7 }
575 | { "T":[4507002, 270169479], "N":"core_commit_damage", "ws":8 }
576 | { "T":[4507002, 270227589], "N":"core_repaint_req", "wo":7,
577 | "C": [
578 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
579 | ] }
580 | { "T":[4507002, 285650371], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 285754000] }
581 | { "T":[4507002, 285743698], "N":"core_repaint_begin", "wo":7 }
582 | { "T":[4507002, 286038425], "N":"core_flush_damage", "ws":8, "wo":7 }
583 | { "T":[4507002, 286379504], "N":"core_repaint_posted", "wo":7 }
584 | { "T":[4507002, 286712161], "N":"core_commit_damage", "ws":8 }
585 | { "T":[4507002, 286768832], "N":"core_repaint_req", "wo":7,
586 | "C": [
587 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
588 | ] }
589 | { "T":[4507002, 302336505], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 302399000] }
590 | { "T":[4507002, 302459646], "N":"core_repaint_begin", "wo":7 }
591 | { "T":[4507002, 302728281], "N":"core_flush_damage", "ws":8, "wo":7 }
592 | { "T":[4507002, 303122240], "N":"core_repaint_posted", "wo":7 }
593 | { "T":[4507002, 303472059], "N":"core_commit_damage", "ws":8 }
594 | { "T":[4507002, 303530018], "N":"core_repaint_req", "wo":7,
595 | "C": [
596 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
597 | ] }
598 | { "T":[4507002, 318981787], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 319049000] }
599 | { "T":[4507002, 319135355], "N":"core_repaint_begin", "wo":7 }
600 | { "T":[4507002, 319479855], "N":"core_flush_damage", "ws":8, "wo":7 }
601 | { "T":[4507002, 319825885], "N":"core_repaint_posted", "wo":7 }
602 | { "T":[4507002, 320185367], "N":"core_commit_damage", "ws":8 }
603 | { "T":[4507002, 320242539], "N":"core_repaint_req", "wo":7,
604 | "C": [
605 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
606 | ] }
607 | { "T":[4507002, 335611339], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 335691000] }
608 | { "T":[4507002, 335733091], "N":"core_repaint_begin", "wo":7 }
609 | { "T":[4507002, 336044788], "N":"core_flush_damage", "ws":8, "wo":7 }
610 | { "T":[4507002, 336406959], "N":"core_repaint_posted", "wo":7 }
611 | { "T":[4507002, 336767911], "N":"core_commit_damage", "ws":8 }
612 | { "T":[4507002, 336825368], "N":"core_repaint_req", "wo":7,
613 | "C": [
614 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
615 | ] }
616 | { "T":[4507002, 352285501], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 352349000] }
617 | { "T":[4507002, 352409277], "N":"core_repaint_begin", "wo":7 }
618 | { "T":[4507002, 352677044], "N":"core_flush_damage", "ws":8, "wo":7 }
619 | { "T":[4507002, 353073414], "N":"core_repaint_posted", "wo":7 }
620 | { "T":[4507002, 353446201], "N":"core_commit_damage", "ws":8 }
621 | { "T":[4507002, 353503233], "N":"core_repaint_req", "wo":7,
622 | "C": [
623 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
624 | ] }
625 | { "T":[4507002, 368939539], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 369000000] }
626 | { "T":[4507002, 369103038], "N":"core_repaint_begin", "wo":7 }
627 | { "T":[4507002, 369369456], "N":"core_flush_damage", "ws":8, "wo":7 }
628 | { "T":[4507002, 369717521], "N":"core_repaint_posted", "wo":7 }
629 | { "T":[4507002, 370086163], "N":"core_commit_damage", "ws":8 }
630 | { "T":[4507002, 370143384], "N":"core_repaint_req", "wo":7,
631 | "C": [
632 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
633 | ] }
634 | { "T":[4507002, 385535099], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 385642000] }
635 | { "T":[4507002, 385624847], "N":"core_repaint_begin", "wo":7 }
636 | { "T":[4507002, 385886047], "N":"core_flush_damage", "ws":8, "wo":7 }
637 | { "T":[4507002, 386269220], "N":"core_repaint_posted", "wo":7 }
638 | { "T":[4507002, 386611634], "N":"core_commit_damage", "ws":8 }
639 | { "T":[4507002, 386668435], "N":"core_repaint_req", "wo":7,
640 | "C": [
641 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
642 | ] }
643 | { "T":[4507002, 402226925], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 402297000] }
644 | { "T":[4507002, 402339484], "N":"core_repaint_begin", "wo":7 }
645 | { "T":[4507002, 402606283], "N":"core_flush_damage", "ws":8, "wo":7 }
646 | { "T":[4507002, 402950877], "N":"core_repaint_posted", "wo":7 }
647 | { "T":[4507002, 403303141], "N":"core_commit_damage", "ws":8 }
648 | { "T":[4507002, 403360178], "N":"core_repaint_req", "wo":7,
649 | "C": [
650 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
651 | ] }
652 | { "T":[4507002, 418886967], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 418949000] }
653 | { "T":[4507002, 419051864], "N":"core_repaint_begin", "wo":7 }
654 | { "T":[4507002, 419322852], "N":"core_flush_damage", "ws":8, "wo":7 }
655 | { "T":[4507002, 419667892], "N":"core_repaint_posted", "wo":7 }
656 | { "T":[4507002, 420031321], "N":"core_commit_damage", "ws":8 }
657 | { "T":[4507002, 420088236], "N":"core_repaint_req", "wo":7,
658 | "C": [
659 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
660 | ] }
661 | { "T":[4507002, 435533102], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 435599000] }
662 | { "T":[4507002, 435655027], "N":"core_repaint_begin", "wo":7 }
663 | { "T":[4507002, 435927846], "N":"core_flush_damage", "ws":8, "wo":7 }
664 | { "T":[4507002, 436320307], "N":"core_repaint_posted", "wo":7 }
665 | { "T":[4507002, 436671603], "N":"core_commit_damage", "ws":8 }
666 | { "T":[4507002, 436729222], "N":"core_repaint_req", "wo":7,
667 | "C": [
668 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
669 | ] }
670 | { "T":[4507002, 452190977], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 452252000] }
671 | { "T":[4507002, 452313586], "N":"core_repaint_begin", "wo":7 }
672 | { "T":[4507002, 452581835], "N":"core_flush_damage", "ws":8, "wo":7 }
673 | { "T":[4507002, 452925749], "N":"core_repaint_posted", "wo":7 }
674 | { "T":[4507002, 453401026], "N":"core_commit_damage", "ws":8 }
675 | { "T":[4507002, 453458774], "N":"core_repaint_req", "wo":7,
676 | "C": [
677 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
678 | ] }
679 | { "T":[4507002, 468833795], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 468900000] }
680 | { "T":[4507002, 468944132], "N":"core_repaint_begin", "wo":7 }
681 | { "T":[4507002, 469246464], "N":"core_flush_damage", "ws":8, "wo":7 }
682 | { "T":[4507002, 469592199], "N":"core_repaint_posted", "wo":7 }
683 | { "T":[4507002, 469944610], "N":"core_commit_damage", "ws":8 }
684 | { "T":[4507002, 470019897], "N":"core_repaint_req", "wo":7,
685 | "C": [
686 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
687 | ] }
688 | { "T":[4507002, 485489245], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 485552000] }
689 | { "T":[4507002, 485611860], "N":"core_repaint_begin", "wo":7 }
690 | { "T":[4507002, 485879624], "N":"core_flush_damage", "ws":8, "wo":7 }
691 | { "T":[4507002, 486274196], "N":"core_repaint_posted", "wo":7 }
692 | { "T":[4507002, 486625297], "N":"core_commit_damage", "ws":8 }
693 | { "T":[4507002, 486682293], "N":"core_repaint_req", "wo":7,
694 | "C": [
695 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
696 | ] }
697 | { "T":[4507002, 502129498], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 502198000] }
698 | { "T":[4507002, 502241520], "N":"core_repaint_begin", "wo":7 }
699 | { "T":[4507002, 502507928], "N":"core_flush_damage", "ws":8, "wo":7 }
700 | { "T":[4507002, 502854583], "N":"core_repaint_posted", "wo":7 }
701 | { "T":[4507002, 503268185], "N":"core_commit_damage", "ws":8 }
702 | { "T":[4507002, 503326356], "N":"core_repaint_req", "wo":7,
703 | "C": [
704 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
705 | ] }
706 | { "T":[4507002, 518786054], "N":"core_repaint_finished", "wo":7, "vblank":[4507002, 518851000] }
707 | { "T":[4507002, 518908268], "N":"core_repaint_begin", "wo":7 }
708 | { "T":[4507002, 519224278], "N":"core_flush_damage", "ws":8, "wo":7 }
709 | { "T":[4507002, 519572366], "N":"core_repaint_posted", "wo":7 }
710 | { "T":[4507002, 519917667], "N":"core_commit_damage", "ws":8 }
711 | { "T":[4507002, 519974818], "N":"core_repaint_req", "wo":7,
712 | "C": [
713 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":8 }
714 | ] }
715 |
--------------------------------------------------------------------------------
/testdata/timeline-presentation-p.log:
--------------------------------------------------------------------------------
1 | { "id":11, "type":"weston_output", "name":"LVDS1" }
2 | { "T":[4507044, 893387500], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 893438000] }
3 | { "T":[4507044, 893512554], "N":"core_repaint_begin", "wo":11 }
4 | { "id":12, "type":"weston_surface", "desc":"top-level window 'presentation-shm'" }
5 | { "T":[4507044, 893782581], "N":"core_flush_damage", "ws":12, "wo":11 }
6 | { "T":[4507044, 894184756], "N":"core_repaint_posted", "wo":11 }
7 | { "T":[4507044, 910055662], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 910090000] }
8 | { "T":[4507044, 910172293], "N":"core_repaint_exit_loop", "wo":11 }
9 | { "id":12, "type":"weston_surface", "desc":"top-level window 'presentation-shm'" }
10 | { "T":[4507044, 910412318], "N":"core_commit_damage", "ws":12 }
11 | { "T":[4507044, 910455920], "N":"core_repaint_req", "wo":11,
12 | "C": [
13 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
14 | ] }
15 | { "T":[4507044, 910478268], "N":"core_repaint_enter_loop", "wo":11,
16 | "C": [
17 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
18 | ] }
19 | { "T":[4507044, 926636769], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 926735000] }
20 | { "T":[4507044, 926708434], "N":"core_repaint_begin", "wo":11 }
21 | { "T":[4507044, 926959088], "N":"core_flush_damage", "ws":12, "wo":11 }
22 | { "T":[4507044, 927331816], "N":"core_repaint_posted", "wo":11 }
23 | { "T":[4507044, 943335611], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 943386000] }
24 | { "T":[4507044, 943456426], "N":"core_repaint_exit_loop", "wo":11 }
25 | { "T":[4507044, 943706578], "N":"core_commit_damage", "ws":12 }
26 | { "T":[4507044, 943744046], "N":"core_repaint_req", "wo":11,
27 | "C": [
28 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
29 | ] }
30 | { "T":[4507044, 943766233], "N":"core_repaint_enter_loop", "wo":11,
31 | "C": [
32 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
33 | ] }
34 | { "T":[4507044, 959984565], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 960037000] }
35 | { "T":[4507044, 960118066], "N":"core_repaint_begin", "wo":11 }
36 | { "T":[4507044, 960380800], "N":"core_flush_damage", "ws":12, "wo":11 }
37 | { "T":[4507044, 960707704], "N":"core_repaint_posted", "wo":11 }
38 | { "T":[4507044, 976641230], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 976691000] }
39 | { "T":[4507044, 976763600], "N":"core_repaint_exit_loop", "wo":11 }
40 | { "T":[4507044, 977045963], "N":"core_commit_damage", "ws":12 }
41 | { "T":[4507044, 977084329], "N":"core_repaint_req", "wo":11,
42 | "C": [
43 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
44 | ] }
45 | { "T":[4507044, 977106656], "N":"core_repaint_enter_loop", "wo":11,
46 | "C": [
47 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
48 | ] }
49 | { "T":[4507044, 993285950], "N":"core_repaint_finished", "wo":11, "vblank":[4507044, 993337000] }
50 | { "T":[4507044, 993380549], "N":"core_repaint_begin", "wo":11 }
51 | { "T":[4507044, 993648069], "N":"core_flush_damage", "ws":12, "wo":11 }
52 | { "T":[4507044, 993987553], "N":"core_repaint_posted", "wo":11 }
53 | { "T":[4507045, 9941269], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 9990000] }
54 | { "T":[4507045, 10106429], "N":"core_repaint_exit_loop", "wo":11 }
55 | { "T":[4507045, 10348049], "N":"core_commit_damage", "ws":12 }
56 | { "T":[4507045, 10386209], "N":"core_repaint_req", "wo":11,
57 | "C": [
58 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
59 | ] }
60 | { "T":[4507045, 10408532], "N":"core_repaint_enter_loop", "wo":11,
61 | "C": [
62 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
63 | ] }
64 | { "T":[4507045, 26563973], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 26643000] }
65 | { "T":[4507045, 26635577], "N":"core_repaint_begin", "wo":11 }
66 | { "T":[4507045, 26896279], "N":"core_flush_damage", "ws":12, "wo":11 }
67 | { "T":[4507045, 27246023], "N":"core_repaint_posted", "wo":11 }
68 | { "T":[4507045, 43244043], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 43290000] }
69 | { "T":[4507045, 43368560], "N":"core_repaint_exit_loop", "wo":11 }
70 | { "T":[4507045, 43617083], "N":"core_commit_damage", "ws":12 }
71 | { "T":[4507045, 43653637], "N":"core_repaint_req", "wo":11,
72 | "C": [
73 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
74 | ] }
75 | { "T":[4507045, 43767495], "N":"core_repaint_enter_loop", "wo":11,
76 | "C": [
77 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
78 | ] }
79 | { "T":[4507045, 59891262], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 59943000] }
80 | { "T":[4507045, 59981883], "N":"core_repaint_begin", "wo":11 }
81 | { "T":[4507045, 60290728], "N":"core_flush_damage", "ws":12, "wo":11 }
82 | { "T":[4507045, 60635927], "N":"core_repaint_posted", "wo":11 }
83 | { "T":[4507045, 76543256], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 76592000] }
84 | { "T":[4507045, 76665285], "N":"core_repaint_exit_loop", "wo":11 }
85 | { "T":[4507045, 76913065], "N":"core_commit_damage", "ws":12 }
86 | { "T":[4507045, 76951485], "N":"core_repaint_req", "wo":11,
87 | "C": [
88 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
89 | ] }
90 | { "T":[4507045, 76973949], "N":"core_repaint_enter_loop", "wo":11,
91 | "C": [
92 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
93 | ] }
94 | { "T":[4507045, 93191188], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 93242000] }
95 | { "T":[4507045, 93282286], "N":"core_repaint_begin", "wo":11 }
96 | { "T":[4507045, 93548276], "N":"core_flush_damage", "ws":12, "wo":11 }
97 | { "T":[4507045, 93891532], "N":"core_repaint_posted", "wo":11 }
98 | { "T":[4507045, 109843080], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 109891000] }
99 | { "T":[4507045, 109959190], "N":"core_repaint_exit_loop", "wo":11 }
100 | { "T":[4507045, 110241934], "N":"core_commit_damage", "ws":12 }
101 | { "T":[4507045, 110280018], "N":"core_repaint_req", "wo":11,
102 | "C": [
103 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
104 | ] }
105 | { "T":[4507045, 110302687], "N":"core_repaint_enter_loop", "wo":11,
106 | "C": [
107 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
108 | ] }
109 | { "T":[4507045, 126491557], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 126543000] }
110 | { "T":[4507045, 126587024], "N":"core_repaint_begin", "wo":11 }
111 | { "T":[4507045, 126855964], "N":"core_flush_damage", "ws":12, "wo":11 }
112 | { "T":[4507045, 127249370], "N":"core_repaint_posted", "wo":11 }
113 | { "T":[4507045, 143143299], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 143192000] }
114 | { "T":[4507045, 143262193], "N":"core_repaint_exit_loop", "wo":11 }
115 | { "T":[4507045, 143508132], "N":"core_commit_damage", "ws":12 }
116 | { "T":[4507045, 143545815], "N":"core_repaint_req", "wo":11,
117 | "C": [
118 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
119 | ] }
120 | { "T":[4507045, 143568017], "N":"core_repaint_enter_loop", "wo":11,
121 | "C": [
122 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
123 | ] }
124 | { "T":[4507045, 159786138], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 159839000] }
125 | { "T":[4507045, 159878866], "N":"core_repaint_begin", "wo":11 }
126 | { "T":[4507045, 160197572], "N":"core_flush_damage", "ws":12, "wo":11 }
127 | { "T":[4507045, 160542836], "N":"core_repaint_posted", "wo":11 }
128 | { "T":[4507045, 176434030], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 176493000] }
129 | { "T":[4507045, 176558316], "N":"core_repaint_exit_loop", "wo":11 }
130 | { "T":[4507045, 176890887], "N":"core_commit_damage", "ws":12 }
131 | { "T":[4507045, 176948340], "N":"core_repaint_req", "wo":11,
132 | "C": [
133 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
134 | ] }
135 | { "T":[4507045, 176971676], "N":"core_repaint_enter_loop", "wo":11,
136 | "C": [
137 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
138 | ] }
139 | { "T":[4507045, 193077053], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 193141000] }
140 | { "T":[4507045, 193175771], "N":"core_repaint_begin", "wo":11 }
141 | { "T":[4507045, 193447469], "N":"core_flush_damage", "ws":12, "wo":11 }
142 | { "T":[4507045, 193795347], "N":"core_repaint_posted", "wo":11 }
143 | { "T":[4507045, 209724601], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 209794000] }
144 | { "T":[4507045, 209847477], "N":"core_repaint_exit_loop", "wo":11 }
145 | { "T":[4507045, 210219946], "N":"core_commit_damage", "ws":12 }
146 | { "T":[4507045, 210278041], "N":"core_repaint_req", "wo":11,
147 | "C": [
148 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
149 | ] }
150 | { "T":[4507045, 210302180], "N":"core_repaint_enter_loop", "wo":11,
151 | "C": [
152 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
153 | ] }
154 | { "T":[4507045, 226377748], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 226443000] }
155 | { "T":[4507045, 226476687], "N":"core_repaint_begin", "wo":11 }
156 | { "T":[4507045, 226750989], "N":"core_flush_damage", "ws":12, "wo":11 }
157 | { "T":[4507045, 227142008], "N":"core_repaint_posted", "wo":11 }
158 | { "T":[4507045, 243068220], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 243093000] }
159 | { "T":[4507045, 243192767], "N":"core_repaint_exit_loop", "wo":11 }
160 | { "T":[4507045, 243518225], "N":"core_commit_damage", "ws":12 }
161 | { "T":[4507045, 243575608], "N":"core_repaint_req", "wo":11,
162 | "C": [
163 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
164 | ] }
165 | { "T":[4507045, 243598994], "N":"core_repaint_enter_loop", "wo":11,
166 | "C": [
167 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
168 | ] }
169 | { "T":[4507045, 259681095], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 259744000] }
170 | { "T":[4507045, 259779487], "N":"core_repaint_begin", "wo":11 }
171 | { "T":[4507045, 260099559], "N":"core_flush_damage", "ws":12, "wo":11 }
172 | { "T":[4507045, 260444436], "N":"core_repaint_posted", "wo":11 }
173 | { "T":[4507045, 276325483], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 276392000] }
174 | { "T":[4507045, 276450472], "N":"core_repaint_exit_loop", "wo":11 }
175 | { "T":[4507045, 276779939], "N":"core_commit_damage", "ws":12 }
176 | { "T":[4507045, 276838530], "N":"core_repaint_req", "wo":11,
177 | "C": [
178 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
179 | ] }
180 | { "T":[4507045, 276862072], "N":"core_repaint_enter_loop", "wo":11,
181 | "C": [
182 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
183 | ] }
184 | { "T":[4507045, 292979027], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 293042000] }
185 | { "T":[4507045, 293117550], "N":"core_repaint_begin", "wo":11 }
186 | { "T":[4507045, 293385360], "N":"core_flush_damage", "ws":12, "wo":11 }
187 | { "T":[4507045, 293728231], "N":"core_repaint_posted", "wo":11 }
188 | { "T":[4507045, 309586040], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 309689000] }
189 | { "T":[4507045, 309701352], "N":"core_repaint_exit_loop", "wo":11 }
190 | { "T":[4507045, 309979928], "N":"core_commit_damage", "ws":12 }
191 | { "T":[4507045, 310032851], "N":"core_repaint_req", "wo":11,
192 | "C": [
193 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
194 | ] }
195 | { "T":[4507045, 310055665], "N":"core_repaint_enter_loop", "wo":11,
196 | "C": [
197 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
198 | ] }
199 | { "T":[4507045, 326277934], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 326346000] }
200 | { "T":[4507045, 326372202], "N":"core_repaint_begin", "wo":11 }
201 | { "T":[4507045, 326643660], "N":"core_flush_damage", "ws":12, "wo":11 }
202 | { "T":[4507045, 326989972], "N":"core_repaint_posted", "wo":11 }
203 | { "T":[4507045, 342931243], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 342993000] }
204 | { "T":[4507045, 343098515], "N":"core_repaint_exit_loop", "wo":11 }
205 | { "T":[4507045, 343424726], "N":"core_commit_damage", "ws":12 }
206 | { "T":[4507045, 343482911], "N":"core_repaint_req", "wo":11,
207 | "C": [
208 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
209 | ] }
210 | { "T":[4507045, 343507240], "N":"core_repaint_enter_loop", "wo":11,
211 | "C": [
212 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
213 | ] }
214 | { "T":[4507045, 359579998], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 359643000] }
215 | { "T":[4507045, 359677863], "N":"core_repaint_begin", "wo":11 }
216 | { "T":[4507045, 359951602], "N":"core_flush_damage", "ws":12, "wo":11 }
217 | { "T":[4507045, 360342490], "N":"core_repaint_posted", "wo":11 }
218 | { "T":[4507045, 376227576], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 376294000] }
219 | { "T":[4507045, 376351401], "N":"core_repaint_exit_loop", "wo":11 }
220 | { "T":[4507045, 376676925], "N":"core_commit_damage", "ws":12 }
221 | { "T":[4507045, 376734593], "N":"core_repaint_req", "wo":11,
222 | "C": [
223 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
224 | ] }
225 | { "T":[4507045, 376758426], "N":"core_repaint_enter_loop", "wo":11,
226 | "C": [
227 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
228 | ] }
229 | { "T":[4507045, 392876668], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 392945000] }
230 | { "T":[4507045, 392965870], "N":"core_repaint_begin", "wo":11 }
231 | { "T":[4507045, 393271137], "N":"core_flush_damage", "ws":12, "wo":11 }
232 | { "T":[4507045, 393618011], "N":"core_repaint_posted", "wo":11 }
233 | { "T":[4507045, 409531020], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 409598000] }
234 | { "T":[4507045, 409648861], "N":"core_repaint_exit_loop", "wo":11 }
235 | { "T":[4507045, 409983686], "N":"core_commit_damage", "ws":12 }
236 | { "T":[4507045, 410066466], "N":"core_repaint_req", "wo":11,
237 | "C": [
238 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
239 | ] }
240 | { "T":[4507045, 410091027], "N":"core_repaint_enter_loop", "wo":11,
241 | "C": [
242 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
243 | ] }
244 | { "T":[4507045, 426181661], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 426244000] }
245 | { "T":[4507045, 426280309], "N":"core_repaint_begin", "wo":11 }
246 | { "T":[4507045, 426552262], "N":"core_flush_damage", "ws":12, "wo":11 }
247 | { "T":[4507045, 426893443], "N":"core_repaint_posted", "wo":11 }
248 | { "T":[4507045, 442833499], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 442894000] }
249 | { "T":[4507045, 442958703], "N":"core_repaint_exit_loop", "wo":11 }
250 | { "T":[4507045, 443329686], "N":"core_commit_damage", "ws":12 }
251 | { "T":[4507045, 443387350], "N":"core_repaint_req", "wo":11,
252 | "C": [
253 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
254 | ] }
255 | { "T":[4507045, 443410666], "N":"core_repaint_enter_loop", "wo":11,
256 | "C": [
257 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
258 | ] }
259 | { "T":[4507045, 459475957], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 459544000] }
260 | { "T":[4507045, 459573787], "N":"core_repaint_begin", "wo":11 }
261 | { "T":[4507045, 459849468], "N":"core_flush_damage", "ws":12, "wo":11 }
262 | { "T":[4507045, 460244565], "N":"core_repaint_posted", "wo":11 }
263 | { "T":[4507045, 476134711], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 476195000] }
264 | { "T":[4507045, 476261095], "N":"core_repaint_exit_loop", "wo":11 }
265 | { "T":[4507045, 476590693], "N":"core_commit_damage", "ws":12 }
266 | { "T":[4507045, 476649164], "N":"core_repaint_req", "wo":11,
267 | "C": [
268 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
269 | ] }
270 | { "T":[4507045, 476673233], "N":"core_repaint_enter_loop", "wo":11,
271 | "C": [
272 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
273 | ] }
274 | { "T":[4507045, 492774689], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 492845000] }
275 | { "T":[4507045, 492870281], "N":"core_repaint_begin", "wo":11 }
276 | { "T":[4507045, 493186445], "N":"core_flush_damage", "ws":12, "wo":11 }
277 | { "T":[4507045, 493532331], "N":"core_repaint_posted", "wo":11 }
278 | { "T":[4507045, 509428012], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 509494000] }
279 | { "T":[4507045, 509543695], "N":"core_repaint_exit_loop", "wo":11 }
280 | { "T":[4507045, 509869595], "N":"core_commit_damage", "ws":12 }
281 | { "T":[4507045, 509927003], "N":"core_repaint_req", "wo":11,
282 | "C": [
283 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
284 | ] }
285 | { "T":[4507045, 509950991], "N":"core_repaint_enter_loop", "wo":11,
286 | "C": [
287 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
288 | ] }
289 | { "T":[4507045, 526075170], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 526145000] }
290 | { "T":[4507045, 526164678], "N":"core_repaint_begin", "wo":11 }
291 | { "T":[4507045, 526428294], "N":"core_flush_damage", "ws":12, "wo":11 }
292 | { "T":[4507045, 526776984], "N":"core_repaint_posted", "wo":11 }
293 | { "T":[4507045, 542739472], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 542798000] }
294 | { "T":[4507045, 542863868], "N":"core_repaint_exit_loop", "wo":11 }
295 | { "T":[4507045, 543240535], "N":"core_commit_damage", "ws":12 }
296 | { "T":[4507045, 543299257], "N":"core_repaint_req", "wo":11,
297 | "C": [
298 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
299 | ] }
300 | { "T":[4507045, 543322959], "N":"core_repaint_enter_loop", "wo":11,
301 | "C": [
302 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
303 | ] }
304 | { "T":[4507045, 559376752], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 559444000] }
305 | { "T":[4507045, 559524916], "N":"core_repaint_begin", "wo":11 }
306 | { "T":[4507045, 559791046], "N":"core_flush_damage", "ws":12, "wo":11 }
307 | { "T":[4507045, 560188706], "N":"core_repaint_posted", "wo":11 }
308 | { "T":[4507045, 576074273], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 576098000] }
309 | { "T":[4507045, 576197129], "N":"core_repaint_exit_loop", "wo":11 }
310 | { "T":[4507045, 576522592], "N":"core_commit_damage", "ws":12 }
311 | { "T":[4507045, 576580752], "N":"core_repaint_req", "wo":11,
312 | "C": [
313 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
314 | ] }
315 | { "T":[4507045, 576604820], "N":"core_repaint_enter_loop", "wo":11,
316 | "C": [
317 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
318 | ] }
319 | { "T":[4507045, 592682577], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 592746000] }
320 | { "T":[4507045, 592780989], "N":"core_repaint_begin", "wo":11 }
321 | { "T":[4507045, 593100945], "N":"core_flush_damage", "ws":12, "wo":11 }
322 | { "T":[4507045, 593444389], "N":"core_repaint_posted", "wo":11 }
323 | { "T":[4507045, 609323983], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 609393000] }
324 | { "T":[4507045, 609440027], "N":"core_repaint_exit_loop", "wo":11 }
325 | { "T":[4507045, 609766886], "N":"core_commit_damage", "ws":12 }
326 | { "T":[4507045, 609824880], "N":"core_repaint_req", "wo":11,
327 | "C": [
328 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
329 | ] }
330 | { "T":[4507045, 609848608], "N":"core_repaint_enter_loop", "wo":11,
331 | "C": [
332 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
333 | ] }
334 | { "T":[4507045, 625983323], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 626047000] }
335 | { "T":[4507045, 626119563], "N":"core_repaint_begin", "wo":11 }
336 | { "T":[4507045, 626385743], "N":"core_flush_damage", "ws":12, "wo":11 }
337 | { "T":[4507045, 626726798], "N":"core_repaint_posted", "wo":11 }
338 | { "T":[4507045, 642634682], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 642696000] }
339 | { "T":[4507045, 642758944], "N":"core_repaint_exit_loop", "wo":11 }
340 | { "T":[4507045, 643096045], "N":"core_commit_damage", "ws":12 }
341 | { "T":[4507045, 643154135], "N":"core_repaint_req", "wo":11,
342 | "C": [
343 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
344 | ] }
345 | { "T":[4507045, 643178379], "N":"core_repaint_enter_loop", "wo":11,
346 | "C": [
347 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
348 | ] }
349 | { "T":[4507045, 659281607], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 659345000] }
350 | { "T":[4507045, 659378961], "N":"core_repaint_begin", "wo":11 }
351 | { "T":[4507045, 659648291], "N":"core_flush_damage", "ws":12, "wo":11 }
352 | { "T":[4507045, 659993439], "N":"core_repaint_posted", "wo":11 }
353 | { "T":[4507045, 675936072], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 675996000] }
354 | { "T":[4507045, 676100223], "N":"core_repaint_exit_loop", "wo":11 }
355 | { "T":[4507045, 676429027], "N":"core_commit_damage", "ws":12 }
356 | { "T":[4507045, 676488100], "N":"core_repaint_req", "wo":11,
357 | "C": [
358 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
359 | ] }
360 | { "T":[4507045, 676512249], "N":"core_repaint_enter_loop", "wo":11,
361 | "C": [
362 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
363 | ] }
364 | { "T":[4507045, 692449013], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 692628000] }
365 | { "T":[4507045, 692521289], "N":"core_repaint_begin", "wo":11 }
366 | { "T":[4507045, 692877744], "N":"core_flush_damage", "ws":12, "wo":11 }
367 | { "T":[4507045, 693278918], "N":"core_repaint_posted", "wo":11 }
368 | { "T":[4507045, 709205623], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 709286000] }
369 | { "T":[4507045, 709297411], "N":"core_repaint_exit_loop", "wo":11 }
370 | { "T":[4507045, 709607613], "N":"core_commit_damage", "ws":12 }
371 | { "T":[4507045, 709643174], "N":"core_repaint_req", "wo":11,
372 | "C": [
373 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
374 | ] }
375 | { "T":[4507045, 709655022], "N":"core_repaint_enter_loop", "wo":11,
376 | "C": [
377 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
378 | ] }
379 | { "T":[4507045, 725871428], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 725946000] }
380 | { "T":[4507045, 726102212], "N":"core_repaint_begin", "wo":11 }
381 | { "T":[4507045, 726383301], "N":"core_flush_damage", "ws":12, "wo":11 }
382 | { "T":[4507045, 726736325], "N":"core_repaint_posted", "wo":11 }
383 | { "T":[4507045, 742525647], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 742597000] }
384 | { "T":[4507045, 742655631], "N":"core_repaint_exit_loop", "wo":11 }
385 | { "T":[4507045, 742994303], "N":"core_commit_damage", "ws":12 }
386 | { "T":[4507045, 743099507], "N":"core_repaint_req", "wo":11,
387 | "C": [
388 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
389 | ] }
390 | { "T":[4507045, 743123761], "N":"core_repaint_enter_loop", "wo":11,
391 | "C": [
392 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
393 | ] }
394 | { "T":[4507045, 759166618], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 759245000] }
395 | { "T":[4507045, 759263509], "N":"core_repaint_begin", "wo":11 }
396 | { "T":[4507045, 759582186], "N":"core_flush_damage", "ws":12, "wo":11 }
397 | { "T":[4507045, 759945789], "N":"core_repaint_posted", "wo":11 }
398 | { "T":[4507045, 775816903], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 775893000] }
399 | { "T":[4507045, 775935209], "N":"core_repaint_exit_loop", "wo":11 }
400 | { "T":[4507045, 776277979], "N":"core_commit_damage", "ws":12 }
401 | { "T":[4507045, 776345108], "N":"core_repaint_req", "wo":11,
402 | "C": [
403 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
404 | ] }
405 | { "T":[4507045, 776369347], "N":"core_repaint_enter_loop", "wo":11,
406 | "C": [
407 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
408 | ] }
409 | { "T":[4507045, 792473700], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 792548000] }
410 | { "T":[4507045, 792574816], "N":"core_repaint_begin", "wo":11 }
411 | { "T":[4507045, 792887523], "N":"core_flush_damage", "ws":12, "wo":11 }
412 | { "T":[4507045, 793337930], "N":"core_repaint_posted", "wo":11 }
413 | { "T":[4507045, 809120397], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 809195000] }
414 | { "T":[4507045, 809243976], "N":"core_repaint_exit_loop", "wo":11 }
415 | { "T":[4507045, 809585312], "N":"core_commit_damage", "ws":12 }
416 | { "T":[4507045, 809651197], "N":"core_repaint_req", "wo":11,
417 | "C": [
418 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
419 | ] }
420 | { "T":[4507045, 809674865], "N":"core_repaint_enter_loop", "wo":11,
421 | "C": [
422 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
423 | ] }
424 | { "T":[4507045, 825791167], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 825844000] }
425 | { "T":[4507045, 825883113], "N":"core_repaint_begin", "wo":11 }
426 | { "T":[4507045, 826204338], "N":"core_flush_damage", "ws":12, "wo":11 }
427 | { "T":[4507045, 826548016], "N":"core_repaint_posted", "wo":11 }
428 | { "T":[4507045, 842448241], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 842497000] }
429 | { "T":[4507045, 842564972], "N":"core_repaint_exit_loop", "wo":11 }
430 | { "T":[4507045, 842810369], "N":"core_commit_damage", "ws":12 }
431 | { "T":[4507045, 842847089], "N":"core_repaint_req", "wo":11,
432 | "C": [
433 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
434 | ] }
435 | { "T":[4507045, 842869241], "N":"core_repaint_enter_loop", "wo":11,
436 | "C": [
437 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
438 | ] }
439 | { "T":[4507045, 859097754], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 859148000] }
440 | { "T":[4507045, 859191375], "N":"core_repaint_begin", "wo":11 }
441 | { "T":[4507045, 859460314], "N":"core_flush_damage", "ws":12, "wo":11 }
442 | { "T":[4507045, 859806104], "N":"core_repaint_posted", "wo":11 }
443 | { "T":[4507045, 875750328], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 875798000] }
444 | { "T":[4507045, 875867405], "N":"core_repaint_exit_loop", "wo":11 }
445 | { "T":[4507045, 876171004], "N":"core_commit_damage", "ws":12 }
446 | { "T":[4507045, 876211376], "N":"core_repaint_req", "wo":11,
447 | "C": [
448 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
449 | ] }
450 | { "T":[4507045, 876233669], "N":"core_repaint_enter_loop", "wo":11,
451 | "C": [
452 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
453 | ] }
454 | { "T":[4507045, 892355260], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 892451000] }
455 | { "T":[4507045, 892471470], "N":"core_repaint_begin", "wo":11 }
456 | { "T":[4507045, 892727366], "N":"core_flush_damage", "ws":12, "wo":11 }
457 | { "T":[4507045, 893114507], "N":"core_repaint_posted", "wo":11 }
458 | { "T":[4507045, 909050682], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 909099000] }
459 | { "T":[4507045, 909167644], "N":"core_repaint_exit_loop", "wo":11 }
460 | { "T":[4507045, 909407518], "N":"core_commit_damage", "ws":12 }
461 | { "T":[4507045, 909442934], "N":"core_repaint_req", "wo":11,
462 | "C": [
463 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
464 | ] }
465 | { "T":[4507045, 909464921], "N":"core_repaint_enter_loop", "wo":11,
466 | "C": [
467 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
468 | ] }
469 | { "T":[4507045, 925695411], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 925747000] }
470 | { "T":[4507045, 925788556], "N":"core_repaint_begin", "wo":11 }
471 | { "T":[4507045, 926103310], "N":"core_flush_damage", "ws":12, "wo":11 }
472 | { "T":[4507045, 926443597], "N":"core_repaint_posted", "wo":11 }
473 | { "T":[4507045, 942351205], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 942399000] }
474 | { "T":[4507045, 942474157], "N":"core_repaint_exit_loop", "wo":11 }
475 | { "T":[4507045, 942722614], "N":"core_commit_damage", "ws":12 }
476 | { "T":[4507045, 942759795], "N":"core_repaint_req", "wo":11,
477 | "C": [
478 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
479 | ] }
480 | { "T":[4507045, 942781988], "N":"core_repaint_enter_loop", "wo":11,
481 | "C": [
482 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
483 | ] }
484 | { "T":[4507045, 959041828], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 959049000] }
485 | { "T":[4507045, 959140230], "N":"core_repaint_begin", "wo":11 }
486 | { "T":[4507045, 959405377], "N":"core_flush_damage", "ws":12, "wo":11 }
487 | { "T":[4507045, 959745594], "N":"core_repaint_posted", "wo":11 }
488 | { "T":[4507045, 975650275], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 975699000] }
489 | { "T":[4507045, 975765758], "N":"core_repaint_exit_loop", "wo":11 }
490 | { "T":[4507045, 976048327], "N":"core_commit_damage", "ws":12 }
491 | { "T":[4507045, 976086416], "N":"core_repaint_req", "wo":11,
492 | "C": [
493 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
494 | ] }
495 | { "T":[4507045, 976108182], "N":"core_repaint_enter_loop", "wo":11,
496 | "C": [
497 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
498 | ] }
499 | { "T":[4507045, 992297313], "N":"core_repaint_finished", "wo":11, "vblank":[4507045, 992348000] }
500 | { "T":[4507045, 992391475], "N":"core_repaint_begin", "wo":11 }
501 | { "T":[4507045, 992653783], "N":"core_flush_damage", "ws":12, "wo":11 }
502 | { "T":[4507045, 992999412], "N":"core_repaint_posted", "wo":11 }
503 | { "T":[4507046, 8952048], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 8998000] }
504 | { "T":[4507046, 9117735], "N":"core_repaint_exit_loop", "wo":11 }
505 | { "T":[4507046, 9362294], "N":"core_commit_damage", "ws":12 }
506 | { "T":[4507046, 9401066], "N":"core_repaint_req", "wo":11,
507 | "C": [
508 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
509 | ] }
510 | { "T":[4507046, 9423399], "N":"core_repaint_enter_loop", "wo":11,
511 | "C": [
512 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
513 | ] }
514 | { "T":[4507046, 25599791], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 25650000] }
515 | { "T":[4507046, 25689674], "N":"core_repaint_begin", "wo":11 }
516 | { "T":[4507046, 25962627], "N":"core_flush_damage", "ws":12, "wo":11 }
517 | { "T":[4507046, 26354859], "N":"core_repaint_posted", "wo":11 }
518 | { "T":[4507046, 42246899], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 42296000] }
519 | { "T":[4507046, 42362180], "N":"core_repaint_exit_loop", "wo":11 }
520 | { "T":[4507046, 42600840], "N":"core_commit_damage", "ws":12 }
521 | { "T":[4507046, 42637229], "N":"core_repaint_req", "wo":11,
522 | "C": [
523 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
524 | ] }
525 | { "T":[4507046, 42658839], "N":"core_repaint_enter_loop", "wo":11,
526 | "C": [
527 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
528 | ] }
529 | { "T":[4507046, 58894605], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 58947000] }
530 | { "T":[4507046, 58987684], "N":"core_repaint_begin", "wo":11 }
531 | { "T":[4507046, 59303190], "N":"core_flush_damage", "ws":12, "wo":11 }
532 | { "T":[4507046, 59705867], "N":"core_repaint_posted", "wo":11 }
533 | { "T":[4507046, 75514256], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 75588000] }
534 | { "T":[4507046, 75636591], "N":"core_repaint_exit_loop", "wo":11 }
535 | { "T":[4507046, 75885013], "N":"core_commit_damage", "ws":12 }
536 | { "T":[4507046, 75925044], "N":"core_repaint_req", "wo":11,
537 | "C": [
538 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
539 | ] }
540 | { "T":[4507046, 75947602], "N":"core_repaint_enter_loop", "wo":11,
541 | "C": [
542 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
543 | ] }
544 | { "T":[4507046, 92194652], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 92247000] }
545 | { "T":[4507046, 92286859], "N":"core_repaint_begin", "wo":11 }
546 | { "T":[4507046, 92552834], "N":"core_flush_damage", "ws":12, "wo":11 }
547 | { "T":[4507046, 92895519], "N":"core_repaint_posted", "wo":11 }
548 | { "T":[4507046, 108851366], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 108900000] }
549 | { "T":[4507046, 108965373], "N":"core_repaint_exit_loop", "wo":11 }
550 | { "T":[4507046, 109256560], "N":"core_commit_damage", "ws":12 }
551 | { "T":[4507046, 109296446], "N":"core_repaint_req", "wo":11,
552 | "C": [
553 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
554 | ] }
555 | { "T":[4507046, 109319060], "N":"core_repaint_enter_loop", "wo":11,
556 | "C": [
557 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
558 | ] }
559 | { "T":[4507046, 125494949], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 125547000] }
560 | { "T":[4507046, 125587051], "N":"core_repaint_begin", "wo":11 }
561 | { "T":[4507046, 125857690], "N":"core_flush_damage", "ws":12, "wo":11 }
562 | { "T":[4507046, 126251438], "N":"core_repaint_posted", "wo":11 }
563 | { "T":[4507046, 142154017], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 142202000] }
564 | { "T":[4507046, 142277371], "N":"core_repaint_exit_loop", "wo":11 }
565 | { "T":[4507046, 142525688], "N":"core_commit_damage", "ws":12 }
566 | { "T":[4507046, 142562453], "N":"core_repaint_req", "wo":11,
567 | "C": [
568 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
569 | ] }
570 | { "T":[4507046, 142585212], "N":"core_repaint_enter_loop", "wo":11,
571 | "C": [
572 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
573 | ] }
574 | { "T":[4507046, 158798617], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 158850000] }
575 | { "T":[4507046, 158893106], "N":"core_repaint_begin", "wo":11 }
576 | { "T":[4507046, 159209385], "N":"core_flush_damage", "ws":12, "wo":11 }
577 | { "T":[4507046, 159553008], "N":"core_repaint_posted", "wo":11 }
578 | { "T":[4507046, 175416449], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 175494000] }
579 | { "T":[4507046, 175532995], "N":"core_repaint_exit_loop", "wo":11 }
580 | { "T":[4507046, 175782761], "N":"core_commit_damage", "ws":12 }
581 | { "T":[4507046, 175827959], "N":"core_repaint_req", "wo":11,
582 | "C": [
583 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
584 | ] }
585 | { "T":[4507046, 175850116], "N":"core_repaint_enter_loop", "wo":11,
586 | "C": [
587 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
588 | ] }
589 | { "T":[4507046, 192084156], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 192151000] }
590 | { "T":[4507046, 192173949], "N":"core_repaint_begin", "wo":11 }
591 | { "T":[4507046, 192437180], "N":"core_flush_damage", "ws":12, "wo":11 }
592 | { "T":[4507046, 192781244], "N":"core_repaint_posted", "wo":11 }
593 | { "T":[4507046, 208739130], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 208800000] }
594 | { "T":[4507046, 208863612], "N":"core_repaint_exit_loop", "wo":11 }
595 | { "T":[4507046, 209245144], "N":"core_commit_damage", "ws":12 }
596 | { "T":[4507046, 209303630], "N":"core_repaint_req", "wo":11,
597 | "C": [
598 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
599 | ] }
600 | { "T":[4507046, 209327528], "N":"core_repaint_enter_loop", "wo":11,
601 | "C": [
602 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
603 | ] }
604 | { "T":[4507046, 225386974], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 225450000] }
605 | { "T":[4507046, 225484648], "N":"core_repaint_begin", "wo":11 }
606 | { "T":[4507046, 225756060], "N":"core_flush_damage", "ws":12, "wo":11 }
607 | { "T":[4507046, 226220228], "N":"core_repaint_posted", "wo":11 }
608 | { "T":[4507046, 242070243], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 242100000] }
609 | { "T":[4507046, 242193480], "N":"core_repaint_exit_loop", "wo":11 }
610 | { "T":[4507046, 242518954], "N":"core_commit_damage", "ws":12 }
611 | { "T":[4507046, 242575890], "N":"core_repaint_req", "wo":11,
612 | "C": [
613 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
614 | ] }
615 | { "T":[4507046, 242599803], "N":"core_repaint_enter_loop", "wo":11,
616 | "C": [
617 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
618 | ] }
619 | { "T":[4507046, 258681419], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 258750000] }
620 | { "T":[4507046, 258753518], "N":"core_repaint_begin", "wo":11 }
621 | { "T":[4507046, 258951124], "N":"core_flush_damage", "ws":12, "wo":11 }
622 | { "T":[4507046, 259321061], "N":"core_repaint_posted", "wo":11 }
623 | { "T":[4507046, 275343563], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 275404000] }
624 | { "T":[4507046, 275467819], "N":"core_repaint_exit_loop", "wo":11 }
625 | { "T":[4507046, 275797070], "N":"core_commit_damage", "ws":12 }
626 | { "T":[4507046, 275855014], "N":"core_repaint_req", "wo":11,
627 | "C": [
628 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
629 | ] }
630 | { "T":[4507046, 275878632], "N":"core_repaint_enter_loop", "wo":11,
631 | "C": [
632 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
633 | ] }
634 | { "T":[4507046, 291983391], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 292050000] }
635 | { "T":[4507046, 292113983], "N":"core_repaint_begin", "wo":11 }
636 | { "T":[4507046, 292374420], "N":"core_flush_damage", "ws":12, "wo":11 }
637 | { "T":[4507046, 292718826], "N":"core_repaint_posted", "wo":11 }
638 | { "T":[4507046, 308640577], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 308702000] }
639 | { "T":[4507046, 308765871], "N":"core_repaint_exit_loop", "wo":11 }
640 | { "T":[4507046, 309097375], "N":"core_commit_damage", "ws":12 }
641 | { "T":[4507046, 309154698], "N":"core_repaint_req", "wo":11,
642 | "C": [
643 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
644 | ] }
645 | { "T":[4507046, 309177914], "N":"core_repaint_enter_loop", "wo":11,
646 | "C": [
647 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
648 | ] }
649 | { "T":[4507046, 325285232], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 325351000] }
650 | { "T":[4507046, 325382369], "N":"core_repaint_begin", "wo":11 }
651 | { "T":[4507046, 325653977], "N":"core_flush_damage", "ws":12, "wo":11 }
652 | { "T":[4507046, 325997188], "N":"core_repaint_posted", "wo":11 }
653 | { "T":[4507046, 341937828], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 342000000] }
654 | { "T":[4507046, 342101593], "N":"core_repaint_exit_loop", "wo":11 }
655 | { "T":[4507046, 342432414], "N":"core_commit_damage", "ws":12 }
656 | { "T":[4507046, 342491382], "N":"core_repaint_req", "wo":11,
657 | "C": [
658 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
659 | ] }
660 | { "T":[4507046, 342515827], "N":"core_repaint_enter_loop", "wo":11,
661 | "C": [
662 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
663 | ] }
664 | { "T":[4507046, 358576702], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 358649000] }
665 | { "T":[4507046, 358653111], "N":"core_repaint_begin", "wo":11 }
666 | { "T":[4507046, 358871505], "N":"core_flush_damage", "ws":12, "wo":11 }
667 | { "T":[4507046, 359238900], "N":"core_repaint_posted", "wo":11 }
668 | { "T":[4507046, 375241366], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 375301000] }
669 | { "T":[4507046, 375360400], "N":"core_repaint_exit_loop", "wo":11 }
670 | { "T":[4507046, 375683802], "N":"core_commit_damage", "ws":12 }
671 | { "T":[4507046, 375741250], "N":"core_repaint_req", "wo":11,
672 | "C": [
673 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
674 | ] }
675 | { "T":[4507046, 375765273], "N":"core_repaint_enter_loop", "wo":11,
676 | "C": [
677 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
678 | ] }
679 | { "T":[4507046, 391889391], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 391953000] }
680 | { "T":[4507046, 391983920], "N":"core_repaint_begin", "wo":11 }
681 | { "T":[4507046, 392286123], "N":"core_flush_damage", "ws":12, "wo":11 }
682 | { "T":[4507046, 392610699], "N":"core_repaint_posted", "wo":11 }
683 | { "T":[4507046, 408530212], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 408600000] }
684 | { "T":[4507046, 408651810], "N":"core_repaint_exit_loop", "wo":11 }
685 | { "T":[4507046, 408985486], "N":"core_commit_damage", "ws":12 }
686 | { "T":[4507046, 409088413], "N":"core_repaint_req", "wo":11,
687 | "C": [
688 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
689 | ] }
690 | { "T":[4507046, 409113470], "N":"core_repaint_enter_loop", "wo":11,
691 | "C": [
692 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
693 | ] }
694 | { "T":[4507046, 425128377], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 425240000] }
695 | { "T":[4507046, 425214012], "N":"core_repaint_begin", "wo":11 }
696 | { "T":[4507046, 425477890], "N":"core_flush_damage", "ws":12, "wo":11 }
697 | { "T":[4507046, 425817485], "N":"core_repaint_posted", "wo":11 }
698 | { "T":[4507046, 441838757], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 441902000] }
699 | { "T":[4507046, 441965532], "N":"core_repaint_exit_loop", "wo":11 }
700 | { "T":[4507046, 442335550], "N":"core_commit_damage", "ws":12 }
701 | { "T":[4507046, 442393820], "N":"core_repaint_req", "wo":11,
702 | "C": [
703 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
704 | ] }
705 | { "T":[4507046, 442417137], "N":"core_repaint_enter_loop", "wo":11,
706 | "C": [
707 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
708 | ] }
709 | { "T":[4507046, 458447379], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 458557000] }
710 | { "T":[4507046, 458517914], "N":"core_repaint_begin", "wo":11 }
711 | { "T":[4507046, 458773991], "N":"core_flush_damage", "ws":12, "wo":11 }
712 | { "T":[4507046, 459129092], "N":"core_repaint_posted", "wo":11 }
713 | { "T":[4507046, 475140895], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 475202000] }
714 | { "T":[4507046, 475266536], "N":"core_repaint_exit_loop", "wo":11 }
715 | { "T":[4507046, 475602314], "N":"core_commit_damage", "ws":12 }
716 | { "T":[4507046, 475663138], "N":"core_repaint_req", "wo":11,
717 | "C": [
718 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
719 | ] }
720 | { "T":[4507046, 475687106], "N":"core_repaint_enter_loop", "wo":11,
721 | "C": [
722 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
723 | ] }
724 | { "T":[4507046, 491789756], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 491852000] }
725 | { "T":[4507046, 491888714], "N":"core_repaint_begin", "wo":11 }
726 | { "T":[4507046, 492204852], "N":"core_flush_damage", "ws":12, "wo":11 }
727 | { "T":[4507046, 492550883], "N":"core_repaint_posted", "wo":11 }
728 | { "T":[4507046, 508440734], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 508503000] }
729 | { "T":[4507046, 508565672], "N":"core_repaint_exit_loop", "wo":11 }
730 | { "T":[4507046, 508895274], "N":"core_commit_damage", "ws":12 }
731 | { "T":[4507046, 508952551], "N":"core_repaint_req", "wo":11,
732 | "C": [
733 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
734 | ] }
735 | { "T":[4507046, 508976288], "N":"core_repaint_enter_loop", "wo":11,
736 | "C": [
737 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
738 | ] }
739 | { "T":[4507046, 525090256], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 525153000] }
740 | { "T":[4507046, 525185929], "N":"core_repaint_begin", "wo":11 }
741 | { "T":[4507046, 525459117], "N":"core_flush_damage", "ws":12, "wo":11 }
742 | { "T":[4507046, 525804215], "N":"core_repaint_posted", "wo":11 }
743 | { "T":[4507046, 541741955], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 541803000] }
744 | { "T":[4507046, 541864756], "N":"core_repaint_exit_loop", "wo":11 }
745 | { "T":[4507046, 542247422], "N":"core_commit_damage", "ws":12 }
746 | { "T":[4507046, 542305692], "N":"core_repaint_req", "wo":11,
747 | "C": [
748 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
749 | ] }
750 | { "T":[4507046, 542329710], "N":"core_repaint_enter_loop", "wo":11,
751 | "C": [
752 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
753 | ] }
754 | { "T":[4507046, 558361982], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 558445000] }
755 | { "T":[4507046, 558457509], "N":"core_repaint_begin", "wo":11 }
756 | { "T":[4507046, 558734108], "N":"core_flush_damage", "ws":12, "wo":11 }
757 | { "T":[4507046, 559109862], "N":"core_repaint_posted", "wo":11 }
758 | { "T":[4507046, 575073109], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 575103000] }
759 | { "T":[4507046, 575258821], "N":"core_repaint_exit_loop", "wo":11 }
760 | { "T":[4507046, 575585127], "N":"core_commit_damage", "ws":12 }
761 | { "T":[4507046, 575642736], "N":"core_repaint_req", "wo":11,
762 | "C": [
763 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
764 | ] }
765 | { "T":[4507046, 575666303], "N":"core_repaint_enter_loop", "wo":11,
766 | "C": [
767 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
768 | ] }
769 | { "T":[4507046, 591689072], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 591752000] }
770 | { "T":[4507046, 591786159], "N":"core_repaint_begin", "wo":11 }
771 | { "T":[4507046, 592105172], "N":"core_flush_damage", "ws":12, "wo":11 }
772 | { "T":[4507046, 592453686], "N":"core_repaint_posted", "wo":11 }
773 | { "T":[4507046, 608339805], "N":"core_repaint_finished", "wo":11, "vblank":[4507046, 608403000] }
774 | { "T":[4507046, 608464627], "N":"core_repaint_exit_loop", "wo":11 }
775 | { "T":[4507046, 608796050], "N":"core_commit_damage", "ws":12 }
776 | { "T":[4507046, 608854741], "N":"core_repaint_req", "wo":11,
777 | "C": [
778 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
779 | ] }
780 | { "T":[4507046, 608878815], "N":"core_repaint_enter_loop", "wo":11,
781 | "C": [
782 | { "f":"weston_surface_schedule_repaint", "l":1358, "ws":12 }
783 | ] }
784 |
--------------------------------------------------------------------------------