Skip to content

Commit

Permalink
Bug 1328932: Back out the diagnostic patch from bug 1318283. r=gw280
Browse files Browse the repository at this point in the history
MozReview-Commit-ID: KRyhWLBuHWM

--HG--
extra : rebase_source : 4661026584981fa53d971fa5e694335d27e3e525
  • Loading branch information
msreckovic committed Jan 17, 2017
1 parent 14b98b5 commit 533dce0
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 120 deletions.
10 changes: 3 additions & 7 deletions dom/canvas/CanvasRenderingContext2D.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ class AdjustedTarget
explicit AdjustedTarget(CanvasRenderingContext2D* aCtx,
const gfx::Rect *aBounds = nullptr)
{
mTarget = (DrawTarget*)aCtx->mTarget;
mTarget = aCtx->mTarget;

// All rects in this function are in the device space of ctx->mTarget.

Expand Down Expand Up @@ -1719,7 +1719,7 @@ CanvasRenderingContext2D::SetErrorState()
gCanvasAzureMemoryUsed -= mWidth * mHeight * 4;
}

mTarget = (DrawTarget*)sErrorTarget;
mTarget = sErrorTarget;
mBufferProvider = nullptr;

// clear transforms, clips, etc.
Expand Down Expand Up @@ -1974,7 +1974,7 @@ CanvasRenderingContext2D::InitializeWithDrawTarget(nsIDocShell* aShell,
IntSize size = aTarget->GetSize();
SetDimensions(size.width, size.height);

mTarget = (DrawTarget*)aTarget;
mTarget = aTarget;
mBufferProvider = new PersistentBufferProviderBasic(aTarget);

if (mTarget->GetBackendType() == gfx::BackendType::CAIRO) {
Expand Down Expand Up @@ -3153,8 +3153,6 @@ CanvasRenderingContext2D::BeginPath()
void
CanvasRenderingContext2D::Fill(const CanvasWindingRule& aWinding)
{
auto autoNotNull = mTarget.MakeAuto();

EnsureUserSpacePath(aWinding);

if (!mPath) {
Expand Down Expand Up @@ -4764,8 +4762,6 @@ CanvasRenderingContext2D::DrawImage(const CanvasImageSource& aImage,
uint8_t aOptional_argc,
ErrorResult& aError)
{
auto autoNotNull = mTarget.MakeAuto();

if (mDrawObserver) {
mDrawObserver->DidDrawCall(CanvasDrawObserver::DrawCallType::DrawImage);
}
Expand Down
114 changes: 1 addition & 113 deletions dom/canvas/CanvasRenderingContext2D.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,118 +47,6 @@ class TextMetrics;
class CanvasFilterChainObserver;
class CanvasPath;

template<class T>
struct MaybeNotNull
{
MOZ_IMPLICIT MaybeNotNull() : mWrapped(nullptr), mEnsure(false) {}
MOZ_IMPLICIT MaybeNotNull(T&& aValue) : mWrapped(aValue), mEnsure(false) {}
~MaybeNotNull() {}

void BeginNotNull() {
mEnsure = true;
}

void EndNotNull() {
mEnsure = false;
}

void MaybeCheckWrapped() {
if (mEnsure && !mWrapped) {
MOZ_CRASH("GFX: Setting mTarget to nullptr?");
}
}

typename T::element_type* operator->() const {
return mWrapped.get();
}

already_AddRefed<typename T::element_type> forget() {
already_AddRefed<typename T::element_type>&& ret = mWrapped.forget();
MaybeCheckWrapped();
return Move(ret);
}

MOZ_IMPLICIT operator bool () {
return mWrapped;
}

operator T&() {
return mWrapped;
}

operator typename T::element_type*() {
return mWrapped.get();
}

bool operator!() const {
return !mWrapped;
}

MaybeNotNull& operator=(decltype(nullptr)) {
mWrapped = nullptr;
MaybeCheckWrapped();
return *this;
}

template<class U>
MaybeNotNull& operator=(U& aOther){
mWrapped = aOther;
MaybeCheckWrapped();
return *this;
}

template<class U>
MaybeNotNull& operator=(U&& aOther){
mWrapped = aOther;
MaybeCheckWrapped();
return *this;
}

struct AutoNotNull
{
MOZ_IMPLICIT AutoNotNull(MaybeNotNull* aMaybe) : mMaybe(aMaybe)
{
mMaybe->BeginNotNull();
}

~AutoNotNull()
{
mMaybe->EndNotNull();
}

MaybeNotNull* mMaybe;
};

AutoNotNull MakeAuto()
{
return AutoNotNull(this);
}

T mWrapped;

bool mEnsure;
};

template<class T, class U>
bool operator!=(const MaybeNotNull<T>& aT, const U& aU) {
return aT.mWrapped != aU;
}

template<class T, class U>
bool operator==(const MaybeNotNull<T>& aT, const U& aU) {
return aT.mWrapped == aU;
}

template<class T, class U>
bool operator||(const MaybeNotNull<T>& aT, const U& aU) {
return aT.mWrapped || aU;
}

template<class T, class U>
bool operator||(const T& aT, const MaybeNotNull<U>& aU) {
return aT || aU.mWrapped;
}

extern const mozilla::gfx::Float SIGMA_MAX;

template<typename T> class Optional;
Expand Down Expand Up @@ -883,7 +771,7 @@ class CanvasRenderingContext2D final :
// This is created lazily so it is necessary to call EnsureTarget before
// accessing it. In the event of an error it will be equal to
// sErrorTarget.
MaybeNotNull<RefPtr<mozilla::gfx::DrawTarget>> mTarget;
RefPtr<mozilla::gfx::DrawTarget> mTarget;

RefPtr<mozilla::layers::PersistentBufferProvider> mBufferProvider;

Expand Down

0 comments on commit 533dce0

Please sign in to comment.