From fb720292a321d40bc019bc036f5d909f6f72393e Mon Sep 17 00:00:00 2001 From: Nicholas Cameron Date: Tue, 24 Jul 2012 22:18:40 +1200 Subject: [PATCH] Bug 764125; sort out preferred and fallback Azure backends for all platforms (canvas and prefs). r=Bas --- .../src/nsCanvasRenderingContext2DAzure.cpp | 29 ++++--------------- modules/libpref/src/init/all.js | 7 +++++ 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp index 0d9ee32b779..04358c19e1c 100644 --- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp +++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp @@ -549,27 +549,6 @@ PRUint8 (*nsCanvasRenderingContext2DAzure::sPremultiplyTable)[256] = nsnull; namespace mozilla { namespace dom { -static bool -AzureCanvasEnabledOnPlatform() -{ -#ifdef XP_WIN - if (gfxWindowsPlatform::GetPlatform()->GetRenderMode() != - gfxWindowsPlatform::RENDER_DIRECT2D || - !gfxWindowsPlatform::GetPlatform()->DWriteEnabled()) { - static bool checkedPref = false; - static bool preferSkia; - if (!checkedPref) { - preferSkia = Preferences::GetBool("gfx.canvas.azure.prefer-skia", false); - checkedPref = true; - } - return preferSkia; - } -#elif !defined(XP_MACOSX) && !defined(ANDROID) && !defined(LINUX) - return false; -#endif - return true; -} - bool AzureCanvasEnabled() { @@ -579,7 +558,9 @@ AzureCanvasEnabled() azureEnabled = Preferences::GetBool("gfx.canvas.azure.enabled", false); checkedPref = true; } - return azureEnabled && AzureCanvasEnabledOnPlatform(); + + BackendType dontCare; + return azureEnabled && gfxPlatform::GetPlatform()->SupportsAzure(dontCare); } } @@ -588,7 +569,9 @@ AzureCanvasEnabled() nsresult NS_NewCanvasRenderingContext2DAzure(nsIDOMCanvasRenderingContext2D** aResult) { - if (!AzureCanvasEnabledOnPlatform()) { + // XXX[nrc] remove this check when Thebes canvas is removed + // (because we will always support Azure) + if (!AzureCanvasEnabled()) { return NS_ERROR_NOT_AVAILABLE; } diff --git a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js index d9b8eb657e8..9c076b777f9 100644 --- a/modules/libpref/src/init/all.js +++ b/modules/libpref/src/init/all.js @@ -225,10 +225,17 @@ pref("gfx.font_rendering.directwrite.use_gdi_table_loading", true); #ifdef XP_WIN pref("gfx.canvas.azure.enabled", true); +// comma separated list of backends to use in order of preference +// e.g., pref("gfx.canvas.azure.backends", "direct2d,skia,cairo"); +pref("gfx.canvas.azure.backends", "direct2d"); pref("gfx.content.azure.enabled", true); #else #ifdef XP_MACOSX pref("gfx.canvas.azure.enabled", true); +pref("gfx.canvas.azure.backends", "cg"); +#else +pref("gfx.canvas.azure.enabled", false); +pref("gfx.canvas.azure.backends", "cairo,skia"); #endif #endif