The open source OpenXR runtime
0
fork

Configure Feed

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

util: Port logging to OutputDebugString on Windows

authored by

Ryan Pavlik and committed by
Jakob Bornecrantz
90e307bf a6bedb9b

+84 -1
+84 -1
src/xrt/auxiliary/util/u_logging.c
··· 15 15 #include <stdarg.h> 16 16 17 17 18 - #ifdef XRT_OS_ANDROID 18 + #if defined(XRT_OS_ANDROID) 19 19 20 20 #include <android/log.h> 21 21 ··· 64 64 __android_log_vprint(prio, func, format, args); 65 65 va_end(args); 66 66 } 67 + 68 + 69 + #elif defined(XRT_OS_WINDOWS) 70 + 71 + #include <debugapi.h> 72 + 73 + static int 74 + print_prefix(int remainingBuf, 75 + char *buf, 76 + const char *func, 77 + enum u_logging_level level) 78 + { 79 + int printed = 0; 80 + switch (level) { 81 + case U_LOGGING_TRACE: 82 + printed = sprintf_s(buf, remainingBuf, "TRACE "); 83 + break; 84 + case U_LOGGING_DEBUG: 85 + printed = sprintf_s(buf, remainingBuf, "DEBUG "); 86 + break; 87 + case U_LOGGING_INFO: 88 + printed = sprintf_s(buf, remainingBuf, "INFO "); 89 + break; 90 + case U_LOGGING_WARN: 91 + printed = sprintf_s(buf, remainingBuf, "WARN "); 92 + break; 93 + case U_LOGGING_ERROR: 94 + printed = sprintf_s(buf, remainingBuf, "ERROR "); 95 + break; 96 + case U_LOGGING_RAW: break; 97 + default: break; 98 + } 99 + 100 + if (level != U_LOGGING_RAW && func != NULL) { 101 + printed = sprintf_s(buf + printed, remainingBuf - printed, 102 + "[%s] ", func); 103 + } 104 + return printed; 105 + } 106 + 107 + void 108 + u_log(const char *file, 109 + int line, 110 + const char *func, 111 + enum u_logging_level level, 112 + const char *format, 113 + ...) 114 + { 115 + char buf[16384] = {0}; 116 + 117 + int remainingBuffer = sizeof(buf) - 2; 118 + int printed = print_prefix(remainingBuffer, buf, func, level); 119 + 120 + va_list args; 121 + va_start(args, format); 122 + printed += 123 + vsprintf_s(buf + printed, remainingBuffer - printed, format, args); 124 + va_end(args); 125 + *(buf + printed) = '\n'; 126 + OutputDebugStringA(buf); 127 + } 128 + 129 + void 130 + u_log_xdev(const char *file, 131 + int line, 132 + const char *func, 133 + enum u_logging_level level, 134 + struct xrt_device *xdev, 135 + const char *format, 136 + ...) 137 + { 138 + char buf[16384] = {0}; 139 + 140 + int remainingBuffer = sizeof(buf) - 1; 141 + int printed = print_prefix(remainingBuffer, buf, func, level); 142 + 143 + va_list args; 144 + va_start(args, format); 145 + vsprintf_s(buf + printed, remainingBuffer - printed, format, args); 146 + va_end(args); 147 + OutputDebugStringA(buf); 148 + } 149 + 67 150 68 151 #else 69 152 /*