This commit is contained in:
Mathias Agopian
2023-12-13 23:15:53 -08:00
committed by Benjamin Doherty
parent aae48c1121
commit c81ece5c3c
4 changed files with 24 additions and 29 deletions

View File

@@ -176,7 +176,7 @@ bool GLSLTools::analyzeComputeShader(const std::string& shaderCode,
bool const ok = tShader.parse(&DefaultTBuiltInResource, version, false, msg);
if (!ok) {
utils::slog.e << "ERROR: Unable to parse compute shader:" << utils::io::endl;
utils::slog.e << tShader.getInfoLog() << utils::io::flush;
utils::slog.e << tShader.getInfoLog() << utils::io::endl;
return false;
}
@@ -214,7 +214,7 @@ std::optional<GLSLTools::FragmentShaderInfo> GLSLTools::analyzeFragmentShader(
bool const ok = tShader.parse(&DefaultTBuiltInResource, version, false, msg);
if (!ok) {
utils::slog.e << "ERROR: Unable to parse fragment shader:" << utils::io::endl;
utils::slog.e << tShader.getInfoLog() << utils::io::flush;
utils::slog.e << tShader.getInfoLog() << utils::io::endl;
return std::nullopt;
}
@@ -294,7 +294,7 @@ bool GLSLTools::analyzeVertexShader(const std::string& shaderCode,
bool const ok = tShader.parse(&DefaultTBuiltInResource, version, false, msg);
if (!ok) {
utils::slog.e << "ERROR: Unable to parse vertex shader" << utils::io::endl;
utils::slog.e << tShader.getInfoLog() << utils::io::flush;
utils::slog.e << tShader.getInfoLog() << utils::io::endl;
return false;
}

View File

@@ -29,7 +29,7 @@ namespace utils::io {
struct ostream_;
class UTILS_PUBLIC ostream : protected utils::PrivateImplementation<ostream_> {
class UTILS_PUBLIC ostream : protected utils::PrivateImplementation<ostream_> {
friend struct ostream_;
public:
@@ -132,8 +132,7 @@ inline ostream& operator<<(ostream& stream, const VECTOR<T>& v) {
inline ostream& hex(ostream& s) noexcept { return s.hex(); }
inline ostream& dec(ostream& s) noexcept { return s.dec(); }
inline ostream& endl(ostream& s) noexcept { s << '\n'; return s.flush(); }
inline ostream& flush(ostream& s) noexcept { return s.flush(); }
inline ostream& endl(ostream& s) noexcept { return flush(s << '\n'); }
} // namespace utils::io

View File

@@ -46,30 +46,22 @@ public:
ostream& flush() noexcept override;
private:
Priority mPriority;
const Priority mPriority;
};
ostream& LogStream::flush() noexcept {
std::lock_guard lock(mImpl->mLock);
std::lock_guard const lock(mImpl->mLock);
Buffer& buf = getBuffer();
#ifdef __ANDROID__
int prio = ANDROID_LOG_UNKNOWN;
switch (mPriority) {
case LOG_DEBUG:
__android_log_write(ANDROID_LOG_DEBUG, UTILS_LOG_TAG, buf.get());
break;
case LOG_ERROR:
__android_log_write(ANDROID_LOG_ERROR, UTILS_LOG_TAG, buf.get());
break;
case LOG_WARNING:
__android_log_write(ANDROID_LOG_WARN, UTILS_LOG_TAG, buf.get());
break;
case LOG_INFO:
__android_log_write(ANDROID_LOG_INFO, UTILS_LOG_TAG, buf.get());
break;
case LOG_VERBOSE:
__android_log_write(ANDROID_LOG_VERBOSE, UTILS_LOG_TAG, buf.get());
break;
case LOG_DEBUG: prio = ANDROID_LOG_DEBUG; break;
case LOG_ERROR: prio = ANDROID_LOG_ERROR; break;
case LOG_WARNING: prio = ANDROID_LOG_WARN; break;
case LOG_INFO: prio = ANDROID_LOG_INFO; break;
case LOG_VERBOSE: prio = ANDROID_LOG_VERBOSE; break;
}
__android_log_write(prio, UTILS_LOG_TAG, buf.get());
#elif defined(__EMSCRIPTEN__)
switch (mPriority) {
case LOG_DEBUG:

View File

@@ -35,6 +35,10 @@ namespace utils::io {
ostream::~ostream() = default;
ostream& flush(ostream& s) noexcept {
return s.flush();
}
ostream::Buffer& ostream::getBuffer() noexcept {
return mImpl->mData;
}
@@ -69,12 +73,12 @@ ostream& ostream::print(const char* format, ...) noexcept {
// figure out how much size to we need
va_start(args0, format);
va_copy(args1, args0);
ssize_t s = vsnprintf(nullptr, 0, format, args0);
ssize_t const s = vsnprintf(nullptr, 0, format, args0);
va_end(args0);
{ // scope for the lock
std::lock_guard lock(mImpl->mLock);
std::lock_guard const lock(mImpl->mLock);
Buffer& buf = getBuffer();
@@ -205,14 +209,14 @@ ostream::Buffer::~Buffer() noexcept {
void ostream::Buffer::advance(ssize_t n) noexcept {
if (n > 0) {
size_t written = n < size ? size_t(n) : size;
size_t const written = n < size ? size_t(n) : size;
curr += written;
size -= written;
}
}
void ostream::Buffer::reserve(size_t newSize) noexcept {
size_t offset = curr - buffer;
size_t const offset = curr - buffer;
if (buffer == nullptr) {
buffer = (char*)malloc(newSize);
} else {
@@ -237,8 +241,8 @@ void ostream::Buffer::reset() noexcept {
std::pair<char*, size_t> ostream::Buffer::grow(size_t s) noexcept {
if (UTILS_UNLIKELY(size < s)) {
size_t used = curr - buffer;
size_t newCapacity = std::max(size_t(32), used + (s * 3 + 1) / 2); // 32 bytes minimum
size_t const used = curr - buffer;
size_t const newCapacity = std::max(size_t(32), used + (s * 3 + 1) / 2); // 32 bytes minimum
reserve(newCapacity);
assert(size >= s);
}