// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/exo/wayland/test/test_buffer.h"
#include "base/check_op.h"
namespace exo::wayland::test {
namespace {
wl_buffer_listener buffer_listener = {TestBuffer::OnRelease};
} // namespace
TestBuffer::TestBuffer(
std::unique_ptr<wl_buffer, decltype(&wl_buffer_destroy)> resource)
: resource_(std::move(resource)) {}
TestBuffer::~TestBuffer() = default;
void TestBuffer::SetListener(BufferListener* listener) {
DCHECK(!listener_);
DCHECK(listener);
listener_ = listener;
wl_buffer_add_listener(resource_.get(), &buffer_listener, this);
}
// static
void TestBuffer::OnRelease(void* data, wl_buffer* resource) {
TestBuffer* buffer = static_cast<TestBuffer*>(data);
DCHECK_EQ(buffer->resource(), resource);
DCHECK(buffer->listener_);
buffer->listener_->OnRelease(resource);
}
} // namespace exo::wayland::test