36 lines
1.3 KiB
Diff
36 lines
1.3 KiB
Diff
From 5ff75fbe51d5760a96b4e614617c9cbf35f1fbaa Mon Sep 17 00:00:00 2001
|
|
From: Markus Stange <mstange@themasta.com>
|
|
Date: Mon, 5 Jan 2015 18:40:27 +0100
|
|
Subject: [PATCH] Bug 1117304 - Make sure the tile filter doesn't call CopyRect
|
|
on surfaces with different formats. r=Bas, a=sledru
|
|
|
|
---
|
|
gfx/2d/FilterNodeSoftware.cpp | 11 ++++++++++-
|
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
|
|
index 396d0da..10d92c6 100644
|
|
--- a/gfx/2d/FilterNodeSoftware.cpp
|
|
+++ b/gfx/2d/FilterNodeSoftware.cpp
|
|
@@ -1568,7 +1568,16 @@ FilterNodeTileSoftware::Render(const IntRect& aRect)
|
|
return nullptr;
|
|
}
|
|
}
|
|
- MOZ_ASSERT(input->GetFormat() == target->GetFormat(), "different surface formats from the same input?");
|
|
+
|
|
+ if (input->GetFormat() != target->GetFormat()) {
|
|
+ // Different rectangles of the input can have different formats. If
|
|
+ // that happens, just convert everything to B8G8R8A8.
|
|
+ target = FilterProcessing::ConvertToB8G8R8A8(target);
|
|
+ input = FilterProcessing::ConvertToB8G8R8A8(input);
|
|
+ if (MOZ2D_WARN_IF(!target) || MOZ2D_WARN_IF(!input)) {
|
|
+ return nullptr;
|
|
+ }
|
|
+ }
|
|
|
|
CopyRect(input, target, srcRect - srcRect.TopLeft(), destRect.TopLeft() - aRect.TopLeft());
|
|
}
|
|
--
|
|
2.2.1
|
|
|