From 3f6fe8510244d9456ef449978f3d625e2b9f4ba8 Mon Sep 17 00:00:00 2001 From: "paper%animecity.nu" Date: Wed, 5 Mar 2003 23:55:53 +0000 Subject: [PATCH] Bug 196072. Don't invalidate image area when incoming image data is for different frame. r=pavlov sr=bz git-svn-id: svn://10.0.0.236/trunk@138996 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/generic/nsImageFrame.cpp | 13 +++++++++++++ mozilla/layout/html/base/src/nsImageFrame.cpp | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/mozilla/layout/generic/nsImageFrame.cpp b/mozilla/layout/generic/nsImageFrame.cpp index 66bc3927ea8..2096a8fbbea 100644 --- a/mozilla/layout/generic/nsImageFrame.cpp +++ b/mozilla/layout/generic/nsImageFrame.cpp @@ -95,6 +95,7 @@ #include "nsCSSFrameConstructor.h" #include "nsIPrefBranch.h" #include "nsIPrefService.h" +#include "gfxIImageFrame.h" #ifdef DEBUG #undef NOISY_IMAGE_LOADING @@ -438,6 +439,18 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, if (whichLoad != 0) return NS_OK; struct ImageLoad *load= &mLoads[whichLoad]; + // Don't invalidate if the current visible frame isn't the one the data is + // from + if (load->mRequest) { + nsCOMPtr container; + load->mRequest->GetImage(getter_AddRefs(container)); + if (container) { + nsCOMPtr gfxImgFrame; + container->GetCurrentFrame(getter_AddRefs(gfxImgFrame)); + if (gfxImgFrame != aFrame) + return NS_OK; + } + } nsRect r(aRect->x, aRect->y, aRect->width, aRect->height); diff --git a/mozilla/layout/html/base/src/nsImageFrame.cpp b/mozilla/layout/html/base/src/nsImageFrame.cpp index 66bc3927ea8..2096a8fbbea 100644 --- a/mozilla/layout/html/base/src/nsImageFrame.cpp +++ b/mozilla/layout/html/base/src/nsImageFrame.cpp @@ -95,6 +95,7 @@ #include "nsCSSFrameConstructor.h" #include "nsIPrefBranch.h" #include "nsIPrefService.h" +#include "gfxIImageFrame.h" #ifdef DEBUG #undef NOISY_IMAGE_LOADING @@ -438,6 +439,18 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, if (whichLoad != 0) return NS_OK; struct ImageLoad *load= &mLoads[whichLoad]; + // Don't invalidate if the current visible frame isn't the one the data is + // from + if (load->mRequest) { + nsCOMPtr container; + load->mRequest->GetImage(getter_AddRefs(container)); + if (container) { + nsCOMPtr gfxImgFrame; + container->GetCurrentFrame(getter_AddRefs(gfxImgFrame)); + if (gfxImgFrame != aFrame) + return NS_OK; + } + } nsRect r(aRect->x, aRect->y, aRect->width, aRect->height);