blob: 868536253d7acfb6adf57328c109f4895a7727f6 [file]
/*
* Copyright 2026 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/utils/SkLogHandler.h"
#include "include/core/SkRefCnt.h"
#include "include/private/SkMacros.h"
#include <atomic>
static std::atomic<SkLogHandler*> gUserLogHandler{nullptr};
bool SkLogHandler::SetInstance(sk_sp<SkLogHandler> handler) {
SkLogHandler* h = handler.release();
SkLogHandler* expected = nullptr;
if (!gUserLogHandler.compare_exchange_strong(expected, h)) {
SkSafeUnref(h);
return false;
}
SK_INTENTIONALLY_LEAKED(h);
return true;
}
sk_sp<SkLogHandler> SkLogHandler::GetInstance() {
return sk_ref_sp(gUserLogHandler.load(std::memory_order_acquire));
}