blob: ee75ae6fc9d7b8fb02eb35d6ccdda5112ac08741 [file]
// Copyright 2026 The Fuchsia 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 "src/ui/scenic/lib/utils/check_is_on_thread.h"
#include <lib/async/default.h>
namespace utils {
namespace {
async_dispatcher_t* g_main_dispatcher = nullptr;
async_dispatcher_t* g_input_dispatcher = nullptr;
} // namespace
void CheckIsOnMainThread() { FX_DCHECK(g_main_dispatcher == async_get_default_dispatcher()); }
void CheckIsOnInputThread() { FX_DCHECK(g_input_dispatcher == async_get_default_dispatcher()); }
utils::ScopedThreadDispatcherSetter::ScopedThreadDispatcherSetter(async_dispatcher_t* main,
async_dispatcher_t* input) {
FX_DCHECK(main != nullptr);
FX_DCHECK(input != nullptr);
FX_DCHECK(g_main_dispatcher == nullptr);
FX_DCHECK(g_input_dispatcher == nullptr);
g_main_dispatcher = main;
g_input_dispatcher = input;
}
utils::ScopedThreadDispatcherSetter::~ScopedThreadDispatcherSetter() {
FX_DCHECK(g_main_dispatcher != nullptr);
FX_DCHECK(g_input_dispatcher != nullptr);
g_main_dispatcher = nullptr;
g_input_dispatcher = nullptr;
}
} // namespace utils