mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1196476 - Replace ProgressTracker::FirstObserverIs() with a simpler mechanism on imgRequest. r=tn
This commit is contained in:
parent
eda90e10c3
commit
e0b216d11c
@ -425,20 +425,6 @@ ProgressTracker::RemoveObserver(IProgressObserver* aObserver)
|
||||
return removed;
|
||||
}
|
||||
|
||||
bool
|
||||
ProgressTracker::FirstObserverIs(IProgressObserver* aObserver)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread(), "Use mObservers on main thread only");
|
||||
ObserverArray::ForwardIterator iter(mObservers);
|
||||
while (iter.HasMore()) {
|
||||
nsRefPtr<IProgressObserver> observer = iter.GetNext().get();
|
||||
if (observer) {
|
||||
return observer.get() == aObserver;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
ProgressTracker::OnUnlockedDraw()
|
||||
{
|
||||
|
@ -155,11 +155,6 @@ public:
|
||||
return mObservers.Length();
|
||||
}
|
||||
|
||||
// This is intentionally non-general because its sole purpose is to support
|
||||
// some obscure network priority logic in imgRequest. That stuff could
|
||||
// probably be improved, but it's too scary to mess with at the moment.
|
||||
bool FirstObserverIs(IProgressObserver* aObserver);
|
||||
|
||||
// Resets our weak reference to our image. Image subclasses should call this
|
||||
// in their destructor.
|
||||
void ResetImage();
|
||||
|
@ -64,6 +64,7 @@ imgRequest::imgRequest(imgLoader* aLoader, const ImageCacheKey& aCacheKey)
|
||||
: mLoader(aLoader)
|
||||
, mCacheKey(aCacheKey)
|
||||
, mLoadId(nullptr)
|
||||
, mFirstProxy(nullptr)
|
||||
, mValidator(nullptr)
|
||||
, mInnerWindowId(0)
|
||||
, mCORSMode(imgIRequest::CORS_NONE)
|
||||
@ -218,6 +219,12 @@ imgRequest::AddProxy(imgRequestProxy* proxy)
|
||||
NS_PRECONDITION(proxy, "null imgRequestProxy passed in");
|
||||
LOG_SCOPE_WITH_PARAM(GetImgLog(), "imgRequest::AddProxy", "proxy", proxy);
|
||||
|
||||
if (!mFirstProxy) {
|
||||
// Save a raw pointer to the first proxy we see, for use in the network
|
||||
// priority logic.
|
||||
mFirstProxy = proxy;
|
||||
}
|
||||
|
||||
// If we're empty before adding, we have to tell the loader we now have
|
||||
// proxies.
|
||||
nsRefPtr<ProgressTracker> progressTracker = GetProgressTracker();
|
||||
@ -535,8 +542,7 @@ imgRequest::AdjustPriority(imgRequestProxy* proxy, int32_t delta)
|
||||
// concern though is that image loads remain lower priority than other pieces
|
||||
// of content such as link clicks, CSS, and JS.
|
||||
//
|
||||
nsRefPtr<ProgressTracker> progressTracker = GetProgressTracker();
|
||||
if (!progressTracker->FirstObserverIs(proxy)) {
|
||||
if (!mFirstProxy || proxy != mFirstProxy) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -256,6 +256,10 @@ private:
|
||||
|
||||
void* mLoadId;
|
||||
|
||||
/// Raw pointer to the first proxy that was added to this imgRequest. Use only
|
||||
/// pointer comparisons; there's no guarantee this will remain valid.
|
||||
void* mFirstProxy;
|
||||
|
||||
imgCacheValidator* mValidator;
|
||||
nsCOMPtr<nsIAsyncVerifyRedirectCallback> mRedirectCallback;
|
||||
nsCOMPtr<nsIChannel> mNewRedirectChannel;
|
||||
|
Loading…
Reference in New Issue
Block a user