[tor-commits] [tor-browser/esr24] Bug 913805 - Hold a lock on the RasterImage in ScaleRequest so that the srcFrame doesn't go away if we need to discard images to free up memory. r=seth, a=abillings
mikeperry at torproject.org
mikeperry at torproject.org
Fri Aug 29 05:26:42 UTC 2014
commit f3f9e0f211c9c179f9f240eafd4bfcbfc903c3d4
Author: George Wright <george at mozilla.com>
Date: Fri Jun 6 14:26:21 2014 -0400
Bug 913805 - Hold a lock on the RasterImage in ScaleRequest so that the srcFrame doesn't go away if we need to discard images to free up memory. r=seth, a=abillings
---
image/src/RasterImage.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/image/src/RasterImage.cpp b/image/src/RasterImage.cpp
index 42d4232..fdd9654 100644
--- a/image/src/RasterImage.cpp
+++ b/image/src/RasterImage.cpp
@@ -208,6 +208,9 @@ public:
bool success = false;
if (!dstLocked) {
+ // We need to hold a lock onto the RasterImage object itself so that
+ // it (and its associated imgFrames) aren't marked as discardable.
+ bool imgLocked = NS_SUCCEEDED(image->LockImage());
bool srcLocked = NS_SUCCEEDED(srcFrame->LockImageData());
dstLocked = NS_SUCCEEDED(dstFrame->LockImageData());
@@ -216,7 +219,7 @@ public:
success = srcLocked && NS_SUCCEEDED(srcFrame->GetSurface(getter_AddRefs(srcASurf)));
success = success && dstLocked && NS_SUCCEEDED(dstFrame->GetSurface(getter_AddRefs(dstASurf)));
- success = success && srcLocked && dstLocked && srcASurf && dstASurf;
+ success = success && imgLocked && srcLocked && dstLocked && srcASurf && dstASurf;
if (success) {
srcSurface = srcASurf->GetAsImageSurface();
@@ -254,6 +257,7 @@ public:
bool success = false;
if (dstLocked) {
success = NS_SUCCEEDED(dstFrame->UnlockImageData());
+ success = success && NS_SUCCEEDED(image->UnlockImage());
dstLocked = false;
srcData = nullptr;
More information about the tor-commits
mailing list