| Index: src/gpu/GrContext.cpp
|
| diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
|
| index a691da7de326360c8c69dd2f81c6c0b68d38235c..dfbe2fc46ad1ec1028f3f14642c1629f0a42c9bd 100644
|
| --- a/src/gpu/GrContext.cpp
|
| +++ b/src/gpu/GrContext.cpp
|
| @@ -14,6 +14,7 @@
|
| #include "GrCaps.h"
|
| #include "GrContextOptions.h"
|
| #include "GrDefaultGeoProcFactory.h"
|
| +#include "GrDrawingManager.h"
|
| #include "GrDrawContext.h"
|
| #include "GrDrawTarget.h"
|
| #include "GrGpuResource.h"
|
| @@ -53,18 +54,14 @@
|
| #include "effects/GrSingleTextureEffect.h"
|
|
|
| #define ASSERT_OWNED_RESOURCE(R) SkASSERT(!(R) || (R)->getContext() == this)
|
| -#define RETURN_IF_ABANDONED if (fDrawingMgr.abandoned()) { return; }
|
| -#define RETURN_FALSE_IF_ABANDONED if (fDrawingMgr.abandoned()) { return false; }
|
| -#define RETURN_NULL_IF_ABANDONED if (fDrawingMgr.abandoned()) { return nullptr; }
|
| +#define RETURN_IF_ABANDONED if (fDrawingManager->abandoned()) { return; }
|
| +#define RETURN_FALSE_IF_ABANDONED if (fDrawingManager->abandoned()) { return false; }
|
| +#define RETURN_NULL_IF_ABANDONED if (fDrawingManager->abandoned()) { return nullptr; }
|
|
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| -void GrContext::DrawingMgr::init(GrContext* context) {
|
| - fContext = context;
|
| -}
|
| -
|
| -void GrContext::DrawingMgr::cleanup() {
|
| +void GrDrawingManager::cleanup() {
|
| for (int i = 0; i < fDrawTargets.count(); ++i) {
|
| fDrawTargets[i]->unref();
|
| }
|
| @@ -82,29 +79,29 @@ void GrContext::DrawingMgr::cleanup() {
|
| }
|
| }
|
|
|
| -GrContext::DrawingMgr::~DrawingMgr() {
|
| +GrDrawingManager::~GrDrawingManager() {
|
| this->cleanup();
|
| }
|
|
|
| -void GrContext::DrawingMgr::abandon() {
|
| +void GrDrawingManager::abandon() {
|
| fAbandoned = true;
|
| this->cleanup();
|
| }
|
|
|
| -void GrContext::DrawingMgr::reset() {
|
| +void GrDrawingManager::reset() {
|
| for (int i = 0; i < fDrawTargets.count(); ++i) {
|
| fDrawTargets[i]->reset();
|
| }
|
| }
|
|
|
| -void GrContext::DrawingMgr::flush() {
|
| +void GrDrawingManager::flush() {
|
| for (int i = 0; i < fDrawTargets.count(); ++i) {
|
| fDrawTargets[i]->flush();
|
| }
|
| }
|
|
|
| -GrTextContext* GrContext::DrawingMgr::textContext(const SkSurfaceProps& props,
|
| - GrRenderTarget* rt) {
|
| +GrTextContext* GrDrawingManager::textContext(const SkSurfaceProps& props,
|
| + GrRenderTarget* rt) {
|
| if (this->abandoned()) {
|
| return nullptr;
|
| }
|
| @@ -131,14 +128,14 @@ GrTextContext* GrContext::DrawingMgr::textContext(const SkSurfaceProps& props,
|
| return fTextContexts[props.pixelGeometry()][useDIF];
|
| }
|
|
|
| -GrDrawTarget* GrContext::DrawingMgr::newDrawTarget(GrRenderTarget* rt) {
|
| +GrDrawTarget* GrDrawingManager::newDrawTarget(GrRenderTarget* rt) {
|
| SkASSERT(fContext);
|
|
|
| // When MDB is disabled we always just return the single drawTarget
|
| #ifndef ENABLE_MDB
|
| if (fDrawTargets.count()) {
|
| SkASSERT(fDrawTargets.count() == 1);
|
| - // DrawingMgr gets the creation ref - this ref is for the caller
|
| + // DrawingManager gets the creation ref - this ref is for the caller
|
| return SkRef(fDrawTargets[0]);
|
| }
|
| #endif
|
| @@ -147,17 +144,17 @@ GrDrawTarget* GrContext::DrawingMgr::newDrawTarget(GrRenderTarget* rt) {
|
|
|
| *fDrawTargets.append() = dt;
|
|
|
| - // DrawingMgr gets the creation ref - this ref is for the caller
|
| + // DrawingManager gets the creation ref - this ref is for the caller
|
| return SkRef(dt);
|
| }
|
|
|
| -GrDrawContext* GrContext::DrawingMgr::drawContext(GrRenderTarget* rt,
|
| - const SkSurfaceProps* surfaceProps) {
|
| +GrDrawContext* GrDrawingManager::drawContext(GrRenderTarget* rt,
|
| + const SkSurfaceProps* surfaceProps) {
|
| if (this->abandoned()) {
|
| return nullptr;
|
| }
|
|
|
| - return new GrDrawContext(fContext, rt, surfaceProps);
|
| + return new GrDrawContext(this, rt, surfaceProps);
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -222,7 +219,7 @@ void GrContext::initCommon() {
|
|
|
| fDidTestPMConversions = false;
|
|
|
| - fDrawingMgr.init(this);
|
| + fDrawingManager.reset(new GrDrawingManager(this));
|
|
|
| // GrBatchFontCache will eventually replace GrFontCache
|
| fBatchFontCache = new GrBatchFontCache(this);
|
| @@ -238,7 +235,7 @@ GrContext::~GrContext() {
|
|
|
| this->flush();
|
|
|
| - fDrawingMgr.cleanup();
|
| + fDrawingManager->cleanup();
|
|
|
| for (int i = 0; i < fCleanUpData.count(); ++i) {
|
| (*fCleanUpData[i].fFunc)(this, fCleanUpData[i].fInfo);
|
| @@ -267,7 +264,7 @@ void GrContext::abandonContext() {
|
| SkSafeSetNull(fPathRendererChain);
|
| SkSafeSetNull(fSoftwarePathRenderer);
|
|
|
| - fDrawingMgr.abandon();
|
| + fDrawingManager->abandon();
|
|
|
| fBatchFontCache->freeAll();
|
| fLayerCache->freeAll();
|
| @@ -327,9 +324,9 @@ void GrContext::flush(int flagsBitfield) {
|
| RETURN_IF_ABANDONED
|
|
|
| if (kDiscard_FlushBit & flagsBitfield) {
|
| - fDrawingMgr.reset();
|
| + fDrawingManager->reset();
|
| } else {
|
| - fDrawingMgr.flush();
|
| + fDrawingManager->flush();
|
| }
|
| fResourceCache->notifyFlushOccurred();
|
| fFlushToReduceCacheSize = false;
|
| @@ -717,6 +714,15 @@ int GrContext::getRecommendedSampleCount(GrPixelConfig config,
|
| chosenSampleCount : 0;
|
| }
|
|
|
| +
|
| +GrDrawContext* GrContext::drawContext(GrRenderTarget* rt, const SkSurfaceProps* surfaceProps) {
|
| + return fDrawingManager->drawContext(rt, surfaceProps);
|
| +}
|
| +
|
| +bool GrContext::abandoned() const {
|
| + return fDrawingManager->abandoned();
|
| +}
|
| +
|
| namespace {
|
| void test_pm_conversions(GrContext* ctx, int* pmToUPMValue, int* upmToPMValue) {
|
| GrConfigConversionEffect::PMConversion pmToUPM;
|
|
|