The open source OpenXR runtime
0
fork

Configure Feed

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

u/pp: Add stack only sink for printing messages

+54
+31
src/xrt/auxiliary/util/u_pretty_print.c
··· 38 38 } 39 39 } 40 40 41 + void 42 + stack_only_sink(void *ptr, const char *str, size_t length) 43 + { 44 + struct u_pp_sink_stack_only *sink = (struct u_pp_sink_stack_only *)ptr; 45 + 46 + size_t used = sink->used; 47 + size_t left = ARRAY_SIZE(sink->buffer) - used; 48 + if (left == 0) { 49 + return; 50 + } 51 + 52 + if (length >= left) { 53 + length = left - 1; 54 + } 55 + 56 + memcpy(sink->buffer + used, str, length); 57 + 58 + used += length; 59 + 60 + // Null terminate and update used. 61 + sink->buffer[used] = '\0'; 62 + sink->used = used; 63 + } 64 + 41 65 42 66 /* 43 67 * ··· 225 249 226 250 u_pp(dg, "XRT_INPUT_0x%04x_%s", id, str); 227 251 } 252 + 253 + u_pp_delegate_t 254 + u_pp_sink_stack_only_init(struct u_pp_sink_stack_only *sink) 255 + { 256 + sink->used = 0; 257 + return (u_pp_delegate_t){sink, stack_only_sink}; 258 + }
+23
src/xrt/auxiliary/util/u_pretty_print.h
··· 74 74 u_pp_xrt_input_name(struct u_pp_delegate dg, enum xrt_input_name name); 75 75 76 76 77 + /* 78 + * 79 + * Sinks. 80 + * 81 + */ 82 + 83 + /*! 84 + * Stack only pretty printer sink, no need to free, must be inited before use. 85 + * 86 + * @ingroup aux_pretty 87 + */ 88 + struct u_pp_sink_stack_only 89 + { 90 + //! How much of the buffer is used. 91 + size_t used; 92 + 93 + //! Storage for the sink. 94 + char buffer[1024 * 8]; 95 + }; 96 + 97 + u_pp_delegate_t 98 + u_pp_sink_stack_only_init(struct u_pp_sink_stack_only *sink); 99 + 77 100 78 101 #ifdef __cplusplus 79 102 }