/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrGLSemaphore_DEFINED #define GrGLSemaphore_DEFINED #include "include/gpu/GrBackendSemaphore.h" #include "include/private/GrTypesPriv.h" #include "src/gpu/GrSemaphore.h" class GrGLGpu; class GrGLSemaphore : public GrSemaphore { public: static std::unique_ptr Make(GrGLGpu* gpu, bool isOwned) { return std::unique_ptr(new GrGLSemaphore(gpu, isOwned)); } static std::unique_ptr MakeWrapped(GrGLGpu* gpu, GrGLsync sync, GrWrapOwnership ownership) { auto sema = std::unique_ptr( new GrGLSemaphore(gpu, kBorrow_GrWrapOwnership != ownership)); sema->setSync(sync); return sema; } ~GrGLSemaphore() override; GrGLsync sync() const { return fSync; } void setSync(const GrGLsync& sync) { fSync = sync; } GrBackendSemaphore backendSemaphore() const override { GrBackendSemaphore backendSemaphore; backendSemaphore.initGL(fSync); return backendSemaphore; } private: GrGLSemaphore(GrGLGpu* gpu, bool isOwned); void setIsOwned() override { fIsOwned = true; } GrGLGpu* fGpu; GrGLsync fSync; bool fIsOwned; using INHERITED = GrSemaphore; }; #endif