The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

u/logging: Add filter callback in Monado logging system

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2619>

authored by

Rafal Karp and committed by
Marge Bot
44773f80 087d0350

+36
+17
src/xrt/auxiliary/util/u_logging.c
··· 454 454 u_log(file, line, calling_fn, level, "%s", sink.buffer); 455 455 } 456 456 457 + static u_log_filter_func_t g_filter = NULL; 458 + 459 + void 460 + u_log_set_filter(u_log_filter_func_t filter) 461 + { 462 + g_filter = filter; 463 + } 464 + 457 465 void 458 466 u_log(const char *file, int line, const char *func, enum u_logging_level level, const char *format, ...) 459 467 { 460 468 va_list args; 469 + // Check filter first 470 + if (g_filter != NULL && !g_filter(file, line, func, level)) { 471 + return; // Skip this message 472 + } 473 + 461 474 va_start(args, format); 462 475 DISPATCH_SINK(file, line, func, level, format, args); 463 476 do_print(file, line, func, level, format, args); ··· 474 487 ...) 475 488 { 476 489 va_list args; 490 + // Check filter first 491 + if (g_filter != NULL && !g_filter(file, line, func, level)) { 492 + return; // Skip this message 493 + } 477 494 va_start(args, format); 478 495 DISPATCH_SINK(file, line, func, level, format, args); 479 496 do_print(file, line, func, level, format, args);
+19
src/xrt/auxiliary/util/u_logging.h
··· 70 70 void *data); 71 71 72 72 /*! 73 + * Function typedef for filtering log messages. 74 + * 75 + * @param file Source file name associated with a message. 76 + * @param line Source file line associated with a message. 77 + * @param func Function name associated with a message. 78 + * @param level Message level: used for formatting or forwarding to native log functions. 79 + * @return true if message should be logged, false to filter it out. 80 + */ 81 + typedef bool (*u_log_filter_func_t)(const char *file, int line, const char *func, enum u_logging_level level); 82 + 83 + /*! 73 84 * For places where you really want printf, prints a new-line. 74 85 */ 75 86 #define U_LOG_RAW(...) \ ··· 377 388 const char *calling_fn, 378 389 xrt_result_t xret, 379 390 const char *called_fn); 391 + 392 + /*! 393 + * @brief Add function to set the filter 394 + * 395 + * @param filter Filter function to set 396 + */ 397 + void 398 + u_log_set_filter(u_log_filter_func_t filter); 380 399 381 400 /*! 382 401 * @}