mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1027496 - Stream display list and layers dump. r=mattwoodrow
This commit is contained in:
parent
7acb204216
commit
2c957e7952
@ -12,52 +12,52 @@
|
||||
using namespace mozilla::layers;
|
||||
|
||||
void
|
||||
TexturedEffect::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
TexturedEffect::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("%s (0x%p)", Name(), this);
|
||||
AppendToString(aTo, mTextureCoords, " [texture-coords=", "]");
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("%s (0x%p)", Name(), this).get();
|
||||
AppendToString(aStream, mTextureCoords, " [texture-coords=", "]");
|
||||
|
||||
if (mPremultiplied) {
|
||||
aTo += " [premultiplied]";
|
||||
aStream << " [premultiplied]";
|
||||
} else {
|
||||
aTo += " [not-premultiplied]";
|
||||
aStream << " [not-premultiplied]";
|
||||
}
|
||||
|
||||
AppendToString(aTo, mFilter, " [filter=", "]");
|
||||
AppendToString(aStream, mFilter, " [filter=", "]");
|
||||
}
|
||||
|
||||
void
|
||||
EffectMask::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
EffectMask::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("EffectMask (0x%p)", this);
|
||||
AppendToString(aTo, mSize, " [size=", "]");
|
||||
AppendToString(aTo, mMaskTransform, " [mask-transform=", "]");
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("EffectMask (0x%p)", this).get();
|
||||
AppendToString(aStream, mSize, " [size=", "]");
|
||||
AppendToString(aStream, mMaskTransform, " [mask-transform=", "]");
|
||||
|
||||
if (mIs3D) {
|
||||
aTo += " [is-3d]";
|
||||
aStream << " [is-3d]";
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EffectRenderTarget::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
EffectRenderTarget::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
TexturedEffect::PrintInfo(aTo, aPrefix);
|
||||
aTo += nsPrintfCString(" [render-target=%p]", mRenderTarget.get());
|
||||
TexturedEffect::PrintInfo(aStream, aPrefix);
|
||||
aStream << nsPrintfCString(" [render-target=%p]", mRenderTarget.get()).get();
|
||||
}
|
||||
|
||||
void
|
||||
EffectSolidColor::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
EffectSolidColor::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("EffectSolidColor (0x%p) [color=%x]", this, mColor.ToABGR());
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("EffectSolidColor (0x%p) [color=%x]", this, mColor.ToABGR()).get();
|
||||
}
|
||||
|
||||
void
|
||||
EffectBlendMode::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
EffectBlendMode::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("EffectBlendMode (0x%p) [blendmode=%i]", this, (int)mBlendMode);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("EffectBlendMode (0x%p) [blendmode=%i]", this, (int)mBlendMode).get();
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ struct Effect
|
||||
|
||||
EffectTypes mType;
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix) = 0;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) = 0;
|
||||
|
||||
protected:
|
||||
virtual ~Effect() {}
|
||||
@ -67,7 +67,7 @@ struct TexturedEffect : public Effect
|
||||
{}
|
||||
|
||||
virtual const char* Name() = 0;
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
gfx::Rect mTextureCoords;
|
||||
TextureSource* mTexture;
|
||||
@ -88,7 +88,7 @@ struct EffectMask : public Effect
|
||||
, mMaskTransform(aMaskTransform)
|
||||
{}
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
TextureSource* mMaskTexture;
|
||||
bool mIs3D;
|
||||
@ -104,7 +104,7 @@ struct EffectBlendMode : public Effect
|
||||
{ }
|
||||
|
||||
virtual const char* Name() { return "EffectBlendMode"; }
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
gfx::CompositionOp mBlendMode;
|
||||
};
|
||||
@ -118,7 +118,7 @@ struct EffectRenderTarget : public TexturedEffect
|
||||
{}
|
||||
|
||||
virtual const char* Name() { return "EffectRenderTarget"; }
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
RefPtr<CompositingRenderTarget> mRenderTarget;
|
||||
};
|
||||
@ -167,7 +167,7 @@ struct EffectSolidColor : public Effect
|
||||
, mColor(aColor)
|
||||
{}
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
gfx::Color mColor;
|
||||
};
|
||||
|
@ -82,7 +82,7 @@ public:
|
||||
protected:
|
||||
ImageLayer(LayerManager* aManager, void* aImplData);
|
||||
~ImageLayer();
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
|
||||
nsRefPtr<ImageContainer> mContainer;
|
||||
|
@ -1197,11 +1197,11 @@ LayerManager::BeginTabSwitch()
|
||||
mTabSwitchStart = TimeStamp::Now();
|
||||
}
|
||||
|
||||
static nsACString& PrintInfo(nsACString& aTo, LayerComposite* aLayerComposite);
|
||||
static void PrintInfo(std::stringstream& aStream, LayerComposite* aLayerComposite);
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
template <typename T>
|
||||
void WriteSnapshotLinkToDumpFile(T* aObj, FILE* aFile)
|
||||
void WriteSnapshotLinkToDumpFile(T* aObj, std::stringstream& aStream)
|
||||
{
|
||||
if (!aObj) {
|
||||
return;
|
||||
@ -1209,7 +1209,7 @@ void WriteSnapshotLinkToDumpFile(T* aObj, FILE* aFile)
|
||||
nsCString string(aObj->Name());
|
||||
string.Append('-');
|
||||
string.AppendInt((uint64_t)aObj);
|
||||
fprintf_stderr(aFile, "href=\"javascript:ViewImage('%s')\"", string.BeginReading());
|
||||
aStream << nsPrintfCString("href=\"javascript:ViewImage('%s')\"", string.BeginReading()).get();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
@ -1251,61 +1251,60 @@ void WriteSnapshotToDumpFile(Compositor* aCompositor, DrawTarget* aTarget)
|
||||
#endif
|
||||
|
||||
void
|
||||
Layer::Dump(FILE* aFile, const char* aPrefix, bool aDumpHtml)
|
||||
Layer::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHtml)
|
||||
{
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "<li><a id=\"%p\" ", this);
|
||||
aStream << nsPrintfCString("<li><a id=\"%p\" ", this).get();
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (GetType() == TYPE_CONTAINER || GetType() == TYPE_THEBES) {
|
||||
WriteSnapshotLinkToDumpFile(this, aFile);
|
||||
WriteSnapshotLinkToDumpFile(this, aStream);
|
||||
}
|
||||
#endif
|
||||
fprintf_stderr(aFile, ">");
|
||||
aStream << ">";
|
||||
}
|
||||
DumpSelf(aFile, aPrefix);
|
||||
DumpSelf(aStream, aPrefix);
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (gfxUtils::sDumpPainting && AsLayerComposite() && AsLayerComposite()->GetCompositableHost()) {
|
||||
AsLayerComposite()->GetCompositableHost()->Dump(aFile, aPrefix, aDumpHtml);
|
||||
AsLayerComposite()->GetCompositableHost()->Dump(aStream, aPrefix, aDumpHtml);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "</a>");
|
||||
aStream << "</a>";
|
||||
}
|
||||
|
||||
if (Layer* mask = GetMaskLayer()) {
|
||||
fprintf_stderr(aFile, "%s Mask layer:\n", aPrefix);
|
||||
aStream << nsPrintfCString("%s Mask layer:\n", aPrefix).get();
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
mask->Dump(aFile, pfx.get(), aDumpHtml);
|
||||
mask->Dump(aStream, pfx.get(), aDumpHtml);
|
||||
}
|
||||
|
||||
if (Layer* kid = GetFirstChild()) {
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "<ul>");
|
||||
aStream << "<ul>";
|
||||
}
|
||||
kid->Dump(aFile, pfx.get(), aDumpHtml);
|
||||
kid->Dump(aStream, pfx.get(), aDumpHtml);
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "</ul>");
|
||||
aStream << "</ul>";
|
||||
}
|
||||
}
|
||||
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "</li>");
|
||||
aStream << "</li>";
|
||||
}
|
||||
if (Layer* next = GetNextSibling())
|
||||
next->Dump(aFile, aPrefix, aDumpHtml);
|
||||
next->Dump(aStream, aPrefix, aDumpHtml);
|
||||
}
|
||||
|
||||
void
|
||||
Layer::DumpSelf(FILE* aFile, const char* aPrefix)
|
||||
Layer::DumpSelf(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
nsAutoCString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
fprintf_stderr(aFile, "%s\n", str.get());
|
||||
PrintInfo(aStream, aPrefix);
|
||||
aStream << "\n";
|
||||
}
|
||||
|
||||
void
|
||||
@ -1332,9 +1331,9 @@ Layer::LogSelf(const char* aPrefix)
|
||||
if (!IsLogEnabled())
|
||||
return;
|
||||
|
||||
nsAutoCString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
MOZ_LAYERS_LOG(("%s", str.get()));
|
||||
std::stringstream ss;
|
||||
PrintInfo(ss, aPrefix);
|
||||
MOZ_LAYERS_LOG(("%s", ss.str().c_str()));
|
||||
|
||||
if (mMaskLayer) {
|
||||
nsAutoCString pfx(aPrefix);
|
||||
@ -1343,199 +1342,187 @@ Layer::LogSelf(const char* aPrefix)
|
||||
}
|
||||
}
|
||||
|
||||
nsACString&
|
||||
Layer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
Layer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("%s%s (0x%p)", mManager->Name(), Name(), this);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("%s%s (0x%p)", mManager->Name(), Name(), this).get();
|
||||
|
||||
layers::PrintInfo(aTo, AsLayerComposite());
|
||||
layers::PrintInfo(aStream, AsLayerComposite());
|
||||
|
||||
if (mUseClipRect) {
|
||||
AppendToString(aTo, mClipRect, " [clip=", "]");
|
||||
AppendToString(aStream, mClipRect, " [clip=", "]");
|
||||
}
|
||||
if (1.0 != mPostXScale || 1.0 != mPostYScale) {
|
||||
aTo.AppendPrintf(" [postScale=%g, %g]", mPostXScale, mPostYScale);
|
||||
aStream << nsPrintfCString(" [postScale=%g, %g]", mPostXScale, mPostYScale).get();
|
||||
}
|
||||
if (!mTransform.IsIdentity()) {
|
||||
AppendToString(aTo, mTransform, " [transform=", "]");
|
||||
AppendToString(aStream, mTransform, " [transform=", "]");
|
||||
}
|
||||
if (!mVisibleRegion.IsEmpty()) {
|
||||
AppendToString(aTo, mVisibleRegion, " [visible=", "]");
|
||||
AppendToString(aStream, mVisibleRegion, " [visible=", "]");
|
||||
} else {
|
||||
aTo += " [not visible]";
|
||||
aStream << " [not visible]";
|
||||
}
|
||||
if (!mEventRegions.mHitRegion.IsEmpty()) {
|
||||
AppendToString(aTo, mEventRegions.mHitRegion, " [hitregion=", "]");
|
||||
AppendToString(aStream, mEventRegions.mHitRegion, " [hitregion=", "]");
|
||||
}
|
||||
if (!mEventRegions.mDispatchToContentHitRegion.IsEmpty()) {
|
||||
AppendToString(aTo, mEventRegions.mDispatchToContentHitRegion, " [dispatchtocontentregion=", "]");
|
||||
AppendToString(aStream, mEventRegions.mDispatchToContentHitRegion, " [dispatchtocontentregion=", "]");
|
||||
}
|
||||
if (1.0 != mOpacity) {
|
||||
aTo.AppendPrintf(" [opacity=%g]", mOpacity);
|
||||
aStream << nsPrintfCString(" [opacity=%g]", mOpacity).get();
|
||||
}
|
||||
if (GetContentFlags() & CONTENT_OPAQUE) {
|
||||
aTo += " [opaqueContent]";
|
||||
aStream << " [opaqueContent]";
|
||||
}
|
||||
if (GetContentFlags() & CONTENT_COMPONENT_ALPHA) {
|
||||
aTo += " [componentAlpha]";
|
||||
aStream << " [componentAlpha]";
|
||||
}
|
||||
if (GetScrollbarDirection() == VERTICAL) {
|
||||
aTo.AppendPrintf(" [vscrollbar=%lld]", GetScrollbarTargetContainerId());
|
||||
aStream << nsPrintfCString(" [vscrollbar=%lld]", GetScrollbarTargetContainerId()).get();
|
||||
}
|
||||
if (GetScrollbarDirection() == HORIZONTAL) {
|
||||
aTo.AppendPrintf(" [hscrollbar=%lld]", GetScrollbarTargetContainerId());
|
||||
aStream << nsPrintfCString(" [hscrollbar=%lld]", GetScrollbarTargetContainerId()).get();
|
||||
}
|
||||
if (GetIsFixedPosition()) {
|
||||
aTo.AppendPrintf(" [isFixedPosition anchor=%f,%f margin=%f,%f,%f,%f]", mAnchor.x, mAnchor.y,
|
||||
mMargins.top, mMargins.right, mMargins.bottom, mMargins.left);
|
||||
aStream << nsPrintfCString(" [isFixedPosition anchor=%f,%f margin=%f,%f,%f,%f]", mAnchor.x, mAnchor.y,
|
||||
mMargins.top, mMargins.right, mMargins.bottom, mMargins.left).get();
|
||||
}
|
||||
if (GetIsStickyPosition()) {
|
||||
aTo.AppendPrintf(" [isStickyPosition scrollId=%d outer=%f,%f %fx%f "
|
||||
aStream << nsPrintfCString(" [isStickyPosition scrollId=%d outer=%f,%f %fx%f "
|
||||
"inner=%f,%f %fx%f]", mStickyPositionData->mScrollId,
|
||||
mStickyPositionData->mOuter.x, mStickyPositionData->mOuter.y,
|
||||
mStickyPositionData->mOuter.width, mStickyPositionData->mOuter.height,
|
||||
mStickyPositionData->mInner.x, mStickyPositionData->mInner.y,
|
||||
mStickyPositionData->mInner.width, mStickyPositionData->mInner.height);
|
||||
mStickyPositionData->mInner.width, mStickyPositionData->mInner.height).get();
|
||||
}
|
||||
if (mMaskLayer) {
|
||||
aTo.AppendPrintf(" [mMaskLayer=%p]", mMaskLayer.get());
|
||||
aStream << nsPrintfCString(" [mMaskLayer=%p]", mMaskLayer.get()).get();
|
||||
}
|
||||
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ThebesLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ThebesLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
Layer::PrintInfo(aStream, aPrefix);
|
||||
if (!mValidRegion.IsEmpty()) {
|
||||
AppendToString(aTo, mValidRegion, " [valid=", "]");
|
||||
AppendToString(aStream, mValidRegion, " [valid=", "]");
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ContainerLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ContainerLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
Layer::PrintInfo(aStream, aPrefix);
|
||||
if (!mFrameMetrics.IsDefault()) {
|
||||
AppendToString(aTo, mFrameMetrics, " [metrics=", "]");
|
||||
AppendToString(aStream, mFrameMetrics, " [metrics=", "]");
|
||||
}
|
||||
if (mScrollHandoffParentId != FrameMetrics::NULL_SCROLL_ID) {
|
||||
aTo.AppendPrintf(" [scrollParent=%llu]", mScrollHandoffParentId);
|
||||
aStream << nsPrintfCString(" [scrollParent=%llu]", mScrollHandoffParentId).get();
|
||||
}
|
||||
if (UseIntermediateSurface()) {
|
||||
aTo += " [usesTmpSurf]";
|
||||
aStream << " [usesTmpSurf]";
|
||||
}
|
||||
if (1.0 != mPreXScale || 1.0 != mPreYScale) {
|
||||
aTo.AppendPrintf(" [preScale=%g, %g]", mPreXScale, mPreYScale);
|
||||
aStream << nsPrintfCString(" [preScale=%g, %g]", mPreXScale, mPreYScale).get();
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ColorLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ColorLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
AppendToString(aTo, mColor, " [color=", "]");
|
||||
return aTo;
|
||||
Layer::PrintInfo(aStream, aPrefix);
|
||||
AppendToString(aStream, mColor, " [color=", "]");
|
||||
}
|
||||
|
||||
nsACString&
|
||||
CanvasLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
CanvasLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
Layer::PrintInfo(aStream, aPrefix);
|
||||
if (mFilter != GraphicsFilter::FILTER_GOOD) {
|
||||
AppendToString(aTo, mFilter, " [filter=", "]");
|
||||
AppendToString(aStream, mFilter, " [filter=", "]");
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ImageLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ImageLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
Layer::PrintInfo(aStream, aPrefix);
|
||||
if (mFilter != GraphicsFilter::FILTER_GOOD) {
|
||||
AppendToString(aTo, mFilter, " [filter=", "]");
|
||||
AppendToString(aStream, mFilter, " [filter=", "]");
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
RefLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
RefLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
ContainerLayer::PrintInfo(aTo, aPrefix);
|
||||
ContainerLayer::PrintInfo(aStream, aPrefix);
|
||||
if (0 != mId) {
|
||||
AppendToString(aTo, mId, " [id=", "]");
|
||||
AppendToString(aStream, mId, " [id=", "]");
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ReadbackLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ReadbackLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
AppendToString(aTo, mSize, " [size=", "]");
|
||||
Layer::PrintInfo(aStream, aPrefix);
|
||||
AppendToString(aStream, mSize, " [size=", "]");
|
||||
if (mBackgroundLayer) {
|
||||
AppendToString(aTo, mBackgroundLayer, " [backgroundLayer=", "]");
|
||||
AppendToString(aTo, mBackgroundLayerOffset, " [backgroundOffset=", "]");
|
||||
AppendToString(aStream, mBackgroundLayer, " [backgroundLayer=", "]");
|
||||
AppendToString(aStream, mBackgroundLayerOffset, " [backgroundOffset=", "]");
|
||||
} else if (mBackgroundColor.a == 1.0) {
|
||||
AppendToString(aTo, mBackgroundColor, " [backgroundColor=", "]");
|
||||
AppendToString(aStream, mBackgroundColor, " [backgroundColor=", "]");
|
||||
} else {
|
||||
aTo += " [nobackground]";
|
||||
aStream << " [nobackground]";
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// LayerManager
|
||||
|
||||
void
|
||||
LayerManager::Dump(FILE* aFile, const char* aPrefix, bool aDumpHtml)
|
||||
LayerManager::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHtml)
|
||||
{
|
||||
FILE* file = FILEOrDefault(aFile);
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(file, "<ul><li><a ");
|
||||
WriteSnapshotLinkToDumpFile(this, file);
|
||||
fprintf_stderr(file, ">");
|
||||
aStream << "<ul><li><a ";
|
||||
WriteSnapshotLinkToDumpFile(this, aStream);
|
||||
aStream << ">";
|
||||
}
|
||||
#endif
|
||||
DumpSelf(file, aPrefix);
|
||||
DumpSelf(aStream, aPrefix);
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(file, "</a>");
|
||||
aStream << "</a>";
|
||||
}
|
||||
#endif
|
||||
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
if (!GetRoot()) {
|
||||
fprintf_stderr(file, "%s(null)", pfx.get());
|
||||
aStream << nsPrintfCString("%s(null)", pfx.get()).get();
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(file, "</li></ul>");
|
||||
aStream << "</li></ul>";
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(file, "<ul>");
|
||||
aStream << "<ul>";
|
||||
}
|
||||
GetRoot()->Dump(file, pfx.get(), aDumpHtml);
|
||||
GetRoot()->Dump(aStream, pfx.get(), aDumpHtml);
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(file, "</ul></li></ul>");
|
||||
aStream << "</ul></li></ul>";
|
||||
}
|
||||
fprintf_stderr(file, "\n");
|
||||
aStream << "\n";
|
||||
}
|
||||
|
||||
void
|
||||
LayerManager::DumpSelf(FILE* aFile, const char* aPrefix)
|
||||
LayerManager::DumpSelf(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
nsAutoCString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
fprintf_stderr(FILEOrDefault(aFile), "%s\n", str.get());
|
||||
PrintInfo(aStream, aPrefix);
|
||||
aStream << "\n";
|
||||
}
|
||||
|
||||
void
|
||||
@ -1560,15 +1547,15 @@ void
|
||||
LayerManager::LogSelf(const char* aPrefix)
|
||||
{
|
||||
nsAutoCString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
MOZ_LAYERS_LOG(("%s", str.get()));
|
||||
std::stringstream ss;
|
||||
PrintInfo(ss, aPrefix);
|
||||
MOZ_LAYERS_LOG(("%s", ss.str().c_str()));
|
||||
}
|
||||
|
||||
nsACString&
|
||||
LayerManager::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
LayerManager::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
return aTo += nsPrintfCString("%sLayerManager (0x%p)", Name(), this);
|
||||
aStream << aPrefix << nsPrintfCString("%sLayerManager (0x%p)", Name(), this).get();
|
||||
}
|
||||
|
||||
/*static*/ void
|
||||
@ -1586,22 +1573,21 @@ LayerManager::IsLogEnabled()
|
||||
return PR_LOG_TEST(sLog, PR_LOG_DEBUG);
|
||||
}
|
||||
|
||||
static nsACString&
|
||||
PrintInfo(nsACString& aTo, LayerComposite* aLayerComposite)
|
||||
void
|
||||
PrintInfo(std::stringstream& aStream, LayerComposite* aLayerComposite)
|
||||
{
|
||||
if (!aLayerComposite) {
|
||||
return aTo;
|
||||
return;
|
||||
}
|
||||
if (const nsIntRect* clipRect = aLayerComposite->GetShadowClipRect()) {
|
||||
AppendToString(aTo, *clipRect, " [shadow-clip=", "]");
|
||||
AppendToString(aStream, *clipRect, " [shadow-clip=", "]");
|
||||
}
|
||||
if (!aLayerComposite->GetShadowTransform().IsIdentity()) {
|
||||
AppendToString(aTo, aLayerComposite->GetShadowTransform(), " [shadow-transform=", "]");
|
||||
AppendToString(aStream, aLayerComposite->GetShadowTransform(), " [shadow-transform=", "]");
|
||||
}
|
||||
if (!aLayerComposite->GetShadowVisibleRegion().IsEmpty()) {
|
||||
AppendToString(aTo, aLayerComposite->GetShadowVisibleRegion(), " [shadow-visible=", "]");
|
||||
AppendToString(aStream, aLayerComposite->GetShadowVisibleRegion(), " [shadow-visible=", "]");
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -557,14 +557,18 @@ public:
|
||||
|
||||
/**
|
||||
* Dump information about this layer manager and its managed tree to
|
||||
* aFile, which defaults to stderr.
|
||||
* aStream.
|
||||
*/
|
||||
void Dump(FILE* aFile=nullptr, const char* aPrefix="", bool aDumpHtml=false);
|
||||
void Dump(std::stringstream& aStream, const char* aPrefix="", bool aDumpHtml=false);
|
||||
/**
|
||||
* Dump information about just this layer manager itself to aFile,
|
||||
* which defaults to stderr.
|
||||
* Dump information about just this layer manager itself to aStream
|
||||
*/
|
||||
void DumpSelf(FILE* aFile=nullptr, const char* aPrefix="");
|
||||
void DumpSelf(std::stringstream& aStream, const char* aPrefix="");
|
||||
void Dump() {
|
||||
std::stringstream ss;
|
||||
Dump(ss);
|
||||
printf_stderr("%s", ss.str().c_str());
|
||||
}
|
||||
|
||||
/**
|
||||
* Log information about this layer manager and its managed tree to
|
||||
@ -650,9 +654,9 @@ protected:
|
||||
// Protected destructor, to discourage deletion outside of Release():
|
||||
virtual ~LayerManager() {}
|
||||
|
||||
// Print interesting information about this into aTo. Internally
|
||||
// Print interesting information about this into aStreamo. Internally
|
||||
// used to implement Dump*() and Log*().
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
static void InitLog();
|
||||
static PRLogModuleInfo* sLog;
|
||||
@ -1327,14 +1331,13 @@ public:
|
||||
|
||||
/**
|
||||
* Dump information about this layer manager and its managed tree to
|
||||
* aFile, which defaults to stderr.
|
||||
* aStream.
|
||||
*/
|
||||
void Dump(FILE* aFile=nullptr, const char* aPrefix="", bool aDumpHtml=false);
|
||||
void Dump(std::stringstream& aStream, const char* aPrefix="", bool aDumpHtml=false);
|
||||
/**
|
||||
* Dump information about just this layer manager itself to aFile,
|
||||
* which defaults to stderr.
|
||||
* Dump information about just this layer manager itself to aStream.
|
||||
*/
|
||||
void DumpSelf(FILE* aFile=nullptr, const char* aPrefix="");
|
||||
void DumpSelf(std::stringstream& aStream, const char* aPrefix="");
|
||||
|
||||
/**
|
||||
* Log information about this layer manager and its managed tree to
|
||||
@ -1347,12 +1350,12 @@ public:
|
||||
*/
|
||||
void LogSelf(const char* aPrefix="");
|
||||
|
||||
// Print interesting information about this into aTo. Internally
|
||||
// used to implement Dump*() and Log*(). If subclasses have
|
||||
// Print interesting information about this into aStream. Internally
|
||||
// used to implement Dump*() and Log*(). If subclasses have
|
||||
// additional interesting properties, they should override this with
|
||||
// an implementation that first calls the base implementation then
|
||||
// appends additional info to aTo.
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
static bool IsLogEnabled() { return LayerManager::IsLogEnabled(); }
|
||||
|
||||
@ -1586,7 +1589,7 @@ protected:
|
||||
mContentFlags = 0; // Clear NO_TEXT, NO_TEXT_OVER_TRANSPARENT
|
||||
}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
/**
|
||||
* ComputeEffectiveTransforms snaps the ideal transform to get mEffectiveTransform.
|
||||
@ -1805,7 +1808,7 @@ protected:
|
||||
*/
|
||||
void ComputeEffectiveTransformsForChildren(const gfx::Matrix4x4& aTransformToSurface);
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
Layer* mFirstChild;
|
||||
Layer* mLastChild;
|
||||
@ -1880,7 +1883,7 @@ protected:
|
||||
mColor(0.0, 0.0, 0.0, 0.0)
|
||||
{}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
nsIntRect mBounds;
|
||||
gfxRGBA mColor;
|
||||
@ -2039,7 +2042,7 @@ protected:
|
||||
, mDirty(false)
|
||||
{}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
void FireDidTransactionCallback()
|
||||
{
|
||||
@ -2156,7 +2159,7 @@ protected:
|
||||
: ContainerLayer(aManager, aImplData) , mId(0)
|
||||
{}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
Layer* mTempReferent;
|
||||
// 0 is a special value that means "no ID".
|
||||
|
@ -20,179 +20,182 @@ using namespace mozilla::gfx;
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const void* p,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const void* p,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString("%p", p);
|
||||
return s += sfx;
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString("%p", p).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const GraphicsFilter& f,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const GraphicsFilter& f,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
aStream << pfx;
|
||||
switch (f) {
|
||||
case GraphicsFilter::FILTER_FAST: s += "fast"; break;
|
||||
case GraphicsFilter::FILTER_GOOD: s += "good"; break;
|
||||
case GraphicsFilter::FILTER_BEST: s += "best"; break;
|
||||
case GraphicsFilter::FILTER_NEAREST: s += "nearest"; break;
|
||||
case GraphicsFilter::FILTER_BILINEAR: s += "bilinear"; break;
|
||||
case GraphicsFilter::FILTER_GAUSSIAN: s += "gaussian"; break;
|
||||
case GraphicsFilter::FILTER_FAST: aStream << "fast"; break;
|
||||
case GraphicsFilter::FILTER_GOOD: aStream << "good"; break;
|
||||
case GraphicsFilter::FILTER_BEST: aStream << "best"; break;
|
||||
case GraphicsFilter::FILTER_NEAREST: aStream << "nearest"; break;
|
||||
case GraphicsFilter::FILTER_BILINEAR: aStream << "bilinear"; break;
|
||||
case GraphicsFilter::FILTER_GAUSSIAN: aStream << "gaussian"; break;
|
||||
default:
|
||||
NS_ERROR("unknown filter type");
|
||||
s += "???";
|
||||
aStream << "???";
|
||||
}
|
||||
return s += sfx;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, FrameMetrics::ViewID n,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, FrameMetrics::ViewID n,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s.AppendInt(n);
|
||||
return s += sfx;
|
||||
aStream << pfx;
|
||||
aStream << n;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const gfxRGBA& c,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const gfxRGBA& c,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString(
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString(
|
||||
"rgba(%d, %d, %d, %g)",
|
||||
uint8_t(c.r*255.0), uint8_t(c.g*255.0), uint8_t(c.b*255.0), c.a);
|
||||
return s += sfx;
|
||||
uint8_t(c.r*255.0), uint8_t(c.g*255.0), uint8_t(c.b*255.0), c.a).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntPoint& p,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntPoint& p,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString("(x=%d, y=%d)", p.x, p.y);
|
||||
return s += sfx;
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString("(x=%d, y=%d)", p.x, p.y).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntRect& r,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntRect& r,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString(
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString(
|
||||
"(x=%d, y=%d, w=%d, h=%d)",
|
||||
r.x, r.y, r.width, r.height);
|
||||
return s += sfx;
|
||||
r.x, r.y, r.width, r.height).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntRegion& r,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntRegion& r,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
aStream << pfx;
|
||||
|
||||
nsIntRegionRectIterator it(r);
|
||||
s += "< ";
|
||||
while (const nsIntRect* sr = it.Next())
|
||||
AppendToString(s, *sr) += "; ";
|
||||
s += ">";
|
||||
aStream << "< ";
|
||||
while (const nsIntRect* sr = it.Next()) {
|
||||
AppendToString(aStream, *sr);
|
||||
aStream << "; ";
|
||||
}
|
||||
aStream << ">";
|
||||
|
||||
return s += sfx;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntSize& sz,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntSize& sz,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString("(w=%d, h=%d)", sz.width, sz.height);
|
||||
return s += sfx;
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString("(w=%d, h=%d)", sz.width, sz.height).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const FrameMetrics& m,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const FrameMetrics& m,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
AppendToString(s, m.mViewport, "{ viewport=");
|
||||
AppendToString(s, m.mCompositionBounds, " cb=");
|
||||
AppendToString(s, m.GetScrollOffset(), " viewportScroll=");
|
||||
AppendToString(s, m.mDisplayPort, " displayport=");
|
||||
AppendToString(s, m.mCriticalDisplayPort, " critdp=");
|
||||
AppendToString(s, m.mScrollableRect, " scrollableRect=");
|
||||
AppendToString(s, m.GetScrollId(), " scrollId=", " }");
|
||||
return s += sfx;
|
||||
aStream << pfx;
|
||||
AppendToString(aStream, m.mViewport, "{ viewport=");
|
||||
AppendToString(aStream, m.mCompositionBounds, " cb=");
|
||||
AppendToString(aStream, m.GetScrollOffset(), " viewportScroll=");
|
||||
AppendToString(aStream, m.mDisplayPort, " displayport=");
|
||||
AppendToString(aStream, m.mCriticalDisplayPort, " critdp=");
|
||||
AppendToString(aStream, m.mScrollableRect, " scrollableRect=");
|
||||
AppendToString(aStream, m.GetScrollId(), " scrollId=", " }");
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const IntSize& size,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const IntSize& size,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString(
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString(
|
||||
"(width=%d, height=%d)",
|
||||
size.width, size.height);
|
||||
return s += sfx;
|
||||
size.width, size.height).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const Matrix4x4& m,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const Matrix4x4& m,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
aStream << pfx;
|
||||
if (m.Is2D()) {
|
||||
Matrix matrix = m.As2D();
|
||||
if (matrix.IsIdentity()) {
|
||||
s += "[ I ]";
|
||||
return s += sfx;
|
||||
aStream << "[ I ]";
|
||||
aStream << sfx;
|
||||
return;
|
||||
}
|
||||
s += nsPrintfCString(
|
||||
aStream << nsPrintfCString(
|
||||
"[ %g %g; %g %g; %g %g; ]",
|
||||
matrix._11, matrix._12, matrix._21, matrix._22, matrix._31, matrix._32);
|
||||
matrix._11, matrix._12, matrix._21, matrix._22, matrix._31, matrix._32).get();
|
||||
} else {
|
||||
s += nsPrintfCString(
|
||||
aStream << nsPrintfCString(
|
||||
"[ %g %g %g %g; %g %g %g %g; %g %g %g %g; %g %g %g %g; ]",
|
||||
m._11, m._12, m._13, m._14,
|
||||
m._21, m._22, m._23, m._24,
|
||||
m._31, m._32, m._33, m._34,
|
||||
m._41, m._42, m._43, m._44);
|
||||
m._41, m._42, m._43, m._44).get();
|
||||
}
|
||||
return s += sfx;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const Filter filter,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const Filter filter,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
aStream << pfx;
|
||||
|
||||
switch (filter) {
|
||||
case Filter::GOOD: s += "Filter::GOOD"; break;
|
||||
case Filter::LINEAR: s += "Filter::LINEAR"; break;
|
||||
case Filter::POINT: s += "Filter::POINT"; break;
|
||||
case Filter::GOOD: aStream << "Filter::GOOD"; break;
|
||||
case Filter::LINEAR: aStream << "Filter::LINEAR"; break;
|
||||
case Filter::POINT: aStream << "Filter::POINT"; break;
|
||||
}
|
||||
return s += sfx;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, TextureFlags flags,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, TextureFlags flags,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
aStream << pfx;
|
||||
if (flags == TextureFlags::NO_FLAGS) {
|
||||
s += "NoFlags";
|
||||
aStream << "NoFlags";
|
||||
} else {
|
||||
|
||||
#define AppendFlag(test) \
|
||||
{ \
|
||||
if (!!(flags & test)) { \
|
||||
if (previous) { \
|
||||
s += "|"; \
|
||||
aStream << "|"; \
|
||||
} \
|
||||
s += #test; \
|
||||
aStream << #test; \
|
||||
previous = true; \
|
||||
} \
|
||||
}
|
||||
@ -205,26 +208,26 @@ AppendToString(nsACString& s, TextureFlags flags,
|
||||
|
||||
#undef AppendFlag
|
||||
}
|
||||
return s += sfx;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, mozilla::gfx::SurfaceFormat format,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, mozilla::gfx::SurfaceFormat format,
|
||||
const char* pfx, const char* sfx)
|
||||
{
|
||||
s += pfx;
|
||||
aStream << pfx;
|
||||
switch (format) {
|
||||
case SurfaceFormat::B8G8R8A8: s += "SurfaceFormat::B8G8R8A8"; break;
|
||||
case SurfaceFormat::B8G8R8X8: s += "SurfaceFormat::B8G8R8X8"; break;
|
||||
case SurfaceFormat::R8G8B8A8: s += "SurfaceFormat::R8G8B8A8"; break;
|
||||
case SurfaceFormat::R8G8B8X8: s += "SurfaceFormat::R8G8B8X8"; break;
|
||||
case SurfaceFormat::R5G6B5: s += "SurfaceFormat::R5G6B5"; break;
|
||||
case SurfaceFormat::A8: s += "SurfaceFormat::A8"; break;
|
||||
case SurfaceFormat::YUV: s += "SurfaceFormat::YUV"; break;
|
||||
case SurfaceFormat::UNKNOWN: s += "SurfaceFormat::UNKNOWN"; break;
|
||||
case SurfaceFormat::B8G8R8A8: aStream << "SurfaceFormat::B8G8R8A8"; break;
|
||||
case SurfaceFormat::B8G8R8X8: aStream << "SurfaceFormat::B8G8R8X8"; break;
|
||||
case SurfaceFormat::R8G8B8A8: aStream << "SurfaceFormat::R8G8B8A8"; break;
|
||||
case SurfaceFormat::R8G8B8X8: aStream << "SurfaceFormat::R8G8B8X8"; break;
|
||||
case SurfaceFormat::R5G6B5: aStream << "SurfaceFormat::R5G6B5"; break;
|
||||
case SurfaceFormat::A8: aStream << "SurfaceFormat::A8"; break;
|
||||
case SurfaceFormat::YUV: aStream << "SurfaceFormat::YUV"; break;
|
||||
case SurfaceFormat::UNKNOWN: aStream << "SurfaceFormat::UNKNOWN"; break;
|
||||
}
|
||||
|
||||
return s += sfx;
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -29,94 +29,94 @@ template <class units> struct RectTyped;
|
||||
|
||||
namespace layers {
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const void* p,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const void* p,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const GraphicsFilter& f,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const GraphicsFilter& f,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, FrameMetrics::ViewID n,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, FrameMetrics::ViewID n,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const gfxRGBA& c,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const gfxRGBA& c,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntPoint& p,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntPoint& p,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
template<class T>
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const mozilla::gfx::PointTyped<T>& p,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const mozilla::gfx::PointTyped<T>& p,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString("(x=%f, y=%f)", p.x, p.y);
|
||||
return s += sfx;
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString("(x=%f, y=%f)", p.x, p.y).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntRect& r,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntRect& r,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
template<class T>
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const mozilla::gfx::RectTyped<T>& r,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const mozilla::gfx::RectTyped<T>& r,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
s.AppendPrintf(
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString(
|
||||
"(x=%f, y=%f, w=%f, h=%f)",
|
||||
r.x, r.y, r.width, r.height);
|
||||
return s += sfx;
|
||||
r.x, r.y, r.width, r.height).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const mozilla::gfx::IntRectTyped<T>& r,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const mozilla::gfx::IntRectTyped<T>& r,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
s.AppendPrintf(
|
||||
aStream << pfx;
|
||||
aStream << nsPrintfCString(
|
||||
"(x=%d, y=%d, w=%d, h=%d)",
|
||||
r.x, r.y, r.width, r.height);
|
||||
return s += sfx;
|
||||
r.x, r.y, r.width, r.height).get();
|
||||
aStream << sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntRegion& r,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntRegion& r,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntSize& sz,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const nsIntSize& sz,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const FrameMetrics& m,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const FrameMetrics& m,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const mozilla::gfx::IntSize& size,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const mozilla::gfx::IntSize& size,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const mozilla::gfx::Matrix4x4& m,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const mozilla::gfx::Matrix4x4& m,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const mozilla::gfx::Filter filter,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, const mozilla::gfx::Filter filter,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, mozilla::layers::TextureFlags flags,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, mozilla::layers::TextureFlags flags,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, mozilla::gfx::SurfaceFormat format,
|
||||
void
|
||||
AppendToString(std::stringstream& aStream, mozilla::gfx::SurfaceFormat format,
|
||||
const char* pfx="", const char* sfx="");
|
||||
|
||||
} // namespace
|
||||
|
@ -170,9 +170,7 @@ protected:
|
||||
mBackgroundColor(gfxRGBA(0,0,0,0))
|
||||
{}
|
||||
|
||||
// Print interesting information about this into aTo. Internally
|
||||
// used to implement Dump*() and Log*().
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
uint64_t mSequenceCounter;
|
||||
nsAutoPtr<ReadbackSink> mSink;
|
||||
|
@ -34,8 +34,10 @@ namespace layers {
|
||||
# define TILING_PRLOG(_args) PR_LOG(gTilingLog, PR_LOG_DEBUG, _args)
|
||||
# define TILING_PRLOG_OBJ(_args, obj) \
|
||||
{ \
|
||||
std::stringstream ss; \
|
||||
AppendToString(ss, obj); \
|
||||
nsAutoCString tmpstr; \
|
||||
AppendToString(tmpstr, obj); \
|
||||
tmpstr = ss.str().c_str(); \
|
||||
PR_LOG(gTilingLog, PR_LOG_DEBUG, _args); \
|
||||
}
|
||||
extern PRLogModuleInfo* gTilingLog;
|
||||
|
@ -132,17 +132,16 @@ CanvasLayerComposite::CleanupResources()
|
||||
mImageHost = nullptr;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
CanvasLayerComposite::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
CanvasLayerComposite::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
CanvasLayer::PrintInfo(aTo, aPrefix);
|
||||
aTo += "\n";
|
||||
CanvasLayer::PrintInfo(aStream, aPrefix);
|
||||
aStream << "\n";
|
||||
if (mImageHost && mImageHost->IsAttached()) {
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
mImageHost->PrintInfo(aTo, pfx.get());
|
||||
mImageHost->PrintInfo(aStream, pfx.get());
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public:
|
||||
virtual const char* Name() const MOZ_OVERRIDE { return "CanvasLayerComposite"; }
|
||||
|
||||
protected:
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix) MOZ_OVERRIDE;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
RefPtr<CompositableHost> mImageHost;
|
||||
|
@ -213,7 +213,7 @@ CompositableHost::Create(const TextureInfo& aTextureInfo)
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
void
|
||||
CompositableHost::DumpTextureHost(FILE* aFile, TextureHost* aTexture)
|
||||
CompositableHost::DumpTextureHost(std::stringstream& aStream, TextureHost* aTexture)
|
||||
{
|
||||
if (!aTexture) {
|
||||
return;
|
||||
@ -231,7 +231,8 @@ CompositableHost::DumpTextureHost(FILE* aFile, TextureHost* aTexture)
|
||||
if (!surf) {
|
||||
return;
|
||||
}
|
||||
surf->DumpAsDataURL(aFile ? aFile : stderr);
|
||||
// TODO stream surface
|
||||
surf->DumpAsDataURL(stderr);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -250,15 +250,15 @@ public:
|
||||
bool IsAttached() { return mAttached; }
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
virtual void Dump(FILE* aFile=nullptr,
|
||||
virtual void Dump(std::stringstream& aStream,
|
||||
const char* aPrefix="",
|
||||
bool aDumpHtml=false) { }
|
||||
static void DumpTextureHost(FILE* aFile, TextureHost* aTexture);
|
||||
static void DumpTextureHost(std::stringstream& aStream, TextureHost* aTexture);
|
||||
|
||||
virtual TemporaryRef<gfx::DataSourceSurface> GetAsSurface() { return nullptr; }
|
||||
#endif
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix) = 0;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) = 0;
|
||||
|
||||
virtual void UseTextureHost(TextureHost* aTexture);
|
||||
virtual void UseComponentAlphaTextures(TextureHost* aTextureOnBlack,
|
||||
|
@ -124,15 +124,15 @@ static void DrawLayerInfo(const nsIntRect& aClipRect,
|
||||
return;
|
||||
}
|
||||
|
||||
nsAutoCString layerInfo;
|
||||
aLayer->PrintInfo(layerInfo, "");
|
||||
std::stringstream ss;
|
||||
aLayer->PrintInfo(ss, "");
|
||||
|
||||
nsIntRegion visibleRegion = aLayer->GetVisibleRegion();
|
||||
|
||||
uint32_t maxWidth = std::min<uint32_t>(visibleRegion.GetBounds().width, 500);
|
||||
|
||||
nsIntPoint topLeft = visibleRegion.GetBounds().TopLeft();
|
||||
aManager->GetTextRenderer()->RenderText(layerInfo.get(), gfx::IntPoint(topLeft.x, topLeft.y),
|
||||
aManager->GetTextRenderer()->RenderText(ss.str().c_str(), gfx::IntPoint(topLeft.x, topLeft.y),
|
||||
aLayer->GetEffectiveTransform(), 16,
|
||||
maxWidth);
|
||||
|
||||
|
@ -261,30 +261,27 @@ ContentHostTexture::SetCompositor(Compositor* aCompositor)
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
void
|
||||
ContentHostTexture::Dump(FILE* aFile,
|
||||
ContentHostTexture::Dump(std::stringstream& aStream,
|
||||
const char* aPrefix,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
if (!aDumpHtml) {
|
||||
return;
|
||||
}
|
||||
if (!aFile) {
|
||||
aFile = stderr;
|
||||
}
|
||||
fprintf(aFile, "<ul>");
|
||||
aStream << "<ul>";
|
||||
if (mTextureHost) {
|
||||
fprintf(aFile, "%s", aPrefix);
|
||||
fprintf(aFile, "<li> <a href=");
|
||||
DumpTextureHost(aFile, mTextureHost);
|
||||
fprintf(aFile, "> Front buffer </a></li> ");
|
||||
aStream << aPrefix;
|
||||
aStream << "<li> <a href=";
|
||||
DumpTextureHost(aStream, mTextureHost);
|
||||
aStream << "> Front buffer </a></li> ";
|
||||
}
|
||||
if (mTextureHostOnWhite) {
|
||||
fprintf(aFile, "%s", aPrefix);
|
||||
fprintf(aFile, "<li> <a href=");
|
||||
DumpTextureHost(aFile, mTextureHostOnWhite);
|
||||
fprintf(aFile, "> Front buffer on white </a> </li> ");
|
||||
aStream << aPrefix;
|
||||
aStream << "<li> <a href=";
|
||||
DumpTextureHost(aStream, mTextureHostOnWhite);
|
||||
aStream << "> Front buffer on white </a> </li> ";
|
||||
}
|
||||
fprintf(aFile, "</ul>");
|
||||
aStream << "</ul>";
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -652,34 +649,34 @@ ContentHostIncremental::TextureUpdateRequest::Execute(ContentHostIncremental* aH
|
||||
}
|
||||
|
||||
void
|
||||
ContentHostIncremental::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
ContentHostIncremental::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("ContentHostIncremental (0x%p)", this);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("ContentHostIncremental (0x%p)", this).get();
|
||||
|
||||
if (PaintWillResample()) {
|
||||
aTo += " [paint-will-resample]";
|
||||
aStream << " [paint-will-resample]";
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ContentHostTexture::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
ContentHostTexture::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("ContentHost (0x%p)", this);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("ContentHost (0x%p)", this).get();
|
||||
|
||||
AppendToString(aTo, mBufferRect, " [buffer-rect=", "]");
|
||||
AppendToString(aTo, mBufferRotation, " [buffer-rotation=", "]");
|
||||
AppendToString(aStream, mBufferRect, " [buffer-rect=", "]");
|
||||
AppendToString(aStream, mBufferRotation, " [buffer-rotation=", "]");
|
||||
if (PaintWillResample()) {
|
||||
aTo += " [paint-will-resample]";
|
||||
aStream << " [paint-will-resample]";
|
||||
}
|
||||
|
||||
if (mTextureHost) {
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
|
||||
aTo += "\n";
|
||||
mTextureHost->PrintInfo(aTo, pfx.get());
|
||||
aStream << "\n";
|
||||
mTextureHost->PrintInfo(aStream, pfx.get());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -139,12 +139,12 @@ public:
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
virtual TemporaryRef<gfx::DataSourceSurface> GetAsSurface() MOZ_OVERRIDE;
|
||||
|
||||
virtual void Dump(FILE* aFile=nullptr,
|
||||
virtual void Dump(std::stringstream& aStream,
|
||||
const char* aPrefix="",
|
||||
bool aDumpHtml=false) MOZ_OVERRIDE;
|
||||
#endif
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix) MOZ_OVERRIDE;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) MOZ_OVERRIDE;
|
||||
|
||||
virtual void UseTextureHost(TextureHost* aTexture) MOZ_OVERRIDE;
|
||||
virtual void UseComponentAlphaTextures(TextureHost* aTextureOnBlack,
|
||||
@ -279,7 +279,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix) MOZ_OVERRIDE;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) MOZ_OVERRIDE;
|
||||
|
||||
virtual bool Lock() {
|
||||
MOZ_ASSERT(!mLocked);
|
||||
|
@ -195,36 +195,33 @@ ImageHost::SetCompositor(Compositor* aCompositor)
|
||||
}
|
||||
|
||||
void
|
||||
ImageHost::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
ImageHost::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("ImageHost (0x%p)", this);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("ImageHost (0x%p)", this).get();
|
||||
|
||||
AppendToString(aTo, mPictureRect, " [picture-rect=", "]");
|
||||
AppendToString(aStream, mPictureRect, " [picture-rect=", "]");
|
||||
|
||||
if (mFrontBuffer) {
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
aTo += "\n";
|
||||
mFrontBuffer->PrintInfo(aTo, pfx.get());
|
||||
aStream << "\n";
|
||||
mFrontBuffer->PrintInfo(aStream, pfx.get());
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
void
|
||||
ImageHost::Dump(FILE* aFile,
|
||||
ImageHost::Dump(std::stringstream& aStream,
|
||||
const char* aPrefix,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
if (!aFile) {
|
||||
aFile = stderr;
|
||||
}
|
||||
if (mFrontBuffer) {
|
||||
fprintf_stderr(aFile, "%s", aPrefix);
|
||||
fprintf_stderr(aFile, aDumpHtml ? "<ul><li>TextureHost: "
|
||||
aStream << aPrefix;
|
||||
aStream << (aDumpHtml ? "<ul><li>TextureHost: "
|
||||
: "TextureHost: ");
|
||||
DumpTextureHost(aFile, mFrontBuffer);
|
||||
fprintf_stderr(aFile, aDumpHtml ? " </li></ul> " : " ");
|
||||
DumpTextureHost(aStream, mFrontBuffer);
|
||||
aStream << (aDumpHtml ? " </li></ul> " : " ");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -69,10 +69,10 @@ public:
|
||||
|
||||
virtual LayerRenderState GetRenderState() MOZ_OVERRIDE;
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
virtual void Dump(FILE* aFile = nullptr,
|
||||
virtual void Dump(std::stringstream& aStream,
|
||||
const char* aPrefix = "",
|
||||
bool aDumpHtml = false) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -161,17 +161,16 @@ ImageLayerComposite::CleanupResources()
|
||||
mImageHost = nullptr;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ImageLayerComposite::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ImageLayerComposite::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
ImageLayer::PrintInfo(aTo, aPrefix);
|
||||
ImageLayer::PrintInfo(aStream, aPrefix);
|
||||
if (mImageHost && mImageHost->IsAttached()) {
|
||||
aTo += "\n";
|
||||
aStream << "\n";
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
mImageHost->PrintInfo(aTo, pfx.get());
|
||||
mImageHost->PrintInfo(aStream, pfx.get());
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
} /* layers */
|
||||
|
@ -56,7 +56,7 @@ public:
|
||||
virtual const char* Name() const { return "ImageLayerComposite"; }
|
||||
|
||||
protected:
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix) MOZ_OVERRIDE;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
RefPtr<CompositableHost> mImageHost;
|
||||
|
@ -305,18 +305,18 @@ void TextureHost::Finalize()
|
||||
}
|
||||
|
||||
void
|
||||
TextureHost::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
TextureHost::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("%s (0x%p)", Name(), this);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("%s (0x%p)", Name(), this).get();
|
||||
// Note: the TextureHost needs to be locked before it is safe to call
|
||||
// GetSize() and GetFormat() on it.
|
||||
if (Lock()) {
|
||||
AppendToString(aTo, GetSize(), " [size=", "]");
|
||||
AppendToString(aTo, GetFormat(), " [format=", "]");
|
||||
AppendToString(aStream, GetSize(), " [size=", "]");
|
||||
AppendToString(aStream, GetFormat(), " [format=", "]");
|
||||
Unlock();
|
||||
}
|
||||
AppendToString(aTo, mFlags, " [flags=", "]");
|
||||
AppendToString(aStream, mFlags, " [flags=", "]");
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -446,7 +446,7 @@ public:
|
||||
virtual void ForgetBufferActor() {}
|
||||
|
||||
virtual const char *Name() { return "TextureHost"; }
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
/**
|
||||
* Indicates whether the TextureHost implementation is backed by an
|
||||
|
@ -193,17 +193,16 @@ ThebesLayerComposite::GetEffectiveResolution()
|
||||
return CSSToScreenScale(1.0);
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ThebesLayerComposite::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
void
|
||||
ThebesLayerComposite::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
ThebesLayer::PrintInfo(aTo, aPrefix);
|
||||
ThebesLayer::PrintInfo(aStream, aPrefix);
|
||||
if (mBuffer && mBuffer->IsAttached()) {
|
||||
aTo += "\n";
|
||||
aStream << "\n";
|
||||
nsAutoCString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
mBuffer->PrintInfo(aTo, pfx.get());
|
||||
mBuffer->PrintInfo(aStream, pfx.get());
|
||||
}
|
||||
return aTo;
|
||||
}
|
||||
|
||||
} /* layers */
|
||||
|
@ -78,7 +78,7 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix) MOZ_OVERRIDE;
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
CSSToScreenScale GetEffectiveResolution();
|
||||
|
@ -478,40 +478,36 @@ TiledContentHost::RenderLayerBuffer(TiledLayerBufferComposite& aLayerBuffer,
|
||||
}
|
||||
|
||||
void
|
||||
TiledContentHost::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
TiledContentHost::PrintInfo(std::stringstream& aStream, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString("TiledContentHost (0x%p)", this);
|
||||
aStream << aPrefix;
|
||||
aStream << nsPrintfCString("TiledContentHost (0x%p)", this).get();
|
||||
|
||||
}
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
void
|
||||
TiledContentHost::Dump(FILE* aFile,
|
||||
TiledContentHost::Dump(std::stringstream& aStream,
|
||||
const char* aPrefix,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
if (!aFile) {
|
||||
aFile = stderr;
|
||||
}
|
||||
|
||||
TiledLayerBufferComposite::Iterator it = mTiledBuffer.TilesBegin();
|
||||
TiledLayerBufferComposite::Iterator stop = mTiledBuffer.TilesEnd();
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "<ul>");
|
||||
aStream << "<ul>";
|
||||
}
|
||||
for (;it != stop; ++it) {
|
||||
fprintf_stderr(aFile, "%s", aPrefix);
|
||||
fprintf_stderr(aFile, aDumpHtml ? "<li> <a href=" : "Tile ");
|
||||
aStream << aPrefix;
|
||||
aStream << (aDumpHtml ? "<li> <a href=" : "Tile ");
|
||||
if (it->IsPlaceholderTile()) {
|
||||
fprintf_stderr(aFile, "empty tile");
|
||||
aStream << "empty tile";
|
||||
} else {
|
||||
DumpTextureHost(aFile, it->mTextureHost);
|
||||
DumpTextureHost(aStream, it->mTextureHost);
|
||||
}
|
||||
fprintf_stderr(aFile, aDumpHtml ? " >Tile</a></li>" : " ");
|
||||
aStream << (aDumpHtml ? " >Tile</a></li>" : " ");
|
||||
}
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "</ul>");
|
||||
if (aDumpHtml) {
|
||||
aStream << "</ul>";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -228,12 +228,12 @@ public:
|
||||
AttachFlags aFlags = NO_FLAGS) MOZ_OVERRIDE;
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
virtual void Dump(FILE* aFile=nullptr,
|
||||
virtual void Dump(std::stringstream& aStream,
|
||||
const char* aPrefix="",
|
||||
bool aDumpHtml=false) MOZ_OVERRIDE;
|
||||
#endif
|
||||
|
||||
virtual void PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17
|
||||
/**
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "imgIContainer.h"
|
||||
#include "mozilla/gfx/2D.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "nsPrintfCString.h"
|
||||
|
||||
class gfxDrawable;
|
||||
class nsIntRegion;
|
||||
|
@ -3910,9 +3910,9 @@ FrameLayerBuilder::CheckDOMModified()
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
/* static */ void
|
||||
FrameLayerBuilder::DumpRetainedLayerTree(LayerManager* aManager, FILE* aFile, bool aDumpHtml)
|
||||
FrameLayerBuilder::DumpRetainedLayerTree(LayerManager* aManager, std::stringstream& aStream, bool aDumpHtml)
|
||||
{
|
||||
aManager->Dump(aFile, "", aDumpHtml);
|
||||
aManager->Dump(aStream, "", aDumpHtml);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -263,7 +263,7 @@ public:
|
||||
* Dumps this FrameLayerBuilder's retained layer manager's retained
|
||||
* layer tree. Defaults to dumping to stdout in non-HTML format.
|
||||
*/
|
||||
static void DumpRetainedLayerTree(LayerManager* aManager, FILE* aFile = stdout, bool aDumpHtml = false);
|
||||
static void DumpRetainedLayerTree(LayerManager* aManager, std::stringstream& aStream, bool aDumpHtml = false);
|
||||
#endif
|
||||
|
||||
/******* PRIVATE METHODS to FrameLayerBuilder.cpp ********/
|
||||
|
@ -5273,7 +5273,9 @@ nsDisplayTransform::WriteDebugInfo(nsACString& aTo)
|
||||
{
|
||||
gfx::Matrix4x4 transform;
|
||||
gfx::ToMatrix4x4(GetTransform(), transform);
|
||||
AppendToString(aTo, transform);
|
||||
std::stringstream ss;
|
||||
AppendToString(ss, transform);
|
||||
aTo += ss.str().c_str();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -121,18 +121,24 @@ nsLayoutDebugger::GetStyleSize(nsIPresShell* aPresentation,
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
std::ostream& operator<<(std::ostream& os, const nsPrintfCString& rhs) {
|
||||
os << rhs.get();
|
||||
return os;
|
||||
}
|
||||
|
||||
static void
|
||||
PrintDisplayListTo(nsDisplayListBuilder* aBuilder, const nsDisplayList& aList,
|
||||
FILE* aOutput, uint32_t aIndent, bool aDumpHtml);
|
||||
std::stringstream& aStream, uint32_t aIndent, bool aDumpHtml);
|
||||
|
||||
static void
|
||||
PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
|
||||
FILE* aOutput, uint32_t aIndent, bool aDumpSublist, bool aDumpHtml)
|
||||
std::stringstream& aStream, uint32_t aIndent, bool aDumpSublist, bool aDumpHtml)
|
||||
{
|
||||
nsCString str;
|
||||
std::stringstream ss;
|
||||
|
||||
if (!aDumpHtml) {
|
||||
for (uint32_t indent = 0; indent < aIndent; indent++) {
|
||||
str += " ";
|
||||
aStream << " ";
|
||||
}
|
||||
}
|
||||
nsIFrame* f = aItem->Frame();
|
||||
@ -155,9 +161,9 @@ PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
|
||||
nsCString string(aItem->Name());
|
||||
string.Append('-');
|
||||
string.AppendInt((uint64_t)aItem);
|
||||
str += nsPrintfCString("<a href=\"javascript:ViewImage('%s')\">", string.BeginReading());
|
||||
aStream << nsPrintfCString("<a href=\"javascript:ViewImage('%s')\">", string.BeginReading());
|
||||
}
|
||||
str += nsPrintfCString("%s %p(%s) bounds(%d,%d,%d,%d) visible(%d,%d,%d,%d) componentAlpha(%d,%d,%d,%d) clip(%s) %s",
|
||||
aStream << nsPrintfCString("%s %p(%s) bounds(%d,%d,%d,%d) visible(%d,%d,%d,%d) componentAlpha(%d,%d,%d,%d) clip(%s) %s",
|
||||
aItem->Name(), (void*)f, NS_ConvertUTF16toUTF8(fName).get(),
|
||||
rect.x, rect.y, rect.width, rect.height,
|
||||
vis.x, vis.y, vis.width, vis.height,
|
||||
@ -167,120 +173,125 @@ PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
|
||||
|
||||
nsRegionRectIterator iter(opaque);
|
||||
for (const nsRect* r = iter.Next(); r; r = iter.Next()) {
|
||||
str += nsPrintfCString(" (opaque %d,%d,%d,%d)", r->x, r->y, r->width, r->height);
|
||||
aStream << nsPrintfCString(" (opaque %d,%d,%d,%d)", r->x, r->y, r->width, r->height);
|
||||
}
|
||||
|
||||
if (aItem->Frame()->StyleDisplay()->mWillChange.Length() > 0) {
|
||||
str += nsPrintfCString(" (will-change=");
|
||||
aStream << " (will-change=";
|
||||
for (size_t i = 0; i < aItem->Frame()->StyleDisplay()->mWillChange.Length(); i++) {
|
||||
if (i > 0) {
|
||||
str += ",";
|
||||
aStream << ",";
|
||||
}
|
||||
str += NS_LossyConvertUTF16toASCII(aItem->Frame()->StyleDisplay()->mWillChange[i]);
|
||||
aStream << NS_LossyConvertUTF16toASCII(aItem->Frame()->StyleDisplay()->mWillChange[i]).get();
|
||||
}
|
||||
str += nsPrintfCString(")");
|
||||
aStream << ")";
|
||||
}
|
||||
|
||||
// Display item specific debug info
|
||||
aItem->WriteDebugInfo(str);
|
||||
nsCString itemStr;
|
||||
aItem->WriteDebugInfo(itemStr);
|
||||
aStream << itemStr.get();
|
||||
|
||||
if (aDumpHtml && aItem->Painted()) {
|
||||
str += "</a>";
|
||||
aStream << "</a>";
|
||||
}
|
||||
uint32_t key = aItem->GetPerFrameKey();
|
||||
Layer* layer = mozilla::FrameLayerBuilder::GetDebugOldLayerFor(f, key);
|
||||
if (layer) {
|
||||
if (aDumpHtml) {
|
||||
str += nsPrintfCString(" <a href=\"#%p\">layer=%p</a>", layer, layer);
|
||||
aStream << nsPrintfCString(" <a href=\"#%p\">layer=%p</a>", layer, layer);
|
||||
} else {
|
||||
str += nsPrintfCString(" layer=%p", layer);
|
||||
aStream << nsPrintfCString(" layer=%p", layer);
|
||||
}
|
||||
}
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_SVG_EFFECTS) {
|
||||
nsCString str;
|
||||
(static_cast<nsDisplaySVGEffects*>(aItem))->PrintEffects(str);
|
||||
aStream << str.get();
|
||||
}
|
||||
fprintf_stderr(aOutput, "%s\n", str.get());
|
||||
aStream << "\n";
|
||||
|
||||
if (aDumpSublist && list) {
|
||||
PrintDisplayListTo(aBuilder, *list, aOutput, aIndent+1, aDumpHtml);
|
||||
PrintDisplayListTo(aBuilder, *list, aStream, aIndent+1, aDumpHtml);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
PrintDisplayListTo(nsDisplayListBuilder* aBuilder, const nsDisplayList& aList,
|
||||
FILE* aOutput, uint32_t aIndent, bool aDumpHtml)
|
||||
std::stringstream& aStream, uint32_t aIndent, bool aDumpHtml)
|
||||
{
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aOutput, "<ul>");
|
||||
aStream << "<ul>";
|
||||
}
|
||||
|
||||
for (nsDisplayItem* i = aList.GetBottom(); i != nullptr; i = i->GetAbove()) {
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aOutput, "<li>");
|
||||
aStream << "<li>";
|
||||
}
|
||||
PrintDisplayItemTo(aBuilder, i, aOutput, aIndent, true, aDumpHtml);
|
||||
PrintDisplayItemTo(aBuilder, i, aStream, aIndent, true, aDumpHtml);
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aOutput, "</li>");
|
||||
aStream << "</li>";
|
||||
}
|
||||
}
|
||||
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aOutput, "</ul>");
|
||||
aStream << "</ul>";
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsFrame::PrintDisplayItem(nsDisplayListBuilder* aBuilder,
|
||||
nsDisplayItem* aItem,
|
||||
FILE* aFile,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpSublist,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
PrintDisplayItemTo(aBuilder, aItem, aFile, 0, aDumpSublist, aDumpHtml);
|
||||
PrintDisplayItemTo(aBuilder, aItem, aStream, 0, aDumpSublist, aDumpHtml);
|
||||
}
|
||||
|
||||
void
|
||||
nsFrame::PrintDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayList& aList,
|
||||
FILE* aFile,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
PrintDisplayListTo(aBuilder, aList, aFile, 0, aDumpHtml);
|
||||
PrintDisplayListTo(aBuilder, aList, aStream, 0, aDumpHtml);
|
||||
}
|
||||
|
||||
static void
|
||||
PrintDisplayListSetItem(nsDisplayListBuilder* aBuilder,
|
||||
const char* aItemName,
|
||||
const nsDisplayList& aList,
|
||||
FILE* aFile,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "<li>");
|
||||
aStream << "<li>";
|
||||
}
|
||||
fprintf_stderr(aFile, "%s", aItemName);
|
||||
PrintDisplayListTo(aBuilder, aList, aFile, 0, aDumpHtml);
|
||||
aStream << aItemName;
|
||||
PrintDisplayListTo(aBuilder, aList, aStream, 0, aDumpHtml);
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "</li>");
|
||||
aStream << "</li>";
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsFrame::PrintDisplayListSet(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayListSet& aSet,
|
||||
FILE *aFile,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpHtml)
|
||||
{
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "<ul>");
|
||||
aStream << "<ul>";
|
||||
}
|
||||
PrintDisplayListSetItem(aBuilder, "[BorderBackground]", *(aSet.BorderBackground()), aFile, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[BlockBorderBackgrounds]", *(aSet.BlockBorderBackgrounds()), aFile, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[Floats]", *(aSet.Floats()), aFile, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[PositionedDescendants]", *(aSet.PositionedDescendants()), aFile, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[Outlines]", *(aSet.Outlines()), aFile, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[Content]", *(aSet.Content()), aFile, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[BorderBackground]", *(aSet.BorderBackground()), aStream, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[BlockBorderBackgrounds]", *(aSet.BlockBorderBackgrounds()), aStream, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[Floats]", *(aSet.Floats()), aStream, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[PositionedDescendants]", *(aSet.PositionedDescendants()), aStream, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[Outlines]", *(aSet.Outlines()), aStream, aDumpHtml);
|
||||
PrintDisplayListSetItem(aBuilder, "[Content]", *(aSet.Content()), aStream, aDumpHtml);
|
||||
if (aDumpHtml) {
|
||||
fprintf_stderr(aFile, "</ul>");
|
||||
aStream << "</ul>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2620,7 +2620,10 @@ nsLayoutUtils::GetFramesForArea(nsIFrame* aFrame, const nsRect& aRect,
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (gDumpEventList) {
|
||||
fprintf_stderr(stderr, "Event handling --- (%d,%d):\n", aRect.x, aRect.y);
|
||||
nsFrame::PrintDisplayList(&builder, list);
|
||||
|
||||
std::stringstream ss;
|
||||
nsFrame::PrintDisplayList(&builder, list, ss);
|
||||
fprintf_stderr(stderr, "%s", ss.str().c_str());
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2924,6 +2927,8 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram
|
||||
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
FILE* savedDumpFile = gfxUtils::sDumpPaintFile;
|
||||
|
||||
std::stringstream ss;
|
||||
if (gfxUtils::DumpPaintList() || gfxUtils::sDumpPainting) {
|
||||
if (gfxUtils::sDumpPaintingToFile) {
|
||||
nsCString string("dump-");
|
||||
@ -2934,13 +2939,13 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram
|
||||
gfxUtils::sDumpPaintFile = stderr;
|
||||
}
|
||||
if (gfxUtils::sDumpPaintingToFile) {
|
||||
fprintf_stderr(gfxUtils::sDumpPaintFile, "<html><head><script>var array = {}; function ViewImage(index) { window.location = array[index]; }</script></head><body>");
|
||||
ss << "<html><head><script>var array = {}; function ViewImage(index) { window.location = array[index]; }</script></head><body>";
|
||||
}
|
||||
fprintf_stderr(gfxUtils::sDumpPaintFile, "Painting --- before optimization (dirty %d,%d,%d,%d):\n",
|
||||
dirtyRect.x, dirtyRect.y, dirtyRect.width, dirtyRect.height);
|
||||
nsFrame::PrintDisplayList(&builder, list, gfxUtils::sDumpPaintFile, gfxUtils::sDumpPaintingToFile);
|
||||
ss << nsPrintfCString("Painting --- before optimization (dirty %d,%d,%d,%d):\n",
|
||||
dirtyRect.x, dirtyRect.y, dirtyRect.width, dirtyRect.height).get();
|
||||
nsFrame::PrintDisplayList(&builder, list, ss, gfxUtils::sDumpPaintingToFile);
|
||||
if (gfxUtils::sDumpPaintingToFile) {
|
||||
fprintf_stderr(gfxUtils::sDumpPaintFile, "<script>");
|
||||
ss << "<script>";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2985,22 +2990,27 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
if (gfxUtils::DumpPaintList() || gfxUtils::sDumpPainting) {
|
||||
if (gfxUtils::sDumpPaintingToFile) {
|
||||
fprintf_stderr(gfxUtils::sDumpPaintFile, "</script>");
|
||||
ss << "</script>";
|
||||
}
|
||||
fprintf_stderr(gfxUtils::sDumpPaintFile, "Painting --- after optimization:\n");
|
||||
nsFrame::PrintDisplayList(&builder, list, gfxUtils::sDumpPaintFile, gfxUtils::sDumpPaintingToFile);
|
||||
ss << "Painting --- after optimization:\n";
|
||||
nsFrame::PrintDisplayList(&builder, list, ss, gfxUtils::sDumpPaintingToFile);
|
||||
|
||||
fprintf_stderr(gfxUtils::sDumpPaintFile, "Painting --- retained layer tree:\n");
|
||||
ss << "Painting --- retained layer tree:\n";
|
||||
nsIWidget* widget = aFrame->GetNearestWidget();
|
||||
if (widget) {
|
||||
nsRefPtr<LayerManager> layerManager = widget->GetLayerManager();
|
||||
if (layerManager) {
|
||||
FrameLayerBuilder::DumpRetainedLayerTree(layerManager, gfxUtils::sDumpPaintFile,
|
||||
FrameLayerBuilder::DumpRetainedLayerTree(layerManager, ss,
|
||||
gfxUtils::sDumpPaintingToFile);
|
||||
}
|
||||
}
|
||||
if (gfxUtils::sDumpPaintingToFile) {
|
||||
fprintf(gfxUtils::sDumpPaintFile, "</body></html>");
|
||||
ss << "</body></html>";
|
||||
}
|
||||
|
||||
fprintf(gfxUtils::sDumpPaintFile, "%s", ss.str().c_str());
|
||||
|
||||
if (gfxUtils::sDumpPaintingToFile) {
|
||||
fclose(gfxUtils::sDumpPaintFile);
|
||||
}
|
||||
gfxUtils::sDumpPaintFile = savedDumpFile;
|
||||
|
@ -706,17 +706,25 @@ public:
|
||||
|
||||
static void PrintDisplayItem(nsDisplayListBuilder* aBuilder,
|
||||
nsDisplayItem* aItem,
|
||||
FILE* aFile = stdout,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpSublist = false,
|
||||
bool aDumpHtml = false);
|
||||
|
||||
static void PrintDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayList& aList,
|
||||
FILE* aFile = stdout,
|
||||
bool aDumpHtml = false)
|
||||
{
|
||||
std::stringstream ss;
|
||||
PrintDisplayList(aBuilder, aList, ss, aDumpHtml);
|
||||
fprintf_stderr(stderr, "%s", ss.str().c_str());
|
||||
}
|
||||
static void PrintDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayList& aList,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpHtml = false);
|
||||
static void PrintDisplayListSet(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayListSet& aList,
|
||||
FILE* aFile = stdout,
|
||||
std::stringstream& aStream,
|
||||
bool aDumpHtml = false);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user