mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-07 06:08:05 +02:00
trace: Add multiple annotations with a single macro
Use recursive macro magic to make a single ANNOTATE macro that processes a list of annotations. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
This commit is contained in:
parent
dc4d1cf676
commit
a285379c9a
2 changed files with 26 additions and 9 deletions
|
|
@ -206,11 +206,11 @@ weston_surface_attach(struct weston_surface *surface,
|
|||
|
||||
WESTON_TRACE_BEGIN_ANNOTATION();
|
||||
if (buffer) {
|
||||
WESTON_TRACE_ANNOTATE_ADD("surface", surface->internal_name);
|
||||
WESTON_TRACE_ANNOTATE_ADD("format", buffer->pixel_format->drm_format_name);
|
||||
WESTON_TRACE_ANNOTATE_ADD("modifier", buffer->format_modifier_name);
|
||||
WESTON_TRACE_ANNOTATE_ADD("width", buffer->width);
|
||||
WESTON_TRACE_ANNOTATE_ADD("height", buffer->height);
|
||||
WESTON_TRACE_ANNOTATE(("surface", surface->internal_name),
|
||||
("format", buffer->pixel_format->drm_format_name),
|
||||
("modifier", buffer->format_modifier_name),
|
||||
("width", buffer->width),
|
||||
("height", buffer->height));
|
||||
}
|
||||
WESTON_TRACE_ANNOTATE_FUNC_FLOW(&surface->flow_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@
|
|||
struct weston_debug_annotation __pd_annots[WESTON_MAX_DEBUG_ANNOTS]; \
|
||||
unsigned int __pd_i = 0
|
||||
|
||||
#define _WESTON_TRACE_ANNOTATE_ADD(k, v) \
|
||||
#define _WESTON_TRACE_DO_ANNOTATE_ADD(k, v) \
|
||||
weston_assert_u32_gt(NULL, WESTON_MAX_DEBUG_ANNOTS, __pd_i); \
|
||||
_Generic((v), \
|
||||
int: perfetto_annotate_int, \
|
||||
|
|
@ -230,7 +230,7 @@ _weston_trace_scope_end(int *scope)
|
|||
|
||||
#define _WESTON_TRACE_BEGIN_ANNOTATION()
|
||||
#define _WESTON_TRACE_COMMIT_ANNOTATION(id, name)
|
||||
#define _WESTON_TRACE_ANNOTATE_ADD(k, v)
|
||||
#define _WESTON_TRACE_DO_ANNOTATE_ADD(k, v)
|
||||
#define _WESTON_TRACE_ANNOTATE_FUNC()
|
||||
#define _WESTON_TRACE_ANNOTATE_FUNC_FLOW(id, name)
|
||||
|
||||
|
|
@ -249,8 +249,8 @@ _weston_trace_scope_end(int *scope)
|
|||
#define WESTON_TRACE_BEGIN_ANNOTATION() \
|
||||
_WESTON_TRACE_BEGIN_ANNOTATION()
|
||||
|
||||
#define WESTON_TRACE_ANNOTATE_ADD(k, v) \
|
||||
_WESTON_TRACE_ANNOTATE_ADD(k, v)
|
||||
#define WESTON_TRACE_DO_ANNOTATE_ADD(k, v) \
|
||||
_WESTON_TRACE_DO_ANNOTATE_ADD(k, v)
|
||||
|
||||
#define WESTON_TRACE_COMMIT_ANNOTATION(id) \
|
||||
_WESTON_TRACE_COMMIT_ANNOTATION(id, __func__)
|
||||
|
|
@ -261,4 +261,21 @@ _weston_trace_scope_end(int *scope)
|
|||
#define WESTON_TRACE_ANNOTATE_FUNC_FLOW(id) \
|
||||
_WESTON_TRACE_ANNOTATE_FUNC_FLOW(id, __func__)
|
||||
|
||||
#define FORCE_RECURSE ()
|
||||
#define WESTON_TRACE_ANNOTATE_ADD(k, v) WESTON_TRACE_DO_ANNOTATE_ADD(k, v)
|
||||
#define WESTON_TRACE_ANNOTATE_PAIR(pair) WESTON_TRACE_ANNOTATE_ADD pair
|
||||
|
||||
/* There is a large but finite limit to the number of options */
|
||||
#define EXPAND(arg) EXPAND1(EXPAND1(EXPAND1(EXPAND1(arg))))
|
||||
#define EXPAND1(arg) EXPAND2(EXPAND2(EXPAND2(EXPAND2(arg))))
|
||||
#define EXPAND2(arg) arg
|
||||
|
||||
#define ITER_HELPER(operation, pair, ...) \
|
||||
operation(pair) \
|
||||
__VA_OPT__(ITER_AGAIN FORCE_RECURSE (operation, __VA_ARGS__))
|
||||
#define ITER_AGAIN() ITER_HELPER
|
||||
|
||||
#define WESTON_TRACE_ANNOTATE(...) \
|
||||
__VA_OPT__(EXPAND(ITER_HELPER(WESTON_TRACE_ANNOTATE_PAIR, __VA_ARGS__)))
|
||||
|
||||
#endif /* WESTON_TRACE_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue