// Copyright 2017 The Chromium 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 "ui/gfx/gpu_fence_handle.h" #include "base/logging.h" #if defined(OS_POSIX) #include #include "base/posix/eintr_wrapper.h" #endif namespace gfx { GpuFenceHandle::GpuFenceHandle() : type(GpuFenceHandleType::kEmpty) {} GpuFenceHandle::GpuFenceHandle(const GpuFenceHandle& other) = default; GpuFenceHandle& GpuFenceHandle::operator=(const GpuFenceHandle& other) = default; GpuFenceHandle::~GpuFenceHandle() {} GpuFenceHandle CloneHandleForIPC(const GpuFenceHandle& source_handle) { switch (source_handle.type) { case GpuFenceHandleType::kEmpty: NOTREACHED(); return source_handle; case GpuFenceHandleType::kAndroidNativeFenceSync: { gfx::GpuFenceHandle handle; #if defined(OS_POSIX) handle.type = GpuFenceHandleType::kAndroidNativeFenceSync; int duped_handle = HANDLE_EINTR(dup(source_handle.native_fd.fd)); if (duped_handle < 0) return GpuFenceHandle(); handle.native_fd = base::FileDescriptor(duped_handle, true); #endif return handle; } } NOTREACHED(); return gfx::GpuFenceHandle(); } } // namespace gfx