namespace content {
+namespace {
+struct TbmBODeleter {
+ void operator()(tbm_bo bo) { tbm_bo_unref(bo); }
+};
+using TbmBOType =
+ std::unique_ptr<std::remove_pointer<tbm_bo>::type, TbmBODeleter>;
+} // namespace
+
BrowserMediaPlayerManagerMojoAdapter::BrowserMediaPlayerManagerMojoAdapter()
: buffer_mgr_(TbmMgrType(tbm_bufmgr_init(-1))) {}
strides.reserve(tbm_handle.key_num);
for (int i = 0; i < tbm_handle.key_num; ++i) {
- fds.emplace_back(base::ScopedFD(
- tbm_bo_export_fd(tbm_bo_import(buffer_mgr_.get(), tbm_handle.key[i]))));
+ auto tbm_bo =
+ TbmBOType(tbm_bo_import(buffer_mgr_.get(), tbm_handle.key[i]));
+ fds.emplace_back(base::ScopedFD(tbm_bo_export_fd(tbm_bo.get())));
strides.push_back(static_cast<uint64_t>(tbm_handle.strides[i]));
}
handle->fds = std::move(fds);