/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "GrGLSemaphore.h"

#include "GrGLGpu.h"

GrGLSemaphore::GrGLSemaphore(GrGLGpu* gpu, bool isOwned)
        : INHERITED(gpu), fSync(0), fIsOwned(isOwned) {
    isOwned ? this->registerWithCache(SkBudgeted::kNo)
            : this->registerWithCacheWrapped(GrWrapCacheable::kNo);
}

void GrGLSemaphore::onRelease() {
    if (fSync && fIsOwned) {
        static_cast<const GrGLGpu*>(this->getGpu())->deleteSync(fSync);
    }
    fSync = 0;
    INHERITED::onRelease();
}

void GrGLSemaphore::onAbandon() {
    fSync = 0;
    INHERITED::onAbandon();
}