Skip to content
This repository has been archived by the owner on Aug 4, 2022. It is now read-only.

Commit

Permalink
Bug 1466613 - Add a gfxCriticalNote to provide more details on replay…
Browse files Browse the repository at this point in the history
… failure. r=jrmuizel

Differential Revision: https://phabricator.services.mozilla.com/D8257
  • Loading branch information
staktrace committed Nov 13, 2018
1 parent acdd60f commit c249bf6
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 1 deletion.
6 changes: 6 additions & 0 deletions gfx/2d/InlineTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,21 @@ InlineTranslator::TranslateRecording(char *aData, size_t aLen)
uint32_t magicInt;
ReadElement(reader, magicInt);
if (magicInt != mozilla::gfx::kMagicInt) {
mError = "Magic";
return false;
}

uint16_t majorRevision;
ReadElement(reader, majorRevision);
if (majorRevision != kMajorRevision) {
mError = "Major";
return false;
}

uint16_t minorRevision;
ReadElement(reader, minorRevision);
if (minorRevision > kMinorRevision) {
mError = "Minor";
return false;
}

Expand All @@ -78,16 +81,19 @@ InlineTranslator::TranslateRecording(char *aData, size_t aLen)
[&] (RecordedEvent *recordedEvent) {
// Make sure that the whole event was read from the stream successfully.
if (!reader.good()) {
mError = " READ";
return false;
}

if (!recordedEvent->PlayEvent(this)) {
mError = " PLAY";
return false;
}

return true;
});
if (!success) {
mError = RecordedEvent::GetEventName(static_cast<RecordedEvent::EventType>(eventType)) + mError;
return false;
}

Expand Down
3 changes: 3 additions & 0 deletions gfx/2d/InlineTranslator.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#define mozilla_layout_InlineTranslator_h

#include <istream>
#include <string>

#include "mozilla/gfx/2D.h"
#include "mozilla/gfx/Filters.h"
Expand Down Expand Up @@ -184,10 +185,12 @@ class InlineTranslator : public Translator
mozilla::gfx::DrawTarget* GetReferenceDrawTarget() final { return mBaseDT; }

void* GetFontContext() final { return mFontContext; }
std::string GetError() { return mError; }

private:
RefPtr<DrawTarget> mBaseDT;
void* mFontContext;
std::string mError;

nsRefPtrHashtable<nsPtrHashKey<void>, DrawTarget> mDrawTargets;
nsRefPtrHashtable<nsPtrHashKey<void>, Path> mPaths;
Expand Down
5 changes: 4 additions & 1 deletion gfx/webrender_bindings/Moz2DImageRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,10 @@ static bool Moz2DRenderCallback(const Range<const uint8_t> aBlob,

Range<const uint8_t> blob(aBlob.begin() + offset, aBlob.begin() + end);
ret = translator.TranslateRecording((char*)blob.begin().get(), blob.length());
MOZ_RELEASE_ASSERT(ret);
if (!ret) {
gfxCriticalNote << "Replay failure: " << translator.GetError();
MOZ_RELEASE_ASSERT(false);
}
offset = extra_end;
}

Expand Down

0 comments on commit c249bf6

Please sign in to comment.