blob: 683b852b5021176ba09b47c788c841a42ca4cefe [file] [log] [blame] [edit]
// 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/renderer/context.h"
#include <mutex>
#include <utility>
namespace impeller {
ImpellerContextFuture::ImpellerContextFuture(
std::future<std::shared_ptr<impeller::Context>> context)
: future_(std::move(context)) {}
std::shared_ptr<impeller::Context> ImpellerContextFuture::GetContext() {
std::scoped_lock<std::mutex> lock(mutex_);
if (!did_wait_ && future_.valid()) {
context_ = future_.get();
did_wait_ = true;
}
return context_;
}
Context::~Context() = default;
Context::Context(const Flags& flags) : flags_(flags) {}
bool Context::UpdateOffscreenLayerPixelFormat(PixelFormat format) {
return false;
}
bool Context::EnqueueCommandBuffer(
std::shared_ptr<CommandBuffer> command_buffer) {
return GetCommandQueue()->Submit({std::move(command_buffer)}).ok();
}
bool Context::FlushCommandBuffers() {
return true;
}
std::shared_ptr<const IdleWaiter> Context::GetIdleWaiter() const {
return nullptr;
}
void Context::ResetThreadLocalState() const {
// Nothing to do.
}
bool Context::AddTrackingFence(const std::shared_ptr<Texture>& texture) const {
return false;
}
bool Context::SubmitOnscreen(std::shared_ptr<CommandBuffer> cmd_buffer) {
return EnqueueCommandBuffer(std::move(cmd_buffer));
}
} // namespace impeller