# HG changeset patch # User Wolfgang Rosenauer # Date 1427029338 -3600 # Node ID 0d861c33ec70bd8f86cf53a78c8ca49f2f540c66 # Parent b199b6c7d84a13620340776b881b71e6f38ecbc2# Parent e160750ffe9175c05d7f6220d4c1c818b5caa744 37.0b7 and merge from firefox36 diff -r e160750ffe91 -r 0d861c33ec70 MozillaFirefox/MozillaFirefox.changes --- a/MozillaFirefox/MozillaFirefox.changes Sun Mar 22 13:58:24 2015 +0100 +++ b/MozillaFirefox/MozillaFirefox.changes Sun Mar 22 14:02:18 2015 +0100 @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Sun Mar 22 13:00:28 UTC 2015 - wr@rosenauer.org + +- update to Firefox 37.0b7 +- removed obsolete patch + * mozilla-bmo1088588.patch +- requires NSPR 4.10.8 + +------------------------------------------------------------------- Sat Mar 21 09:03:12 UTC 2015 - wr@rosenauer.org - update to Firefox 36.0.4 (bnc#923534) diff -r e160750ffe91 -r 0d861c33ec70 MozillaFirefox/MozillaFirefox.spec --- a/MozillaFirefox/MozillaFirefox.spec Sun Mar 22 13:58:24 2015 +0100 +++ b/MozillaFirefox/MozillaFirefox.spec Sun Mar 22 14:02:18 2015 +0100 @@ -19,9 +19,9 @@ # changed with every update %define major 36 -%define mainver %major.0.4 -%define update_channel release -%define releasedate 2015032000 +%define mainver %major.99 +%define update_channel beta +%define releasedate 2015032100 # general build definitions %if "%{update_channel}" != "aurora" @@ -76,7 +76,7 @@ BuildRequires: libnotify-devel BuildRequires: libproxy-devel BuildRequires: makeinfo -BuildRequires: mozilla-nspr-devel >= 4.10.7 +BuildRequires: mozilla-nspr-devel >= 4.10.8 BuildRequires: mozilla-nss-devel >= 3.17.4 BuildRequires: nss-shared-helper-devel BuildRequires: python-devel @@ -143,9 +143,8 @@ Patch9: mozilla-repo.patch Patch10: mozilla-icu-strncat.patch Patch11: mozilla-arm-disable-edsp.patch -Patch12: mozilla-bmo1088588.patch -Patch13: mozilla-openaes-decl.patch -Patch14: mozilla-skia-bmo1136958.patch +Patch12: mozilla-openaes-decl.patch +Patch13: mozilla-skia-bmo1136958.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-no-default-ualocale.patch @@ -199,7 +198,7 @@ %package translations-other Summary: Extra translations for %{appname} Group: System/Localization -Provides: locale(%{name}:ach;af;ak;as;ast;be;bg;bn_BD;bn_IN;br;bs;csb;cy;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gu_IN;he;hi_IN;hr;hy_AM;id;is;kk;km;kn;ku;lg;lij;lt;lv;mai;mk;ml;mr;nn_NO;nso;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;ta_LK;te;th;tr;uk;vi;zu) +Provides: locale(%{name}:ach;af;ak;as;ast;be;bg;bn_BD;bn_IN;br;bs;csb;cy;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gu_IN;he;hi_IN;hr;hy_AM;id;is;kk;km;kn;ku;lg;lij;lt;lv;mai;mk;ml;mr;nn_NO;nso;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;ta_LK;te;th;tr;uk;uz;vi;zu) Requires: %{name} = %{version} Obsoletes: %{name}-translations < %{version}-%{release} @@ -259,7 +258,6 @@ %patch11 -p1 %patch12 -p1 %patch13 -p1 -%patch14 -p1 # Firefox %patch101 -p1 %patch102 -p1 diff -r e160750ffe91 -r 0d861c33ec70 MozillaFirefox/create-tar.sh --- a/MozillaFirefox/create-tar.sh Sun Mar 22 13:58:24 2015 +0100 +++ b/MozillaFirefox/create-tar.sh Sun Mar 22 14:02:18 2015 +0100 @@ -1,9 +1,9 @@ #!/bin/bash -CHANNEL="release" +CHANNEL="beta" BRANCH="releases/mozilla-$CHANNEL" -RELEASE_TAG="FIREFOX_36_0_4_RELEASE" -VERSION="36.0.4" +RELEASE_TAG="FIREFOX_37_0b7_RELEASE" +VERSION="36.99" # mozilla if [ -d mozilla ]; then diff -r e160750ffe91 -r 0d861c33ec70 MozillaFirefox/mozilla-bmo1088588.patch --- a/MozillaFirefox/mozilla-bmo1088588.patch Sun Mar 22 13:58:24 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../mozilla-bmo1088588.patch \ No newline at end of file diff -r e160750ffe91 -r 0d861c33ec70 firefox-kde.patch --- a/firefox-kde.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/firefox-kde.patch Sun Mar 22 14:02:18 2015 +0100 @@ -1,11 +1,11 @@ # HG changeset patch -# Parent ae5fa7b97ee57df54434bebc6dbda400b7525340 +# Parent 409c60c5454efb61ebecf0edc8822a0e92f563f3 diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul new file mode 100644 --- /dev/null +++ b/browser/base/content/browser-kde.xul -@@ -0,0 +1,1272 @@ +@@ -0,0 +1,1288 @@ +#filter substitution + +# -*- Mode: HTML -*- @@ -295,17 +295,22 @@ + + + ++ ++ ++ ++ ++ + + +#ifdef CAN_DRAW_IN_TITLEBAR @@ -642,7 +658,6 @@ + + + -+ + + ++ + + @@ -1333,10 +1349,10 @@ * content/browser/browser.xul (content/browser.xul) +* content/browser/browser-kde.xul (content/browser-kde.xul) +% override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde + * content/browser/browser-eme.properties (content/browser-eme.properties) * content/browser/browser-tabPreviews.xml (content/browser-tabPreviews.xml) * content/browser/chatWindow.xul (content/chatWindow.xul) content/browser/content.js (content/content.js) - content/browser/content-UITour.js (content/content-UITour.js) content/browser/defaultthemes/1.footer.jpg (content/defaultthemes/1.footer.jpg) content/browser/defaultthemes/1.header.jpg (content/defaultthemes/1.header.jpg) content/browser/defaultthemes/1.icon.jpg (content/defaultthemes/1.icon.jpg) @@ -1427,7 +1443,7 @@ // when the user will select the default. We refresh here periodically // in case the default changes. On other Windows OS's defaults can also // be set while the prefs are open. -@@ -572,16 +578,27 @@ var gMainPane = { +@@ -549,16 +555,27 @@ var gMainPane = { */ setDefaultBrowser: function() { @@ -1895,7 +1911,7 @@ diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -689,19 +689,21 @@ +@@ -688,19 +688,21 @@ @RESPATH@/defaults/autoconfig/prefcalls.js @RESPATH@/browser/defaults/profile/prefs.js diff -r e160750ffe91 -r 0d861c33ec70 firefox-multilocale-chrome.patch --- a/firefox-multilocale-chrome.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/firefox-multilocale-chrome.patch Sun Mar 22 14:02:18 2015 +0100 @@ -1,12 +1,13 @@ # HG changeset patch # Parent 16846914f968944f991c8b12fdc38ce8fc099d73 # User Wolfgang Rosenauer +# Parent c0a406c7a6cc5edc8fb34549428866ff39ad878f Add searchplugins to chrome packaging for proper localization diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js -@@ -389,16 +389,20 @@ pref("browser.helperApps.deleteTempFileO +@@ -378,16 +378,20 @@ pref("browser.helperApps.deleteTempFileO #endif // search engines URL @@ -19,18 +20,18 @@ +pref("browser.search.loadFromJars", true); +pref("browser.search.jarURIs", "chrome://browser/locale/searchplugins/"); + - // disable logging for the search service by default - pref("browser.search.log", false); - // Ordering of Search Engines in the Engine list. pref("browser.search.order.1", "chrome://browser-region/locale/region.properties"); pref("browser.search.order.2", "chrome://browser-region/locale/region.properties"); pref("browser.search.order.3", "chrome://browser-region/locale/region.properties"); + // Market-specific search defaults (US market only) + pref("browser.search.geoSpecificDefaults", true); + pref("browser.search.defaultenginename.US", "data:text/plain,browser.search.defaultenginename.US=Yahoo"); diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in --- a/browser/locales/Makefile.in +++ b/browser/locales/Makefile.in -@@ -66,24 +66,27 @@ STUB_HOOK = $(NSINSTALL) -D '$(_ABS_DIST +@@ -66,27 +66,30 @@ STUB_HOOK = $(NSINSTALL) -D '$(_ABS_DIST cp ../installer/windows/l10ngen/stub.exe '$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_STUB_BASENAME).exe'; \ chmod 0755 '$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_STUB_BASENAME).exe'; \ $(NULL) @@ -41,17 +42,20 @@ else -SEARCHPLUGINS_NAMES = $(shell cat $(call MERGE_FILE,/searchplugins/list.txt)) ddg +SEARCHPLUGINS_NAMES = $(shell cat \ -+ $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \ -+ @srcdir@/en-US/searchplugins/list.txt ) ) ddg ++ $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \ ++ @srcdir@/en-US/searchplugins/list.txt ) ) ddg endif SEARCHPLUGINS_PATH := $(FINAL_TARGET)/searchplugins # metro build call a searchplugins target for search engine plugins .PHONY: searchplugins SEARCHPLUGINS_TARGET := libs searchplugins --SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_NAMES)),$(or $(wildcard $(call MERGE_FILE,searchplugins/$(plugin))),$(info Missing searchplugin: $(plugin)))) +-SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_NAMES)),$(or $(wildcard $(call EN_US_OR_L10N_FILE,searchplugins/$(plugin))),$(info Missing searchplugin: $(plugin)))) ++#SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_NAMES)),$(or $(wildcard $(call EN_US_OR_L10N_FILE,searchplugins/$(plugin))),$(info Missing searchplugin: $(plugin)))) ++SEARCHPLUGINS := $(addsuffix .xml,$(SEARCHPLUGINS_NAMES)) + # Some locale-specific search plugins may have preprocessor directives, but the + # default en-US ones do not. + SEARCHPLUGINS_FLAGS := --silence-missing-directive-warnings -PP_TARGETS += SEARCHPLUGINS -+#SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_NAMES)),$(or $(wildcard $(call MERGE_FILE,searchplugins/$(plugin))),$(info Missing searchplugin: $(plugin)))) -+SEARCHPLUGINS := $(addsuffix .xml,$(SEARCHPLUGINS_NAMES)) +#PP_TARGETS += SEARCHPLUGINS # Required for l10n.mk - defines a list of app sub dirs that should @@ -61,7 +65,7 @@ DIST_SUBDIRS = browser metro else DIST_SUBDIRS = $(DIST_SUBDIR) -@@ -117,16 +120,39 @@ NO_JA_JP_MAC_AB_CD := $(if $(filter ja-J +@@ -120,16 +123,39 @@ NO_JA_JP_MAC_AB_CD := $(if $(filter ja-J libs:: $(FINAL_TARGET)/defaults/profile/bookmarks.html ; libs:: $(addprefix generic/profile/,$(PROFILE_FILES)) @@ -104,7 +108,7 @@ diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn --- a/browser/locales/jar.mn +++ b/browser/locales/jar.mn -@@ -141,14 +141,15 @@ +@@ -146,14 +146,15 @@ locale/browser/syncQuota.properties (%chrome/browser/syncQuota.properties) #endif % locale browser-region @AB_CD@ %locale/browser-region/ diff -r e160750ffe91 -r 0d861c33ec70 mozilla-bmo1088588.patch --- a/mozilla-bmo1088588.patch Sun Mar 22 13:58:24 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -# HG changeset patch -# User Dirk Mueller -# Date 1414618964 0 -# Wed Oct 29 21:42:44 2014 +0000 -# Node ID 8e3825b2d12a9f295b6ff9a972340b9d84fce068 -# Parent 262e4847ad6cca40d7375e40a0d6ebe8b372e3d3 -Bug 1088588 - fix ifdef in X11TextureSourceOGL.cpp, r?nical - -diff --git a/gfx/layers/opengl/X11TextureSourceOGL.cpp b/gfx/layers/opengl/X11TextureSourceOGL.cpp ---- a/gfx/layers/opengl/X11TextureSourceOGL.cpp -+++ b/gfx/layers/opengl/X11TextureSourceOGL.cpp -@@ -94,14 +94,14 @@ X11TextureSourceOGL::ContentTypeToSurfac - switch (aType) { - case gfxContentType::COLOR: - return SurfaceFormat::R8G8B8X8; - case gfxContentType::COLOR_ALPHA: - return SurfaceFormat::R8G8B8A8; - default: - return SurfaceFormat::UNKNOWN; - } - } - -+} -+} -+ - #endif -- --} --} diff -r e160750ffe91 -r 0d861c33ec70 mozilla-kde.patch --- a/mozilla-kde.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/mozilla-kde.patch Sun Mar 22 14:02:18 2015 +0100 @@ -1,5 +1,5 @@ # HG changeset patch -# Parent aba9432d1fd32a118ba24e92c6b6e99ddb0b9bdc +# Parent 2b183c17f6e4693372442af1a8ee0be364f8cba0 Description: Add KDE integration to Firefox (toolkit parts) Author: Wolfgang Rosenauer Author: Lubos Lunak @@ -46,7 +46,7 @@ #include "prefread.h" #include "prefapi_private_data.h" -@@ -1172,16 +1173,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char +@@ -1165,16 +1166,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char static nsresult pref_LoadPrefsInDirList(const char *listId) { @@ -81,7 +81,7 @@ return NS_OK; bool hasMore; -@@ -1197,17 +1216,17 @@ static nsresult pref_LoadPrefsInDirList( +@@ -1190,17 +1209,17 @@ static nsresult pref_LoadPrefsInDirList( nsAutoCString leaf; path->GetNativeLeafName(leaf); @@ -100,7 +100,7 @@ { nsZipItemPtr manifest(jarReader, name, true); NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE); -@@ -1301,26 +1320,38 @@ static nsresult pref_InitInitialObjects( +@@ -1294,26 +1313,38 @@ static nsresult pref_InitInitialObjects( /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */ static const char* specialFiles[] = { #if defined(XP_MACOSX) @@ -223,9 +223,9 @@ #ifdef MOZ_WIDGET_ANDROID #include "AndroidBridge.h" - using namespace mozilla::widget::android; #endif -@@ -2717,16 +2721,25 @@ nsDownload::SetState(DownloadState aStat + +@@ -2716,16 +2720,25 @@ nsDownload::SetState(DownloadState aStat nsCOMPtr pref(do_GetService(NS_PREFSERVICE_CONTRACTID)); // Master pref to control this function. @@ -251,12 +251,12 @@ int64_t goat = PR_Now() - mStartTime; showTaskbarAlert = goat > alertIntervalUSec; -@@ -2757,16 +2770,17 @@ nsDownload::SetState(DownloadState aStat +@@ -2756,16 +2769,17 @@ nsDownload::SetState(DownloadState aStat NS_LITERAL_STRING(DOWNLOAD_MANAGER_ALERT_ICON), title, message, !removeWhenDone, mPrivate ? NS_LITERAL_STRING("private") : NS_LITERAL_STRING("non-private"), mDownloadManager, EmptyString(), NS_LITERAL_STRING("auto"), - EmptyString(), EmptyString(), nullptr); + EmptyString(), EmptyString(), nullptr, mPrivate); } } } @@ -3137,13 +3137,13 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp --- a/widget/gtk/nsFilePicker.cpp +++ b/widget/gtk/nsFilePicker.cpp -@@ -1,32 +1,34 @@ - /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ - /* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this +@@ -4,32 +4,34 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/Types.h" + #include + #include + #include #include +#include @@ -3172,7 +3172,7 @@ nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr; void -@@ -224,17 +226,19 @@ nsFilePicker::AppendFilters(int32_t aFil +@@ -238,17 +240,19 @@ nsFilePicker::AppendFilters(int32_t aFil return nsBaseFilePicker::AppendFilters(aFilterMask); } @@ -3193,7 +3193,7 @@ mFilters.AppendElement(filter); mFilterNames.AppendElement(name); -@@ -349,16 +353,32 @@ nsFilePicker::Show(int16_t *aReturn) +@@ -363,16 +367,32 @@ nsFilePicker::Show(int16_t *aReturn) NS_IMETHODIMP nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) @@ -3226,7 +3226,7 @@ GtkFileChooserAction action = GetGtkFileChooserAction(mMode); const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE) -@@ -537,8 +557,235 @@ nsFilePicker::Done(GtkWidget* file_choos +@@ -551,8 +571,235 @@ nsFilePicker::Done(GtkWidget* file_choos if (mCallback) { mCallback->Done(result); mCallback = nullptr; @@ -3561,7 +3561,7 @@ mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", "RELEASE", osVersion); - isTablet = mozilla::widget::android::GeckoAppShell::IsTablet(); + isTablet = mozilla::widget::GeckoAppShell::IsTablet(); } + desktop = NS_LITERAL_STRING("android"); #endif diff -r e160750ffe91 -r 0d861c33ec70 mozilla-openaes-decl.patch --- a/mozilla-openaes-decl.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/mozilla-openaes-decl.patch Sun Mar 22 14:02:18 2015 +0100 @@ -1,17 +1,18 @@ # HG changeset patch # Parent 33024abb3c58dab7239e32388df58e14f99defd5 # User Wolfgang Rosenauer +# Parent 12305a99d90ce098f8f11f5609571cd709b6e2de diff --git a/media/gmp-clearkey/0.1/openaes/oaes_lib.c b/media/gmp-clearkey/0.1/openaes/oaes_lib.c --- a/media/gmp-clearkey/0.1/openaes/oaes_lib.c +++ b/media/gmp-clearkey/0.1/openaes/oaes_lib.c -@@ -27,16 +27,17 @@ +@@ -24,16 +24,17 @@ + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * --------------------------------------------------------------------------- */ - static const char _NR[] = { - 0x4e,0x61,0x62,0x69,0x6c,0x20,0x53,0x2e,0x20, - 0x41,0x6c,0x20,0x52,0x61,0x6d,0x6c,0x69,0x00 }; #include +#include diff -r e160750ffe91 -r 0d861c33ec70 mozilla-repo.patch --- a/mozilla-repo.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/mozilla-repo.patch Sun Mar 22 14:02:18 2015 +0100 @@ -1,5 +1,6 @@ # HG changeset patch # Parent 80b6464bd883864fce57e8748010869af1be69e9 +# Parent d160c6876c5f05d902b391551bf4f684254b3c7d diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/installer/package-name.mk --- a/toolkit/mozapps/installer/package-name.mk @@ -10,7 +11,7 @@ ifndef INCLUDED_RCS_MK USE_RCS_MK := 1 - include $(topsrcdir)/config/makefiles/makeutils.mk + include $(MOZILLA_DIR)/config/makefiles/makeutils.mk endif -MOZ_SOURCE_STAMP = $(firstword $(shell hg -R $(MOZILLA_DIR) parent --template="{node|short}\n" 2>/dev/null)) diff -r e160750ffe91 -r 0d861c33ec70 mozilla-shared-nss-db.patch --- a/mozilla-shared-nss-db.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/mozilla-shared-nss-db.patch Sun Mar 22 14:02:18 2015 +0100 @@ -7,7 +7,7 @@ diff --git a/configure.in b/configure.in --- a/configure.in +++ b/configure.in -@@ -8268,16 +8268,31 @@ if test "$MOZ_ENABLE_SKIA"; then +@@ -8207,16 +8207,31 @@ if test "$MOZ_ENABLE_SKIA"; then MOZ_ENABLE_SKIA_GPU=1 AC_DEFINE(USE_SKIA_GPU) AC_SUBST(MOZ_ENABLE_SKIA_GPU) @@ -84,10 +84,10 @@ #include "ExtendedValidation.h" #include "NSSCertDBTrustDomain.h" #include "mozilla/Telemetry.h" + #include "nsAppDirectoryServiceDefs.h" #include "nsCertVerificationThread.h" #include "nsAppDirectoryServiceDefs.h" - #include "nsComponentManagerUtils.h" -@@ -986,17 +993,31 @@ nsNSSComponent::InitializeNSS() +@@ -996,17 +1003,31 @@ nsNSSComponent::InitializeNSS() if (NS_FAILED(rv)) { nsPSMInitPanic::SetPanic(); return NS_ERROR_NOT_AVAILABLE; diff -r e160750ffe91 -r 0d861c33ec70 mozilla-skia-bmo1136958.patch --- a/mozilla-skia-bmo1136958.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/mozilla-skia-bmo1136958.patch Sun Mar 22 14:02:18 2015 +0100 @@ -1,410 +1,282 @@ -From 8dc9e73b80ec33fe1a1c855829ef1438301a5de1 Mon Sep 17 00:00:00 2001 -From: Mike Hommey -Date: Thu, 26 Feb 2015 14:14:02 +0900 -Subject: [PATCH 1/2] Bug 1136958 - Remove duplicate - SkDiscardableMemory_none.cpp from gfx/skia/moz.build +From a8ab3ec3542469c1d4e0741121eb1be17cc0acb0 Mon Sep 17 00:00:00 2001 +From: Mike Hommey +Date: Mon, 9 Mar 2015 08:42:19 +0900 +Subject: [PATCH] Bug 1136958 - Reintroduce pixman code path removed in bug + 1097776 for --disable-skia builds -And to do so, cleanup gfx/skia/generate_mozbuild.py a little. --- - gfx/skia/generate_mozbuild.py | 53 ++++++++++++++++--------------------------- - gfx/skia/moz.build | 1 - - 2 files changed, 20 insertions(+), 34 deletions(-) + gfx/layers/basic/BasicCompositor.cpp | 94 +++++++++++++++++++++++++++++++--- + gfx/layers/basic/BasicLayerManager.cpp | 88 +++++++++++++++++++++++++++++-- + 2 files changed, 171 insertions(+), 11 deletions(-) -diff --git a/configure.in b/configure.in ---- a/configure.in -+++ b/configure.in -@@ -7997,39 +7997,16 @@ dnl ==================================== - - if test "${OS_TARGET}" = "WINNT"; then - if $PERL -e "exit($MOZ_WINSDK_MAXVER < 0x06020000)"; then - MOZ_ENABLE_DIRECT2D1_1=1 - AC_SUBST(MOZ_ENABLE_DIRECT2D1_1) - fi - fi - --if test "${OS_TARGET}" = "WINNT" -o \ -- "${OS_ARCH}" = "Darwin" -o \ -- "${MOZ_WIDGET_TOOLKIT}" = "android" -o \ -- "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \ -- "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \ -- "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then -- case "${target_cpu}" in -- i*86*|x86_64|arm) -- MOZ_ENABLE_SKIA=1 -- ;; -- *) -- MOZ_ENABLE_SKIA= -- ;; -- esac --else --MOZ_ENABLE_SKIA= --fi -- --MOZ_ARG_ENABLE_BOOL(skia, --[ --enable-skia Enable use of Skia], --MOZ_ENABLE_SKIA=1, --MOZ_ENABLE_SKIA=) -- - MOZ_ARG_DISABLE_BOOL(skia-gpu, - [ --disable-skia-gpu Disable use of Skia-GPU], - MOZ_DISABLE_SKIA_GPU=1, - MOZ_DISABLE_SKIA_GPU=) - - if test "$USE_FC_FREETYPE"; then - if test "$COMPILE_ENVIRONMENT"; then - dnl ======================================================== -@@ -8252,30 +8229,26 @@ AC_SUBST(MOZ_TREE_CAIRO) - AC_SUBST_LIST(MOZ_CAIRO_CFLAGS) - AC_SUBST_LIST(MOZ_CAIRO_LIBS) - AC_SUBST_LIST(MOZ_CAIRO_OSLIBS) - AC_SUBST(MOZ_TREE_PIXMAN) - - dnl ======================================================== - dnl Skia - dnl ======================================================== --if test "$MOZ_ENABLE_SKIA"; then -- AC_DEFINE(MOZ_ENABLE_SKIA) -- AC_DEFINE(USE_SKIA) -- if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then -- AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK) -- fi -- -- if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then -- MOZ_ENABLE_SKIA_GPU=1 -- AC_DEFINE(USE_SKIA_GPU) -- AC_SUBST(MOZ_ENABLE_SKIA_GPU) -- fi --fi --AC_SUBST(MOZ_ENABLE_SKIA) -+AC_DEFINE(USE_SKIA) -+if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then -+ AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK) -+fi -+ -+if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then -+ MOZ_ENABLE_SKIA_GPU=1 -+ AC_DEFINE(USE_SKIA_GPU) -+ AC_SUBST(MOZ_ENABLE_SKIA_GPU) -+fi - - dnl ======================================================== - dnl Check for nss-shared-helper - dnl ======================================================== - - PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper, - [MOZ_ENABLE_NSSHELPER=1], - [MOZ_ENABLE_NSSHELPER=]) -diff --git a/gfx/2d/moz.build b/gfx/2d/moz.build ---- a/gfx/2d/moz.build -+++ b/gfx/2d/moz.build -@@ -64,51 +64,46 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wi - SOURCES += [ - 'DrawTargetD2D1.cpp', - 'FilterNodeD2D1.cpp', - 'RadialGradientEffectD2D1.cpp', - 'SourceSurfaceD2D1.cpp' - ] - DEFINES['USE_D2D1_1'] = True - --if CONFIG['MOZ_ENABLE_SKIA']: -- UNIFIED_SOURCES += [ -- 'convolver.cpp', -- 'DrawTargetSkia.cpp', -- 'PathSkia.cpp', -- 'SourceSurfaceSkia.cpp', -- ] -- SOURCES += [ -- 'image_operations.cpp', # Uses _USE_MATH_DEFINES -- ] -- EXPORTS.mozilla.gfx += [ -- 'HelpersSkia.h', -- ] -+UNIFIED_SOURCES += [ -+ 'convolver.cpp', -+ 'DrawTargetSkia.cpp', -+ 'PathSkia.cpp', -+ 'SourceSurfaceSkia.cpp', -+] -+SOURCES += [ -+ 'image_operations.cpp', # Uses _USE_MATH_DEFINES -+] -+EXPORTS.mozilla.gfx += [ -+ 'HelpersSkia.h', -+] - - # Are we targeting x86 or x64? If so, build SSE2 files. - if CONFIG['INTEL_ARCHITECTURE']: - # VC2005 doesn't support _mm_castsi128_ps, so SSE2 is turned off - if CONFIG['_MSC_VER'] != '1400': - SOURCES += [ - 'BlurSSE2.cpp', -+ 'convolverSSE2.cpp', - 'FilterProcessingSSE2.cpp', - 'ImageScalingSSE2.cpp', - ] -- if CONFIG['MOZ_ENABLE_SKIA']: -- SOURCES += [ -- 'convolverSSE2.cpp', -- ] - DEFINES['USE_SSE2'] = True - # The file uses SSE2 intrinsics, so it needs special compile flags on some - # compilers. - SOURCES['BlurSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] - SOURCES['FilterProcessingSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] - SOURCES['ImageScalingSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] -- if CONFIG['MOZ_ENABLE_SKIA']: -- SOURCES['convolverSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] -+ SOURCES['convolverSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] - - UNIFIED_SOURCES += [ - 'Blur.cpp', - 'DataSourceSurface.cpp', - 'DataSurfaceHelpers.cpp', - 'DrawEventRecorder.cpp', - 'DrawTarget.cpp', - 'DrawTargetCairo.cpp', -diff --git a/gfx/moz.build b/gfx/moz.build ---- a/gfx/moz.build -+++ b/gfx/moz.build -@@ -17,16 +17,15 @@ DIRS += [ - 'layers', - 'graphite2/src', - 'harfbuzz/src', - 'ots/src', - 'thebes', - 'ipc', - ] - --if CONFIG['MOZ_ENABLE_SKIA']: -- DIRS += ['skia'] -+DIRS += ['skia'] - - if CONFIG['ENABLE_TESTS']: - DIRS += ['tests/gtest'] - - TEST_DIRS += ['tests'] +diff --git a/gfx/layers/basic/BasicCompositor.cpp b/gfx/layers/basic/BasicCompositor.cpp +index 0bef076..000b591 100644 +--- a/gfx/layers/basic/BasicCompositor.cpp ++++ b/gfx/layers/basic/BasicCompositor.cpp +@@ -17,8 +17,13 @@ + #include + #include "ImageContainer.h" + #include "gfxPrefs.h" ++#ifdef MOZ_ENABLE_SKIA + #include "skia/SkCanvas.h" // for SkCanvas + #include "skia/SkBitmapDevice.h" // for SkBitmapDevice ++#else ++#define PIXMAN_DONT_DEFINE_STDINT ++#include "pixman.h" // for pixman_f_transform, etc ++#endif -diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py ---- a/gfx/skia/generate_mozbuild.py -+++ b/gfx/skia/generate_mozbuild.py -@@ -1,13 +1,14 @@ - #!/usr/bin/env python - - import os - - import locale -+from collections import defaultdict - locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') - - header = """ - # - # ##### ####### # # # # # # - # ## # # # # # # # # # # # # - # ## # # # # # # # # # # # - # ## #### # # # # # # # # # # -@@ -187,17 +188,17 @@ def generate_platform_sources(): - - for plat in platforms: - if os.system("cd trunk && GYP_GENERATORS=dump_mozbuild ./gyp_skia -D OS=%s gyp/skia_lib.gyp" % plat) != 0: - print 'Failed to generate sources for ' + plat - continue - - - f = open('trunk/sources.json'); -- sources[plat] = set(json.load(f)); -+ sources[plat] = set(v.replace('../', 'trunk/') for v in json.load(f)); - f.close() - - return dict(sources.items() + generate_opt_sources().items()) - - - def generate_separated_sources(platform_sources): - blacklist = [ - 'ChromeUtils', -@@ -232,17 +233,17 @@ def generate_separated_sources(platform_ - - def isblacklisted(value): - for item in blacklist: - if value.find(item) >= 0: - return True - - return False - -- separated = { -+ separated = defaultdict(set, { - 'common': { - #'trunk/src/effects/gradients/SkGradientTileProc.cpp', - 'trunk/src/gpu/gl/GrGLCreateNativeInterface_none.cpp', - 'trunk/src/ports/SkDiscardableMemory_none.cpp', - 'trunk/src/ports/SkImageDecoder_empty.cpp', - 'trunk/src/ports/SkMemory_mozalloc.cpp', - # 'trunk/src/images/SkImages.cpp', - # 'trunk/src/images/SkImageRef.cpp', -@@ -277,69 +278,55 @@ def generate_separated_sources(platform_ - 'trunk/src/core/SkUtilsArm.cpp', - }, - 'neon': { - 'trunk/src/opts/SkBitmapProcState_arm_neon.cpp', - }, - 'none': { - 'trunk/src/opts/SkUtils_opts_none.cpp', - } -- } -+ }) - - for plat in platform_sources.keys(): -- if not separated.has_key(plat): -- separated[plat] = set() -- - for value in platform_sources[plat]: - if isblacklisted(value): - continue - -- if value.find('_SSE') > 0 or value.find('_SSSE') > 0 or value.find('_SSE4') > 0 : #lol -- separated['intel'].add(value) -+ if value in separated['common']: - continue - -- if value.find('_neon') > 0: -- separated['neon'].add(value) -- continue -+ key = plat + namespace mozilla { + using namespace mozilla::gfx; +@@ -168,6 +173,7 @@ DrawSurfaceWithTextureCoords(DrawTarget *aDest, + mode, aMask, aMaskTransform, &matrix); + } -- if value.find('_arm') > 0: -- separated['arm'].add(value) -- continue -+ if '_SSE' in value or '_SSSE' in value: -+ key = 'intel' -+ elif '_neon' in value: -+ key = 'neon' -+ elif '_arm' in value: -+ key = 'arm' -+ elif '_none' in value: -+ key = 'none' -+ elif all(value in platform_sources.get(p, {}) -+ for p in platforms if p != plat): -+ key = 'common' - -- if value.find('_none') > 0: -- separated['none'].add(value) -- continue -- -- found = True -- for other in platforms: -- if other == plat or not platform_sources.has_key(other): -- continue -- -- if not value in platform_sources[other]: -- found = False -- break; -- -- if found: -- separated['common'].add(value) -- else: -- separated[plat].add(value) -+ separated[key].add(value) - - return separated - - def uniq(seq): - seen = set() - seen_add = seen.add - return [ x for x in seq if x not in seen and not seen_add(x)] - - def write_cflags(f, values, subsearch, cflag, indent): - def write_indent(indent): - for _ in range(indent): - f.write(' ') - -- val_list = uniq(sorted(map(lambda val: val.replace('../', 'trunk/'), values), key=lambda x: x.lower())) -+ val_list = uniq(sorted(values, key=lambda x: x.lower())) - - if len(val_list) == 0: - return - - for val in val_list: - if val.find(subsearch) > 0: - write_indent(indent) - f.write("SOURCES[\'" + val + "\'].flags += [\'" + cflag + "\']\n") -@@ -391,17 +378,17 @@ def write_sources(f, values, indent): - write_list(f, "UNIFIED_SOURCES", sources['unified'], indent) - write_list(f, "SOURCES", sources['nonunified'], indent) - - def write_list(f, name, values, indent): - def write_indent(indent): - for _ in range(indent): - f.write(' ') - -- val_list = uniq(sorted(map(lambda val: val.replace('../', 'trunk/'), values), key=lambda x: x.lower())) -+ val_list = uniq(sorted(values, key=lambda x: x.lower())) - - if len(val_list) == 0: - return - - write_indent(indent) - f.write(name + ' += [\n') - for val in val_list: - write_indent(indent + 4) -diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build ---- a/gfx/skia/moz.build -+++ b/gfx/skia/moz.build -@@ -847,17 +847,16 @@ else: - 'trunk/src/opts/SkBitmapProcState_opts_none.cpp', - 'trunk/src/opts/SkBlitMask_opts_none.cpp', - 'trunk/src/opts/SkBlitRow_opts_none.cpp', - 'trunk/src/opts/SkBlurImage_opts_none.cpp', - 'trunk/src/opts/SkMorphology_opts_none.cpp', - 'trunk/src/opts/SkTextureCompression_opts_none.cpp', - 'trunk/src/opts/SkUtils_opts_none.cpp', - 'trunk/src/opts/SkXfermode_opts_none.cpp', -- 'trunk/src/ports/SkDiscardableMemory_none.cpp', - ] - - - # can we find a better way of dealing with asm sources? - - # left out of UNIFIED_SOURCES for now; that's not C++ anyway, nothing else to unify it with - if not CONFIG['INTEL_ARCHITECTURE'] and CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']: - SOURCES += [ -diff --git a/image/src/RasterImage.cpp b/image/src/RasterImage.cpp ---- a/image/src/RasterImage.cpp -+++ b/image/src/RasterImage.cpp -@@ -2090,20 +2090,16 @@ RasterImage::RecoverFromLossOfFrames() - RequestDecodeCore(ASYNCHRONOUS); ++#ifdef MOZ_ENABLE_SKIA + static SkMatrix + Matrix3DToSkia(const gfx3DMatrix& aMatrix) + { +@@ -186,10 +192,10 @@ Matrix3DToSkia(const gfx3DMatrix& aMatrix) } - bool - RasterImage::CanScale(GraphicsFilter aFilter, - const nsIntSize& aSize, - uint32_t aFlags) + static void +-SkiaTransform(DataSourceSurface* aDest, +- DataSourceSurface* aSource, +- const gfx3DMatrix& aTransform, +- const Point& aDestOffset) ++Transform(DataSourceSurface* aDest, ++ DataSourceSurface* aSource, ++ const gfx3DMatrix& aTransform, ++ const Point& aDestOffset) { --#ifndef MOZ_ENABLE_SKIA -- // The high-quality scaler requires Skia. -- return false; --#else - // Check basic requirements: HQ downscaling is enabled, we're decoded, the - // flags allow us to do it, and a 'good' filter is being used. The flags may - // ask us not to scale because the caller isn't drawing to the window. If - // we're drawing to something else (e.g. a canvas) we usually have no way of - // updating what we've drawn, so HQ scaling is useless. - if (!gfxPrefs::ImageHQDownscalingEnabled() || !mDecoded || - !(aFlags & imgIContainer::FLAG_HIGH_QUALITY_SCALING) || - aFilter != GraphicsFilter::FILTER_GOOD) { -@@ -2137,17 +2133,16 @@ RasterImage::CanScale(GraphicsFilter aFi - // XXX(seth): It's not clear what this check buys us over - // gfxPrefs::ImageHQUpscalingMaxSize(). - // The default value of this pref is 1000, which means that we never upscale. - // If that's all it's getting us, I'd rather we just forbid that explicitly. - gfx::Size scale(double(aSize.width) / mSize.width, - double(aSize.height) / mSize.height); - gfxFloat minFactor = gfxPrefs::ImageHQDownscalingMinFactor() / 1000.0; - return (scale.width < minFactor || scale.height < minFactor); --#endif + if (aTransform.IsSingular()) { + return; +@@ -225,6 +231,78 @@ SkiaTransform(DataSourceSurface* aDest, + SkRect destRect = SkRect::MakeXYWH(0, 0, srcSize.width, srcSize.height); + destCanvas.drawBitmapRectToRect(src, nullptr, destRect, &paint); + } ++#else ++static pixman_transform ++Matrix3DToPixman(const gfx3DMatrix& aMatrix) ++{ ++ pixman_f_transform transform; ++ ++ transform.m[0][0] = aMatrix._11; ++ transform.m[0][1] = aMatrix._21; ++ transform.m[0][2] = aMatrix._41; ++ transform.m[1][0] = aMatrix._12; ++ transform.m[1][1] = aMatrix._22; ++ transform.m[1][2] = aMatrix._42; ++ transform.m[2][0] = aMatrix._14; ++ transform.m[2][1] = aMatrix._24; ++ transform.m[2][2] = aMatrix._44; ++ ++ pixman_transform result; ++ pixman_transform_from_pixman_f_transform(&result, &transform); ++ ++ return result; ++} ++ ++static void ++Transform(DataSourceSurface* aDest, ++ DataSourceSurface* aSource, ++ const gfx3DMatrix& aTransform, ++ const Point& aDestOffset) ++{ ++ IntSize destSize = aDest->GetSize(); ++ pixman_image_t* dest = pixman_image_create_bits(PIXMAN_a8r8g8b8, ++ destSize.width, ++ destSize.height, ++ (uint32_t*)aDest->GetData(), ++ aDest->Stride()); ++ ++ IntSize srcSize = aSource->GetSize(); ++ pixman_image_t* src = pixman_image_create_bits(PIXMAN_a8r8g8b8, ++ srcSize.width, ++ srcSize.height, ++ (uint32_t*)aSource->GetData(), ++ aSource->Stride()); ++ ++ NS_ABORT_IF_FALSE(src && dest, "Failed to create pixman images?"); ++ ++ pixman_transform pixTransform = Matrix3DToPixman(aTransform); ++ pixman_transform pixTransformInverted; ++ ++ // If the transform is singular then nothing would be drawn anyway, return here ++ if (!pixman_transform_invert(&pixTransformInverted, &pixTransform)) { ++ pixman_image_unref(dest); ++ pixman_image_unref(src); ++ return; ++ } ++ pixman_image_set_transform(src, &pixTransformInverted); ++ ++ pixman_image_composite32(PIXMAN_OP_SRC, ++ src, ++ nullptr, ++ dest, ++ aDestOffset.x, ++ aDestOffset.y, ++ 0, ++ 0, ++ 0, ++ 0, ++ destSize.width, ++ destSize.height); ++ ++ pixman_image_unref(dest); ++ pixman_image_unref(src); ++} ++#endif + + static inline IntRect + RoundOut(Rect r) +@@ -364,12 +442,16 @@ BasicCompositor::DrawQuad(const gfx::Rect& aRect, + RefPtr snapshot = dest->Snapshot(); + RefPtr source = snapshot->GetDataSurface(); + RefPtr temp = +- Factory::CreateDataSourceSurface(RoundOut(transformBounds).Size(), SurfaceFormat::B8G8R8A8, true); ++ Factory::CreateDataSourceSurface(RoundOut(transformBounds).Size(), SurfaceFormat::B8G8R8A8 ++#ifdef MOZ_ENABLE_SKIA ++ , true ++#endif ++ ); + if (NS_WARN_IF(!temp)) { + return; + } + +- SkiaTransform(temp, source, new3DTransform, transformBounds.TopLeft()); ++ Transform(temp, source, new3DTransform, transformBounds.TopLeft()); + + transformBounds.MoveTo(0, 0); + buffer->DrawSurface(temp, transformBounds, transformBounds); +diff --git a/gfx/layers/basic/BasicLayerManager.cpp b/gfx/layers/basic/BasicLayerManager.cpp +index f4ec9e4..c849c27 100644 +--- a/gfx/layers/basic/BasicLayerManager.cpp ++++ b/gfx/layers/basic/BasicLayerManager.cpp +@@ -46,8 +46,13 @@ + #include "nsRect.h" // for nsIntRect + #include "nsRegion.h" // for nsIntRegion, etc + #include "nsTArray.h" // for nsAutoTArray ++#ifdef MOZ_ENABLE_SKIA + #include "skia/SkCanvas.h" // for SkCanvas + #include "skia/SkBitmapDevice.h" // for SkBitmapDevice ++#else ++#define PIXMAN_DONT_DEFINE_STDINT ++#include "pixman.h" // for pixman_f_transform, etc ++#endif + class nsIWidget; + + namespace mozilla { +@@ -601,6 +606,7 @@ BasicLayerManager::SetRoot(Layer* aLayer) + mRoot = aLayer; } - void - RasterImage::NotifyNewScaledFrame() ++#ifdef MOZ_ENABLE_SKIA + static SkMatrix + BasicLayerManager_Matrix3DToSkia(const gfx3DMatrix& aMatrix) + { +@@ -619,10 +625,10 @@ BasicLayerManager_Matrix3DToSkia(const gfx3DMatrix& aMatrix) + } + + static void +-SkiaTransform(const gfxImageSurface* aDest, +- RefPtr aSrc, +- const gfx3DMatrix& aTransform, +- gfxPoint aDestOffset) ++Transform(const gfxImageSurface* aDest, ++ RefPtr aSrc, ++ const gfx3DMatrix& aTransform, ++ gfxPoint aDestOffset) { - if (mProgressTracker) { - // Send an invalidation so observers will repaint and can take advantage of - // the new scaled frame if possible. + if (aTransform.IsSingular()) { + return; +@@ -658,6 +664,78 @@ SkiaTransform(const gfxImageSurface* aDest, + SkRect destRect = SkRect::MakeXYWH(0, 0, srcSize.width, srcSize.height); + destCanvas.drawBitmapRectToRect(src, nullptr, destRect, &paint); + } ++#else ++static pixman_transform ++BasicLayerManager_Matrix3DToPixman(const gfx3DMatrix& aMatrix) ++{ ++ pixman_f_transform transform; ++ ++ transform.m[0][0] = aMatrix._11; ++ transform.m[0][1] = aMatrix._21; ++ transform.m[0][2] = aMatrix._41; ++ transform.m[1][0] = aMatrix._12; ++ transform.m[1][1] = aMatrix._22; ++ transform.m[1][2] = aMatrix._42; ++ transform.m[2][0] = aMatrix._14; ++ transform.m[2][1] = aMatrix._24; ++ transform.m[2][2] = aMatrix._44; ++ ++ pixman_transform result; ++ pixman_transform_from_pixman_f_transform(&result, &transform); ++ ++ return result; ++} ++ ++static void ++Transform(const gfxImageSurface* aDest, ++ RefPtr aSrc, ++ const gfx3DMatrix& aTransform, ++ gfxPoint aDestOffset) ++{ ++ IntSize destSize = ToIntSize(aDest->GetSize()); ++ pixman_image_t* dest = pixman_image_create_bits(aDest->Format() == gfxImageFormat::ARGB32 ? PIXMAN_a8r8g8b8 : PIXMAN_x8r8g8b8, ++ destSize.width, ++ destSize.height, ++ (uint32_t*)aDest->Data(), ++ aDest->Stride()); ++ ++ IntSize srcSize = aSrc->GetSize(); ++ pixman_image_t* src = pixman_image_create_bits(aSrc->GetFormat() == SurfaceFormat::B8G8R8A8 ? PIXMAN_a8r8g8b8 : PIXMAN_x8r8g8b8, ++ srcSize.width, ++ srcSize.height, ++ (uint32_t*)aSrc->GetData(), ++ aSrc->Stride()); ++ ++ NS_ABORT_IF_FALSE(src && dest, "Failed to create pixman images?"); ++ ++ pixman_transform pixTransform = BasicLayerManager_Matrix3DToPixman(aTransform); ++ pixman_transform pixTransformInverted; ++ ++ // If the transform is singular then nothing would be drawn anyway, return here ++ if (!pixman_transform_invert(&pixTransformInverted, &pixTransform)) { ++ pixman_image_unref(dest); ++ pixman_image_unref(src); ++ return; ++ } ++ pixman_image_set_transform(src, &pixTransformInverted); ++ ++ pixman_image_composite32(PIXMAN_OP_SRC, ++ src, ++ nullptr, ++ dest, ++ aDestOffset.x, ++ aDestOffset.y, ++ 0, ++ 0, ++ 0, ++ 0, ++ destSize.width, ++ destSize.height); ++ ++ pixman_image_unref(dest); ++ pixman_image_unref(src); ++} ++#endif + + /** + * Transform a surface using a gfx3DMatrix and blit to the destination if +@@ -699,7 +777,7 @@ Transform3D(RefPtr aSource, + gfx3DMatrix translation = gfx3DMatrix::Translation(aBounds.x, aBounds.y, 0); + + // Transform the content and offset it such that the content begins at the origin. +- SkiaTransform(destImage, aSource->GetDataSurface(), translation * aTransform, offset); ++ Transform(destImage, aSource->GetDataSurface(), translation * aTransform, offset); + + // If we haven't actually drawn to aDest then return our temporary image so + // that the caller can do this. +-- +2.3.0.4.g34b1174 + diff -r e160750ffe91 -r 0d861c33ec70 series --- a/series Sun Mar 22 13:58:24 2015 +0100 +++ b/series Sun Mar 22 14:02:18 2015 +0100 @@ -12,7 +12,6 @@ mozilla-icu-strncat.patch mozilla-arm-disable-edsp.patch mozilla-idldir.patch -mozilla-bmo1088588.patch mozilla-openaes-decl.patch mozilla-skia-bmo1136958.patch diff -r e160750ffe91 -r 0d861c33ec70 toolkit-download-folder.patch --- a/toolkit-download-folder.patch Sun Mar 22 13:58:24 2015 +0100 +++ b/toolkit-download-folder.patch Sun Mar 22 14:02:18 2015 +0100 @@ -6,7 +6,7 @@ diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js -@@ -290,17 +290,17 @@ var gMainPane = { +@@ -408,17 +408,17 @@ var gMainPane = { // and was available as an option in the 1.5 drop down. On XP this // was in My Documents, on OSX it was in User Docs. In 2.0, we did // away with the drop down option, although the special label was @@ -17,18 +17,18 @@ // folder. See nsDownloadManager for details. - downloadFolder.label = bundlePreferences.getString("downloadsFolderName"); + downloadFolder.label = "Downloads"; - iconUrlSpec = fph.getURLSpecFromFile(this._indexToFolder(1)); + iconUrlSpec = fph.getURLSpecFromFile(yield this._indexToFolder(1)); } else { // 'Desktop' downloadFolder.label = bundlePreferences.getString("desktopFolderName"); - iconUrlSpec = fph.getURLSpecFromFile(this._getDownloadsFolder("Desktop")); + iconUrlSpec = fph.getURLSpecFromFile(yield this._getDownloadsFolder("Desktop")); } downloadFolder.image = "moz-icon://" + iconUrlSpec + "?size=16"; - + }), diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp --- a/toolkit/components/downloads/nsDownloadManager.cpp +++ b/toolkit/components/downloads/nsDownloadManager.cpp -@@ -1365,18 +1365,20 @@ nsDownloadManager::GetDefaultDownloadsDi +@@ -1361,18 +1361,20 @@ nsDownloadManager::GetDefaultDownloadsDi // Vista: // Downloads // XP/2K: