Improved efficiency by avoiding the dreadfully slow NS_MakeAbsoluteURL() and

only setting the image loader's URL and base URL for the initial reflow
This commit is contained in:
troy%netscape.com 1998-11-21 04:04:41 +00:00
Родитель f4b8d32b7b
Коммит 9b6b15c587
2 изменённых файлов: 32 добавлений и 22 удалений

Просмотреть файл

@ -155,7 +155,7 @@ nsHTMLImageLoader::StartLoadImage(nsIPresContext* aPresContext,
#else
src.Append(BROKEN_IMAGE_URL);
#endif
} else {
} else if (nsnull == mImageLoader) {
nsAutoString baseURL;
if (nsnull != mBaseHREF) {
baseURL = *mBaseHREF;
@ -410,16 +410,7 @@ nsImageFrame::GetDesiredSize(nsIPresContext* aPresContext,
nsHTMLContainerFrame::CreateViewForFrame(*aPresContext, this, mStyleContext, PR_TRUE);
#endif
// Setup url before starting the image load
nsAutoString src, base;
if ((NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute("SRC", src)) &&
(src.Length() > 0)) {
mImageLoader.SetURL(src);
if (NS_CONTENT_ATTR_HAS_VALUE ==
mContent->GetAttribute(NS_HTML_BASE_HREF, base)) {
mImageLoader.SetBaseHREF(base);
}
}
// Ask the image loader for the desired size
mImageLoader.GetDesiredSize(aPresContext, aReflowState,
this, UpdateImageFrame,
aDesiredSize);
@ -450,6 +441,20 @@ nsImageFrame::Reflow(nsIPresContext& aPresContext,
NS_PRECONDITION(mState & NS_FRAME_IN_REFLOW, "frame is not in reflow");
// If this is the initial reflow then set the image loader's
// source URL and base URL
if (eReflowReason_Initial == aReflowState.reason) {
nsAutoString src, base;
if ((NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute("SRC", src)) &&
(src.Length() > 0)) {
mImageLoader.SetURL(src);
if (NS_CONTENT_ATTR_HAS_VALUE ==
mContent->GetAttribute(NS_HTML_BASE_HREF, base)) {
mImageLoader.SetBaseHREF(base);
}
}
}
GetDesiredSize(&aPresContext, aReflowState, aMetrics);
AddBordersAndPadding(&aPresContext, aReflowState, aMetrics, mBorderPadding);
if (nsnull != aMetrics.maxElementSize) {

Просмотреть файл

@ -155,7 +155,7 @@ nsHTMLImageLoader::StartLoadImage(nsIPresContext* aPresContext,
#else
src.Append(BROKEN_IMAGE_URL);
#endif
} else {
} else if (nsnull == mImageLoader) {
nsAutoString baseURL;
if (nsnull != mBaseHREF) {
baseURL = *mBaseHREF;
@ -410,16 +410,7 @@ nsImageFrame::GetDesiredSize(nsIPresContext* aPresContext,
nsHTMLContainerFrame::CreateViewForFrame(*aPresContext, this, mStyleContext, PR_TRUE);
#endif
// Setup url before starting the image load
nsAutoString src, base;
if ((NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute("SRC", src)) &&
(src.Length() > 0)) {
mImageLoader.SetURL(src);
if (NS_CONTENT_ATTR_HAS_VALUE ==
mContent->GetAttribute(NS_HTML_BASE_HREF, base)) {
mImageLoader.SetBaseHREF(base);
}
}
// Ask the image loader for the desired size
mImageLoader.GetDesiredSize(aPresContext, aReflowState,
this, UpdateImageFrame,
aDesiredSize);
@ -450,6 +441,20 @@ nsImageFrame::Reflow(nsIPresContext& aPresContext,
NS_PRECONDITION(mState & NS_FRAME_IN_REFLOW, "frame is not in reflow");
// If this is the initial reflow then set the image loader's
// source URL and base URL
if (eReflowReason_Initial == aReflowState.reason) {
nsAutoString src, base;
if ((NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute("SRC", src)) &&
(src.Length() > 0)) {
mImageLoader.SetURL(src);
if (NS_CONTENT_ATTR_HAS_VALUE ==
mContent->GetAttribute(NS_HTML_BASE_HREF, base)) {
mImageLoader.SetBaseHREF(base);
}
}
}
GetDesiredSize(&aPresContext, aReflowState, aMetrics);
AddBordersAndPadding(&aPresContext, aReflowState, aMetrics, mBorderPadding);
if (nsnull != aMetrics.maxElementSize) {