diff options
author | John Reck <jreck@google.com> | 2018-12-13 16:40:14 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2018-12-14 14:07:18 -0800 |
commit | 283bb46846ad161045efc4650d3cbc40abf5f24b (patch) | |
tree | 732e431c7f704282c3ae5a669f22999520f2507e /libs/hwui/pipeline/skia/VkFunctorDrawable.cpp | |
parent | 832c17330e2d0ce52f1471404ef539a63f120ca2 (diff) |
New WebViewFunctor API
Should function alongside existing functor API.
Bug: 120997728
Test: hwuiunit passes
Change-Id: I8f6143d0be1111431b55016f34de319f6b8c8910
Diffstat (limited to 'libs/hwui/pipeline/skia/VkFunctorDrawable.cpp')
-rw-r--r-- | libs/hwui/pipeline/skia/VkFunctorDrawable.cpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp index 71ad5e17301a..156f74a611a7 100644 --- a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp +++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp @@ -17,23 +17,21 @@ #include "VkFunctorDrawable.h" #include <private/hwui/DrawVkInfo.h> -#include "thread/ThreadBase.h" -#include "utils/TimeUtils.h" #include <GrBackendDrawableInfo.h> -#include <thread> +#include <SkImage.h> #include <utils/Color.h> #include <utils/Trace.h> #include <utils/TraceUtils.h> -#include <SkImage.h> #include <vk/GrVkTypes.h> +#include <thread> +#include "thread/ThreadBase.h" +#include "utils/TimeUtils.h" namespace android { namespace uirenderer { namespace skiapipeline { -VkFunctorDrawHandler::VkFunctorDrawHandler(Functor *functor) - : INHERITED() - , mFunctor(functor) {} +VkFunctorDrawHandler::VkFunctorDrawHandler(Functor* functor) : INHERITED(), mFunctor(functor) {} VkFunctorDrawHandler::~VkFunctorDrawHandler() { // TODO(cblume) Fill in the DrawVkInfo parameters. @@ -55,14 +53,12 @@ void VkFunctorDrawHandler::draw(const GrBackendDrawableInfo& info) { (*mFunctor)(DrawVkInfo::kModeComposite, &draw_vk_info); } -VkFunctorDrawable::VkFunctorDrawable(Functor* functor, GlFunctorLifecycleListener* listener, - SkCanvas* canvas) - : FunctorDrawable(functor, listener, canvas) {} - -VkFunctorDrawable::~VkFunctorDrawable() = default; - -void VkFunctorDrawable::syncFunctor() const { - (*mFunctor)(DrawVkInfo::kModeSync, nullptr); +VkFunctorDrawable::~VkFunctorDrawable() { + if (auto lp = std::get_if<LegacyFunctor>(&mAnyFunctor)) { + if (lp->listener) { + lp->listener->onGlFunctorReleased(lp->functor); + } + } } void VkFunctorDrawable::onDraw(SkCanvas* /*canvas*/) { @@ -71,12 +67,17 @@ void VkFunctorDrawable::onDraw(SkCanvas* /*canvas*/) { } std::unique_ptr<FunctorDrawable::GpuDrawHandler> VkFunctorDrawable::onSnapGpuDrawHandler( - GrBackendApi backendApi, const SkMatrix& matrix) { + GrBackendApi backendApi, const SkMatrix& matrix) { if (backendApi != GrBackendApi::kVulkan) { return nullptr; } - std::unique_ptr<VkFunctorDrawHandler> draw(new VkFunctorDrawHandler(mFunctor)); - return std::move(draw); + std::unique_ptr<VkFunctorDrawHandler> draw; + if (mAnyFunctor.index() == 0) { + LOG_ALWAYS_FATAL("Not implemented"); + return nullptr; + } else { + return std::make_unique<VkFunctorDrawHandler>(std::get<1>(mAnyFunctor).functor); + } } } // namespace skiapipeline |