| Index: Source/platform/graphics/GraphicsContext.cpp
|
| diff --git a/Source/platform/graphics/GraphicsContext.cpp b/Source/platform/graphics/GraphicsContext.cpp
|
| index 1fdbb54a9eca53d367f662b2f557efa68680b116..07f090479d9a18b5a6e5731ad119ba19223a00a2 100644
|
| --- a/Source/platform/graphics/GraphicsContext.cpp
|
| +++ b/Source/platform/graphics/GraphicsContext.cpp
|
| @@ -299,19 +299,26 @@ void GraphicsContext::setFillGradient(PassRefPtr<Gradient> gradient)
|
|
|
| void GraphicsContext::setShadow(const FloatSize& offset, float blur, const Color& color,
|
| DrawLooperBuilder::ShadowTransformMode shadowTransformMode,
|
| - DrawLooperBuilder::ShadowAlphaMode shadowAlphaMode)
|
| + DrawLooperBuilder::ShadowAlphaMode shadowAlphaMode, ShadowMode shadowMode)
|
| {
|
| if (contextDisabled())
|
| return;
|
|
|
| + OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::create();
|
| if (!color.alpha() || (!offset.width() && !offset.height() && !blur)) {
|
| + if (shadowMode == DrawShadowOnly) {
|
| + // shadow only, but there is no shadow: use an empty draw looper to disable rendering of the source primitive
|
| + setDrawLooper(drawLooperBuilder.release());
|
| + return;
|
| + }
|
| clearShadow();
|
| return;
|
| }
|
|
|
| - OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::create();
|
| drawLooperBuilder->addShadow(offset, blur, color, shadowTransformMode, shadowAlphaMode);
|
| - drawLooperBuilder->addUnmodifiedContent();
|
| + if (shadowMode == DrawShadowAndForeground) {
|
| + drawLooperBuilder->addUnmodifiedContent();
|
| + }
|
| setDrawLooper(drawLooperBuilder.release());
|
| }
|
|
|
|
|