blob: 94e35fc84f2622fd1cdd823f1f2a21dd84b5b5a3 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "impeller/base/validation.h"
#include <atomic>
#include "flutter/fml/logging.h"
namespace impeller {
static std::atomic_int32_t sValidationLogsDisabledCount = 0;
ScopedValidationDisable::ScopedValidationDisable() {
sValidationLogsDisabledCount++;
}
ScopedValidationDisable::~ScopedValidationDisable() {
sValidationLogsDisabledCount--;
}
ValidationLog::ValidationLog() = default;
ValidationLog::~ValidationLog() {
if (sValidationLogsDisabledCount <= 0) {
#if (FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_RELEASE)
FML_LOG(ERROR) << stream_.str();
ImpellerValidationBreak();
#else
FML_LOG(FATAL) << stream_.str();
#endif
}
}
std::ostream& ValidationLog::GetStream() {
return stream_;
}
void ImpellerValidationBreak() {
// Nothing to do. Exists for the debugger.
FML_LOG(ERROR) << "Break on " << __FUNCTION__
<< " to inspect point of failure.";
}
} // namespace impeller