blob: 49c28e0cb1f7dedfc620be6a1298b70a21d96fba [file]
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
#include "FenceUtils.h"
#include <vector>
#include <common/trace.h>
namespace android {
sp<Fence> FenceMerger::waitAndGetFence(const char* name) {
SFTRACE_FORMAT("FenceMerger::waitAndGetFence for %s", name);
if (mFenceFutureList.empty()) {
return mFence;
}
for (auto& future : mFenceFutureList) {
mergeFence(name, future.get().value_or(Fence::NO_FENCE), mFence);
}
mFenceFutureList.clear();
return mFence;
}
void FenceMerger::addFuture(ftl::Future<FenceResult>&& future) {
mFenceFutureList.emplace_back(std::move(future));
}
void FenceMerger::addFence(const char* name, sp<Fence> fence) {
mergeFence(name, std::move(fence), mFence);
}
const sp<Fence>& FenceMerger::getFence() const {
return mFence;
}
} // namespace android