summaryrefslogtreecommitdiff
path: root/www/seamonkey/patches
diff options
context:
space:
mode:
authorryoon <ryoon@pkgsrc.org>2015-09-21 05:03:45 +0000
committerryoon <ryoon@pkgsrc.org>2015-09-21 05:03:45 +0000
commit6cd2d8300f864c2c01378863ce499f92624ea6be (patch)
tree98827473d598ae55fd2bf8bab53b31da0ab2f06b /www/seamonkey/patches
parentcb7e05a2bef752d7325fda9aff5286bbbc21a66d (diff)
downloadpkgsrc-6cd2d8300f864c2c01378863ce499f92624ea6be.tar.gz
Update to 2.35
* Remove unused PLIST.enigmail. Changelog: System Requirements, Installation and Uninstallation Before installing, make sure your computer meets the system requirements. SeaMonkey 2.35 will no longer offer to migrate your data from SeaMonkey 1.x or Mozilla 1.x at the first start after installation (bug 689437). In order to upgrade from such an old version, install the last SeaMonkey 2.0 release first, do the one-time profile upgrade, uninstall SeaMonkey 2.0 and then install your target release (e.g. this one). You can find more details about installation, profile data and uninstallation in our install and uninstall document. Extensions (Add-ons) and Themes Extensions installed under SeaMonkey 1.x are not migrated to SeaMonkey 2, and may not be compatible for reinstalling in this version due to major changes in our architecture. Please report any issues to the maintainer of the extension. Extensions and Themes for SeaMonkey 2.35 can be installed from the SeaMonkey Add-Ons website or the "Get Add-Ons" section in the Add-ons Manager. Extensions with binary components such as Lightning, Enigmail and HTML Validator only work on certain platforms (e.g. Windows). Furthermore they need to be adjusted for each new SeaMonkey release, which also means that an old version of such an add-on can break SeaMonkey if you disabled compatibility checking (which e.g. happens when you install the Add-on Compatibility Reporter add-on). For Lightning, please check the Stable Releases section on the Calendar Versions page. Alternatively check the Lightning add-on page (Development Channel at the bottom of the page). For Enigmail, please refer to the Enigmail Nightly Builds page. For HTML Validator you need to check whether the Firefox version that appears on SeaMonkey's about: page is listed on the 0.9x download page. Note that only Windows is supported at this time. SeaMonkey 2.29 dropped support for the legacy JavaScript Debugger interface (JSD1). Hence add-ons that relied on it, like the JavaScript Debugger (Venkman) that came bundled with SeaMonkey, or Firebug 1.x, have stopped working. While Venkman has been discontinued, Firebug can simply be upgraded to a more recent version (2.x) which supports the new JSD2 interface. If you are searching for a Venkman replacement (especially for debugging SeaMonkey itself or add-ons), have a look at the Tiny JavaScript Debugger add-on. Known Issues This list covers some of the known problems with SeaMonkey 2.35. Please read this before reporting any new bugs. The SSL 3.0 encryption protocol is disabled by default due to security concerns (bug 1076983). Legacy websites may still rely on it and will not work with the newer TLS 1.x protocols. SSL 3.0 support can be re-enabled in Preferences under Privacy & Security, SSL. Lightning does not work with SeaMonkey when icaljs is enabled, which it is by default (bug 1081534). As a workaround, disable icaljs by setting the calendar.icaljs pref to false in about:config. The Remember Passwords add-on breaks password handling. Please disable or uninstall this add-on using the Add-ons Manager. You cannot set up a new Sync account or pair a device anymore (bug 998807). Workaround: Use an older version of SeaMonkey for such tasks for now. Data loss warning: If you use a profile with this or any later version and then try to go back to SeaMonkey 2.0, SeaMonkey will rename your history file to places.sqlite.corrupt and create a new places.sqlite file, effectively resetting your browsing history. This is because the internal format changed and the upgrade process only works in one direction. Additionally, running MailNews with local folders and POP3 mail filters may produce summary files that are not correctly read by previous versions of SeaMonkey. If you decide to go back to a previous version of SeaMonkey, you should delete the .msf files for your local folders and POP3 accounts or repair the folders using the folder properties dialog in order to avoid potential data loss. After creating a news account through clicking a news URL, the MailNews account wizard may be broken (the account type will always be News). To work around the problem, set the mail.server.serverX.valid pref (where X is the internal number of the corresponding news account) to true in about:config, or delete the invalid news account (bug 521861). Web pages may appear differently in the MailNews feed reader than in the browser (bug 662907). Workaround: Add a "noscript {display:none}" rule to your userContent.css (note that the Stylish add-on cannot be used here since it does not integrate with the MailNews feed reader). Select Element by Click doesn't flash the element in DOM Inspector on Windows if hardware acceleration is enabled (bug 594299). The option "When opening a bookmark group" / "Replace existing tabs" under Preferences / Tabbed Browsing does not have an effect anymore (bug 664101). Lightning keyboard shortcuts for accessing the calendar tab from within the MailNews window or from the main menu (Ctrl+Shift+C/D) do not work. (bug 514512). If you try to start SeaMonkey using a locked profile, it will crash (see bug 573369). Some synaptic touch pads are unable to vertical scroll (see bug 622410). Under certain conditions, scrolling and text input may be jerky (see bug 711900). Mac OS X and Windows: Citrix Receiver no longer works. As a workaround, mark the plugin as Always Enable in the Add-ons Manager (see bug 1025627). Windows: Norton/Symantec anti-virus scanners may report that some parts of SeaMonkey (e.g. the file freebl3.dll) are suspicious. If you downloaded SeaMonkey from one of the official download sites, this is a false alarm. You might experience problems with secure websites when this happens. To fix the issue, instruct your anti-virus software to ignore these files (and move them out of quarantine) and/or switch to another anti-virus software and reinstall SeaMonkey. Linux: The cursor may change to "drag & drop" mode in the mail window, causing a hang (bug 736811). Mac: When hardware acceleration is off, background colors in the UI (toolbar, status bar etc.) might not update correctly when you switch focus from/to a window. Users running Macs with certain older hardware (e.g. Intel GMA 950) will experience this even if they haven't turned off hardware acceleration in Preferences (Appearance/Content) (bug 626096). Troubleshooting Some questions are asked more frequently than others. Have a look at the SeaMonkey FAQ. Maybe your particular problem has already been solved. Some anti-virus software keeps detectine installer so that its contents can run and install SeaMonkey. That technology is widely used and probably can be used to compress bad as well as good software, but the 7-Zip code itself is perfectly safe. Mozilla scans all our files routinely when putticanned by the same mechanisms. Poorly designed or incompatible extensions can cause problems with SeaMonkey, including make it crash, slow down page display, etc. If you encounter strange problems relating to parts of SeaMonkey no longer working, the etc, you may be suffering from Extension or Theme trouble. Restart SeaMonkey in Safe Mode. On Windows, start using the "Safe Mode" shortcut created in your Start menu or by running seamonkey.exe -safe-mode. On Linux, start with ./seamonkey -safe-mode and on Mac OS X, run: cd /Applications/SeaMonkey.app/Contents/MacOS/ ./seamonkey-bin -safe-mode When started in Safe Mode all extensions are disabled and the Default theme is used. Disable the Extension/Theme that is causing trouble and then start normally. If you uninstall an extension that is installed with your user profile (i.e. you installed it from a Web page) and then wish to install it for all user profiles using the -install-global-extension command line flag, you must restart SeaMonkey once to cleanse the profile extensions datasource of traces of that extension before installing with the switch. If you do not do this you may end up with a jammed entry in the Extensions list and will be unable to install the extension globally. If you encounter strange problems relating to bookmarks, downloads, window placement, toolbars, history, or other settings, it is recommended that you try creating a new profile and attempting to reproduce the problem before filing bugs. Create a new profile by running SeaMonkey with the -P command line argument, choose the "Manage Profiles" button and then choose "Create Profile...". Migrate your settings files (Bookmarks, Saved Passwords, etc) over one by one, checking each time to see if the problems resurface. If you do find a particular profile data file is causing a problem, file a bug and attach the file.
Diffstat (limited to 'www/seamonkey/patches')
-rw-r--r--www/seamonkey/patches/patch-aa80
-rw-r--r--www/seamonkey/patches/patch-ak13
-rw-r--r--www/seamonkey/patches/patch-ao10
-rw-r--r--www/seamonkey/patches/patch-mozilla_accessible_atk_Platform.cpp98
-rw-r--r--www/seamonkey/patches/patch-mozilla_b2g_installer_Makefile.in15
-rw-r--r--www/seamonkey/patches/patch-mozilla_b2g_installer_package-manifest.in13
-rw-r--r--www/seamonkey/patches/patch-mozilla_browser_app_nsBrowserApp.cpp14
-rw-r--r--www/seamonkey/patches/patch-mozilla_build_autoconf_nss.m414
-rw-r--r--www/seamonkey/patches/patch-mozilla_config_Makefile.in7
-rw-r--r--www/seamonkey/patches/patch-mozilla_config_external_moz.build16
-rw-r--r--www/seamonkey/patches/patch-mozilla_config_system-headers42
-rw-r--r--www/seamonkey/patches/patch-mozilla_config_system__wrappers_unwind.h9
-rw-r--r--www/seamonkey/patches/patch-mozilla_dom_media_moz.build8
-rw-r--r--www/seamonkey/patches/patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp16
-rw-r--r--www/seamonkey/patches/patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp14
-rw-r--r--www/seamonkey/patches/patch-mozilla_image_decoders_nsJPEGDecoder.cpp22
-rw-r--r--www/seamonkey/patches/patch-mozilla_intl_unicharutil_util_moz.build12
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_public_CallArgs.h13
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp46
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_gc_Memory.cpp13
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_jit_ExecutableAllocator.h10
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_jit_LIR.cpp8
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_jit_MIR.cpp10
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_jit_arm_Architecture-arm.cpp6
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_jsapi.cpp31
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_src_shell_jsoptparse.cpp13
-rw-r--r--www/seamonkey/patches/patch-mozilla_js_xpconnect_src_XPCConvert.cpp13
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_libcubeb_src_cubeb__alsa.c110
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_webrtc_signaling_signaling.gyp20
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi20
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi28
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi44
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__coding_main_source_receiver.cc20
-rw-r--r--www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp10
-rw-r--r--www/seamonkey/patches/patch-mozilla_memory_build_mozjemalloc__compat.c44
-rw-r--r--www/seamonkey/patches/patch-mozilla_memory_jemalloc_src_configure36
-rw-r--r--www/seamonkey/patches/patch-mozilla_memory_volatile_VolatileBufferOSX.cpp (renamed from www/seamonkey/patches/patch-mozilla_memory_mozalloc_VolatileBufferOSX.cpp)8
-rw-r--r--www/seamonkey/patches/patch-mozilla_mfbt_Attributes.h26
-rw-r--r--www/seamonkey/patches/patch-mozilla_netwerk_base_nsNetUtil.h (renamed from www/seamonkey/patches/patch-mozilla_netwerk_base_public_nsNetUtil.h)8
-rw-r--r--www/seamonkey/patches/patch-mozilla_netwerk_dns_Makefile.in15
-rw-r--r--www/seamonkey/patches/patch-mozilla_netwerk_dns_moz.build14
-rw-r--r--www/seamonkey/patches/patch-mozilla_netwerk_wifi_moz.build13
-rw-r--r--www/seamonkey/patches/patch-mozilla_netwerk_wifi_nsWifiScannerFreeBSD.cpp16
-rw-r--r--www/seamonkey/patches/patch-mozilla_toolkit_library_moz.build13
-rw-r--r--www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPInstallManager.jsm22
-rw-r--r--www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPUtils.jsm12
-rw-r--r--www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_GMPProvider.jsm132
-rw-r--r--www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_OpenH264Provider.jsm118
-rw-r--r--www/seamonkey/patches/patch-mozilla_widget_gtk_gtk2drawing.c22
-rw-r--r--www/seamonkey/patches/patch-mozilla_widget_gtk_gtk3drawing.c866
-rw-r--r--www/seamonkey/patches/patch-mozilla_widget_gtk_gtkdrawing.h41
-rw-r--r--www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.cpp207
-rw-r--r--www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.h32
-rw-r--r--www/seamonkey/patches/patch-mozilla_widget_gtk_nsNativeThemeGTK.cpp30
-rw-r--r--www/seamonkey/patches/patch-mozilla_xpcom_base_nsStackWalk.cpp12
-rw-r--r--www/seamonkey/patches/patch-mozilla_xpcom_build_XPCOMInit.cpp12
-rw-r--r--www/seamonkey/patches/patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build18
-rw-r--r--www/seamonkey/patches/patch-rc8
58 files changed, 1572 insertions, 971 deletions
diff --git a/www/seamonkey/patches/patch-aa b/www/seamonkey/patches/patch-aa
index a2908ae28cb..1f966b41db5 100644
--- a/www/seamonkey/patches/patch-aa
+++ b/www/seamonkey/patches/patch-aa
@@ -1,8 +1,8 @@
-$NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-aa,v 1.27 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/configure.in.orig 2015-03-09 05:34:34.000000000 +0000
+--- mozilla/configure.in.orig 2015-09-02 09:28:08.000000000 +0000
+++ mozilla/configure.in
-@@ -1766,7 +1766,13 @@ Linux)
+@@ -1794,7 +1794,13 @@ Linux)
MOZ_ENABLE_PROFILER_SPS=
esac
;;
@@ -17,7 +17,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
*)
MOZ_ENABLE_PROFILER_SPS=
;;
-@@ -1870,7 +1876,7 @@ case "$host" in
+@@ -1898,7 +1904,7 @@ case "$host" in
;;
*-darwin*)
@@ -26,7 +26,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
;;
-@@ -2002,7 +2008,6 @@ case "$target" in
+@@ -2022,7 +2028,6 @@ case "$target" in
AC_DEFINE(XP_DARWIN)
_PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
else
@@ -34,7 +34,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
AC_DEFINE(XP_DARWIN)
_PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
# The ExceptionHandling framework is needed for Objective-C exception
-@@ -2622,8 +2627,7 @@ MOZ_CXX11
+@@ -2641,8 +2646,7 @@ MOZ_CXX11
AC_LANG_C
@@ -44,7 +44,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
dnl ===============================================================
if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
-@@ -3645,6 +3649,14 @@ if test -n "$YASM"; then
+@@ -3663,6 +3667,14 @@ if test -n "$YASM"; then
_YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
fi
@@ -59,7 +59,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
if test -z "$SKIP_LIBRARY_CHECKS"; then
dnl system JPEG support
dnl ========================================================
-@@ -3672,11 +3684,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then
+@@ -3690,11 +3702,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then
#include <jpeglib.h> ],
[ #if JPEG_LIB_VERSION < $MOZJPEG
#error "Insufficient JPEG library version ($MOZJPEG required)."
@@ -72,7 +72,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
MOZ_NATIVE_JPEG=1,
AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
fi
-@@ -4391,6 +4399,10 @@ cairo-gonk)
+@@ -4392,6 +4400,10 @@ cairo-gonk)
esac
@@ -83,7 +83,16 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
AC_SUBST(MOZ_PDF_PRINTING)
if test "$MOZ_PDF_PRINTING"; then
PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
-@@ -5131,6 +5143,9 @@ if test -n "$MOZ_WEBRTC"; then
+@@ -4408,7 +4420,7 @@ fi
+
+ if test "$COMPILE_ENVIRONMENT"; then
+ if test "$MOZ_ENABLE_GTK3"; then
+- PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 atk-bridge-2.0 $GDK_PACKAGES)
++ PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
+ MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
+ dnl Contrary to MOZ_GTK2_LIBS, MOZ_GTK3_LIBS needs to be literally added to TK_LIBS instead
+ dnl of a make reference because of how TK_LIBS is mangled in toolkit/library/moz.build
+@@ -5149,6 +5161,9 @@ if test -n "$MOZ_WEBRTC"; then
MOZ_VPX=1
MOZ_VPX_ERROR_CONCEALMENT=1
@@ -93,7 +102,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
dnl enable once Signaling lands
MOZ_WEBRTC_SIGNALING=1
AC_DEFINE(MOZ_WEBRTC_SIGNALING)
-@@ -5234,6 +5249,57 @@ if test "${ac_cv_c_attribute_aligned}" !
+@@ -5252,6 +5267,157 @@ if test "${ac_cv_c_attribute_aligned}" !
fi
dnl ========================================================
@@ -127,7 +136,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
+MOZ_NATIVE_VORBIS=)
+
+if test -n "$MOZ_NATIVE_VORBIS"; then
-+ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.4)
++ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.5)
+fi
+
+AC_SUBST(MOZ_NATIVE_VORBIS)
@@ -148,13 +157,23 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
+AC_SUBST(MOZ_NATIVE_TREMOR)
+
+dnl ========================================================
- dnl = Disable Opus audio codec support
- dnl ========================================================
- MOZ_ARG_DISABLE_BOOL(opus,
-@@ -5242,6 +5308,89 @@ MOZ_ARG_DISABLE_BOOL(opus,
- MOZ_OPUS=1)
-
- dnl ========================================================
++dnl Check for libcelt
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-celt,
++[ --with-system-celt Use system libcelt (located with pkgconfig)],
++MOZ_NATIVE_CELT=1,
++MOZ_NATIVE_CELT=)
++
++if test -n "$MOZ_NATIVE_CELT"; then
++ PKG_CHECK_MODULES(MOZ_CELT, celt)
++else
++ MOZ_CELT_CFLAGS='-I$(topsrcdir)/media/libopus'
++fi
++
++AC_SUBST(MOZ_NATIVE_CELT)
++
++dnl ========================================================
+dnl Check for libopus
+dnl ========================================================
+
@@ -241,7 +260,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
dnl = Disable VP8 decoder support
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(webm,
-@@ -5600,6 +5749,67 @@ fi
+@@ -5606,6 +5772,67 @@ fi
AC_SUBST(MOZ_WEBM_ENCODER)
dnl ==================================
@@ -309,7 +328,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
dnl = Check alsa availability on Linux
dnl ==================================
-@@ -5613,12 +5823,23 @@ MOZ_ARG_ENABLE_BOOL(alsa,
+@@ -5619,12 +5846,23 @@ MOZ_ARG_ENABLE_BOOL(alsa,
MOZ_ALSA=1,
MOZ_ALSA=)
@@ -321,7 +340,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
if test -n "$MOZ_ALSA"; then
PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
[echo "$MOZ_ALSA_PKG_ERRORS"
- AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])])
+ AC_MSG_ERROR([Need alsa for audio output on Linux. (On Ubuntu, you might try installing the package libasound2-dev.)])])
fi
+if test -n "$DISABLE_LIBASOUND_DLOPEN"; then
@@ -333,7 +352,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
AC_SUBST(MOZ_ALSA)
dnl ========================================================
-@@ -6046,7 +6267,9 @@ MOZ_ARG_DISABLE_BOOL(gamepad,
+@@ -6046,7 +6284,9 @@ MOZ_ARG_DISABLE_BOOL(gamepad,
if test "$MOZ_GAMEPAD"; then
case "$OS_TARGET" in
Darwin)
@@ -343,8 +362,8 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
+ fi
;;
WINNT)
- case "$MOZ_WINSDK_MAXVER" in
-@@ -8089,6 +8312,49 @@ if test "$USE_FC_FREETYPE"; then
+ MOZ_GAMEPAD_BACKEND=windows
+@@ -8066,6 +8306,49 @@ if test "$USE_FC_FREETYPE"; then
fi
dnl ========================================================
@@ -357,7 +376,7 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
+MOZ_NATIVE_HARFBUZZ=)
+
+if test -n "$MOZ_NATIVE_HARFBUZZ"; then
-+ PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 0.9.25)
++ PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 0.9.34)
+fi
+
+AC_SUBST(MOZ_NATIVE_HARFBUZZ)
@@ -394,12 +413,3 @@ $NetBSD: patch-aa,v 1.26 2015/03/17 19:50:42 ryoon Exp $
dnl Check for pixman and cairo
dnl ========================================================
-@@ -8344,7 +8610,7 @@ case "$OS_TARGET" in
- NECKO_WIFI=1
- fi
- ;;
-- Darwin|FreeBSD|SunOS|WINNT)
-+ Darwin|DragonFly|FreeBSD|SunOS|WINNT)
- NECKO_WIFI=1
- ;;
- Linux)
diff --git a/www/seamonkey/patches/patch-ak b/www/seamonkey/patches/patch-ak
deleted file mode 100644
index fa3c313ecd9..00000000000
--- a/www/seamonkey/patches/patch-ak
+++ /dev/null
@@ -1,13 +0,0 @@
-$NetBSD: patch-ak,v 1.12 2014/11/02 05:40:31 ryoon Exp $
-
---- mozilla/js/src/ctypes/libffi/configure.orig 2014-10-14 06:36:16.000000000 +0000
-+++ mozilla/js/src/ctypes/libffi/configure
-@@ -17226,7 +17226,7 @@ case "$host" in
- powerpc-*-aix* | rs6000-*-aix*)
- TARGET=POWERPC_AIX; TARGETDIR=powerpc
- ;;
-- powerpc-*-freebsd* | powerpc-*-openbsd*)
-+ powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*)
- TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
- HAVE_LONG_DOUBLE_VARIANT=1
- ;;
diff --git a/www/seamonkey/patches/patch-ao b/www/seamonkey/patches/patch-ao
index cf8b2b62f31..da3e582738b 100644
--- a/www/seamonkey/patches/patch-ao
+++ b/www/seamonkey/patches/patch-ao
@@ -1,12 +1,14 @@
-$NetBSD: patch-ao,v 1.14 2014/03/30 04:13:17 ryoon Exp $
+$NetBSD: patch-ao,v 1.15 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/toolkit/mozapps/installer/packager.mk.orig 2014-03-19 01:42:17.000000000 +0000
+--- mozilla/toolkit/mozapps/installer/packager.mk.orig 2015-09-02 09:27:31.000000000 +0000
+++ mozilla/toolkit/mozapps/installer/packager.mk
-@@ -775,7 +775,7 @@ endif
+@@ -122,8 +122,8 @@ endif
+ (cd $(DESTDIR)$(installdir) && tar -xf -)
$(NSINSTALL) -D $(DESTDIR)$(bindir)
$(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME)
- ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)
+- ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)
-ifdef INSTALL_SDK # Here comes the hard part
++ ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)/$(MOZILLA_PKG_NAME)
+ifeq ($(MOZ_APP_NAME),xulrunner)
$(NSINSTALL) -D $(DESTDIR)$(includedir)
(cd $(DIST)/include && $(TAR) $(TAR_CREATE_FLAGS) - .) | \
diff --git a/www/seamonkey/patches/patch-mozilla_accessible_atk_Platform.cpp b/www/seamonkey/patches/patch-mozilla_accessible_atk_Platform.cpp
new file mode 100644
index 00000000000..2b533cbe5b6
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_accessible_atk_Platform.cpp
@@ -0,0 +1,98 @@
+$NetBSD: patch-mozilla_accessible_atk_Platform.cpp,v 1.1 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/accessible/atk/Platform.cpp.orig 2015-09-02 09:27:10.000000000 +0000
++++ mozilla/accessible/atk/Platform.cpp
+@@ -18,8 +18,9 @@
+ #include <dbus/dbus.h>
+ #endif
+ #include <gtk/gtk.h>
++
+ #if (MOZ_WIDGET_GTK == 3)
+-#include <atk-bridge.h>
++extern "C" __attribute__((weak,visibility("default"))) int atk_bridge_adaptor_init(int*, char **[]);
+ #endif
+
+ using namespace mozilla;
+@@ -46,7 +47,6 @@ static gulong sToplevel_hide_hook = 0;
+
+ GType g_atk_hyperlink_impl_type = G_TYPE_INVALID;
+
+-#if (MOZ_WIDGET_GTK == 2)
+ struct GnomeAccessibilityModule
+ {
+ const char *libName;
+@@ -67,11 +67,13 @@ static GnomeAccessibilityModule sAtkBrid
+ "gnome_accessibility_module_shutdown", nullptr
+ };
+
++#if (MOZ_WIDGET_GTK == 2)
+ static GnomeAccessibilityModule sGail = {
+ "libgail.so", nullptr,
+ "gnome_accessibility_module_init", nullptr,
+ "gnome_accessibility_module_shutdown", nullptr
+ };
++#endif
+
+ static nsresult
+ LoadGtkModule(GnomeAccessibilityModule& aModule)
+@@ -98,7 +100,11 @@ LoadGtkModule(GnomeAccessibilityModule&
+ else
+ subLen = loc2 - loc1;
+ nsAutoCString sub(Substring(libPath, loc1, subLen));
++#if (MOZ_WIDGET_GTK == 2)
+ sub.AppendLiteral("/gtk-2.0/modules/");
++#else
++ sub.AppendLiteral("/gtk-3.0/modules/");
++#endif
+ sub.Append(aModule.libName);
+ aModule.lib = PR_LoadLibrary(sub.get());
+ if (aModule.lib)
+@@ -123,7 +129,6 @@ LoadGtkModule(GnomeAccessibilityModule&
+ }
+ return NS_OK;
+ }
+-#endif // (MOZ_WIDGET_GTK == 2)
+
+ void
+ a11y::PlatformInit()
+@@ -175,14 +180,17 @@ a11y::PlatformInit()
+
+ // Init atk-bridge now
+ PR_SetEnv("NO_AT_BRIDGE=0");
+-#if (MOZ_WIDGET_GTK == 2)
+- rv = LoadGtkModule(sAtkBridge);
+- if (NS_SUCCEEDED(rv)) {
+- (*sAtkBridge.init)();
+- }
+-#else
+- atk_bridge_adaptor_init(nullptr, nullptr);
++#if (MOZ_WIDGET_GTK == 3)
++ if (atk_bridge_adaptor_init) {
++ atk_bridge_adaptor_init(nullptr, nullptr);
++ } else
+ #endif
++ {
++ nsresult rv = LoadGtkModule(sAtkBridge);
++ if (NS_SUCCEEDED(rv)) {
++ (*sAtkBridge.init)();
++ }
++ }
+
+ if (!sToplevel_event_hook_added) {
+ sToplevel_event_hook_added = true;
+@@ -210,7 +218,6 @@ a11y::PlatformShutdown()
+ sToplevel_hide_hook);
+ }
+
+-#if (MOZ_WIDGET_GTK == 2)
+ if (sAtkBridge.lib) {
+ // Do not shutdown/unload atk-bridge,
+ // an exit function registered will take care of it
+@@ -221,6 +228,7 @@ a11y::PlatformShutdown()
+ sAtkBridge.init = nullptr;
+ sAtkBridge.shutdown = nullptr;
+ }
++#if (MOZ_WIDGET_GTK == 2)
+ if (sGail.lib) {
+ // Do not shutdown gail because
+ // 1) Maybe it's not init-ed by us. e.g. GtkEmbed
diff --git a/www/seamonkey/patches/patch-mozilla_b2g_installer_Makefile.in b/www/seamonkey/patches/patch-mozilla_b2g_installer_Makefile.in
deleted file mode 100644
index 31a0a7c5a7a..00000000000
--- a/www/seamonkey/patches/patch-mozilla_b2g_installer_Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-mozilla_b2g_installer_Makefile.in,v 1.3 2015/03/17 19:50:42 ryoon Exp $
-
---- mozilla/b2g/installer/Makefile.in.orig 2015-03-09 05:34:16.000000000 +0000
-+++ mozilla/b2g/installer/Makefile.in
-@@ -79,6 +79,10 @@ ifneq (,$(filter rtsp,$(NECKO_PROTOCOLS)
- DEFINES += -DMOZ_RTSP
- endif
-
-+ifdef MOZ_DEBUG
-+DEFINES += -DMOZ_DEBUG=1
-+endif
-+
- ifdef GKMEDIAS_SHARED_LIBRARY
- DEFINES += -DGKMEDIAS_SHARED_LIBRARY
- endif
diff --git a/www/seamonkey/patches/patch-mozilla_b2g_installer_package-manifest.in b/www/seamonkey/patches/patch-mozilla_b2g_installer_package-manifest.in
deleted file mode 100644
index f8c8f58c7c2..00000000000
--- a/www/seamonkey/patches/patch-mozilla_b2g_installer_package-manifest.in
+++ /dev/null
@@ -1,13 +0,0 @@
-$NetBSD: patch-mozilla_b2g_installer_package-manifest.in,v 1.3 2015/03/17 19:50:42 ryoon Exp $
-
---- mozilla/b2g/installer/package-manifest.in.orig 2015-03-09 05:34:16.000000000 +0000
-+++ mozilla/b2g/installer/package-manifest.in
-@@ -609,7 +609,7 @@
- @BINPATH@/components/EngineeringModeAPI.js
- @BINPATH@/components/EngineeringModeService.js
-
--#ifdef MOZ_DEBUG
-+#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
- @BINPATH@/components/TestInterfaceJS.js
- @BINPATH@/components/TestInterfaceJS.manifest
- #endif
diff --git a/www/seamonkey/patches/patch-mozilla_browser_app_nsBrowserApp.cpp b/www/seamonkey/patches/patch-mozilla_browser_app_nsBrowserApp.cpp
index 45956b1846c..5dfb1ccf5d2 100644
--- a/www/seamonkey/patches/patch-mozilla_browser_app_nsBrowserApp.cpp
+++ b/www/seamonkey/patches/patch-mozilla_browser_app_nsBrowserApp.cpp
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_browser_app_nsBrowserApp.cpp,v 1.3 2015/01/29 22:22:26 wiz Exp $
+$NetBSD: patch-mozilla_browser_app_nsBrowserApp.cpp,v 1.4 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/browser/app/nsBrowserApp.cpp.orig 2014-06-13 00:46:02.000000000 +0000
+--- mozilla/browser/app/nsBrowserApp.cpp.orig 2015-09-02 09:27:14.000000000 +0000
+++ mozilla/browser/app/nsBrowserApp.cpp
@@ -18,8 +18,10 @@
#include <unistd.h>
@@ -14,7 +14,7 @@ $NetBSD: patch-mozilla_browser_app_nsBrowserApp.cpp,v 1.3 2015/01/29 22:22:26 wi
#include "MacQuirks.h"
#endif
-@@ -447,7 +449,7 @@ TimeStamp_Now()
+@@ -459,7 +461,7 @@ TimeStamp_Now()
}
return sGetTickCount64() * freq.QuadPart;
@@ -23,3 +23,11 @@ $NetBSD: patch-mozilla_browser_app_nsBrowserApp.cpp,v 1.3 2015/01/29 22:22:26 wi
return mach_absolute_time();
#elif defined(HAVE_CLOCK_MONOTONIC)
struct timespec ts;
+@@ -606,6 +608,7 @@ int main(int argc, char* argv[])
+ TriggerQuirks();
+ #endif
+
++ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ int gotCounters;
+ #if defined(XP_UNIX)
+ struct rusage initialRUsage;
diff --git a/www/seamonkey/patches/patch-mozilla_build_autoconf_nss.m4 b/www/seamonkey/patches/patch-mozilla_build_autoconf_nss.m4
index 9a528762e12..86b00ee7d08 100644
--- a/www/seamonkey/patches/patch-mozilla_build_autoconf_nss.m4
+++ b/www/seamonkey/patches/patch-mozilla_build_autoconf_nss.m4
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_build_autoconf_nss.m4,v 1.6 2013/01/07 21:55:30 ryoon Exp $
+$NetBSD: patch-mozilla_build_autoconf_nss.m4,v 1.7 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/build/autoconf/nss.m4.orig 2012-11-18 10:19:31.000000000 +0000
+--- mozilla/build/autoconf/nss.m4.orig 2015-09-02 09:28:02.000000000 +0000
+++ mozilla/build/autoconf/nss.m4
@@ -22,18 +22,18 @@ AC_ARG_WITH(nss-exec-prefix,
if test -n "$nss_config_exec_prefix"; then
@@ -35,12 +35,12 @@ $NetBSD: patch-mozilla_build_autoconf_nss.m4,v 1.6 2013/01/07 21:55:30 ryoon Exp
- nss_config_major_version=`$NSS_CONFIG $nss_config_args --version | \
+ nss_config_major_version=`$NSS_CONFIG $nss_config_args nss --modversion | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\1/'`
- nss_config_minor_version=`$NSS_CONFIG $nss_config_args --version | \
+ nss_config_minor_version=`$NSS_CONFIG $nss_config_args nss --modversion | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\2/'`
- nss_config_micro_version=`$NSS_CONFIG $nss_config_args --version | \
+ nss_config_micro_version=`$NSS_CONFIG $nss_config_args nss --modversion | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
- min_nss_major_version=`echo $min_nss_version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\4/'`
+ if test -z "$nss_config_micro_version"; then
+ nss_config_micro_version="0"
diff --git a/www/seamonkey/patches/patch-mozilla_config_Makefile.in b/www/seamonkey/patches/patch-mozilla_config_Makefile.in
index ccd7423abd0..fd1f7685c01 100644
--- a/www/seamonkey/patches/patch-mozilla_config_Makefile.in
+++ b/www/seamonkey/patches/patch-mozilla_config_Makefile.in
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_config_Makefile.in,v 1.4 2014/06/22 08:54:39 ryoon Exp $
+$NetBSD: patch-mozilla_config_Makefile.in,v 1.5 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/config/Makefile.in.orig 2014-06-13 00:46:03.000000000 +0000
+--- mozilla/config/Makefile.in.orig 2015-09-02 09:28:07.000000000 +0000
+++ mozilla/config/Makefile.in
-@@ -77,6 +77,15 @@ export:: $(export-preqs)
+@@ -77,6 +77,16 @@ export:: $(export-preqs)
-DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \
-DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \
-DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
@@ -12,6 +12,7 @@ $NetBSD: patch-mozilla_config_Makefile.in,v 1.4 2014/06/22 08:54:39 ryoon Exp $
+ -DMOZ_NATIVE_THEORA=$(MOZ_NATIVE_THEORA) \
+ -DMOZ_NATIVE_VORBIS=$(MOZ_NATIVE_VORBIS) \
+ -DMOZ_NATIVE_TREMOR=$(MOZ_NATIVE_TREMOR) \
++ -DMOZ_NATIVE_CELT=$(MOZ_NATIVE_CELT) \
+ -DMOZ_NATIVE_OPUS=$(MOZ_NATIVE_OPUS) \
+ -DMOZ_NATIVE_SPEEX=$(MOZ_NATIVE_SPEEX) \
+ -DMOZ_NATIVE_SOUNDTOUCH=$(MOZ_NATIVE_SOUNDTOUCH) \
diff --git a/www/seamonkey/patches/patch-mozilla_config_external_moz.build b/www/seamonkey/patches/patch-mozilla_config_external_moz.build
index 6149d67b0f6..77201536793 100644
--- a/www/seamonkey/patches/patch-mozilla_config_external_moz.build
+++ b/www/seamonkey/patches/patch-mozilla_config_external_moz.build
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_config_external_moz.build,v 1.5 2015/02/15 02:11:03 ryoon Exp $
+$NetBSD: patch-mozilla_config_external_moz.build,v 1.6 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/config/external/moz.build.orig 2015-02-05 04:39:28.000000000 +0000
+--- mozilla/config/external/moz.build.orig 2015-09-02 09:28:07.000000000 +0000
+++ mozilla/config/external/moz.build
-@@ -19,13 +19,19 @@ if CONFIG['MOZ_UPDATER']:
+@@ -19,10 +19,19 @@ if CONFIG['MOZ_UPDATER']:
# There's no "native brotli" yet, but probably in the future...
external_dirs += ['modules/brotli']
@@ -10,6 +10,9 @@ $NetBSD: patch-mozilla_config_external_moz.build,v 1.5 2015/02/15 02:11:03 ryoon
+if not CONFIG['MOZ_NATIVE_OGG']:
+ external_dirs += ['media/libogg']
+
++if not CONFIG['MOZ_NATIVE_CELT'] or not CONFIG['MOZ_NATIVE_OPUS']:
++ external_dirs += ['media/libopus']
++
+if not CONFIG['MOZ_NATIVE_THEORA']:
+ external_dirs += ['media/libtheora']
+
@@ -20,12 +23,8 @@ $NetBSD: patch-mozilla_config_external_moz.build,v 1.5 2015/02/15 02:11:03 ryoon
+if CONFIG['MOZ_TREMOR'] and not CONFIG['MOZ_NATIVE_TREMOR']:
external_dirs += ['media/libtremor']
--if CONFIG['MOZ_OPUS']:
-+if CONFIG['MOZ_OPUS'] and not CONFIG['MOZ_NATIVE_OPUS']:
- external_dirs += ['media/libopus']
-
if CONFIG['MOZ_WEBM']:
-@@ -40,14 +46,16 @@ if CONFIG['MOZ_VPX'] and not CONFIG['MOZ
+@@ -37,15 +46,16 @@ if CONFIG['MOZ_VPX'] and not CONFIG['MOZ
if not CONFIG['MOZ_NATIVE_PNG']:
external_dirs += ['media/libpng']
@@ -39,6 +38,7 @@ $NetBSD: patch-mozilla_config_external_moz.build,v 1.5 2015/02/15 02:11:03 ryoon
'media/kiss_fft',
'media/libcubeb',
- 'media/libogg',
+- 'media/libopus',
- 'media/libtheora',
- 'media/libspeex_resampler',
'media/libstagefright',
diff --git a/www/seamonkey/patches/patch-mozilla_config_system-headers b/www/seamonkey/patches/patch-mozilla_config_system-headers
index 08f7f2b0b3e..80140033381 100644
--- a/www/seamonkey/patches/patch-mozilla_config_system-headers
+++ b/www/seamonkey/patches/patch-mozilla_config_system-headers
@@ -1,16 +1,16 @@
-$NetBSD: patch-mozilla_config_system-headers,v 1.14 2015/09/13 15:05:35 joerg Exp $
+$NetBSD: patch-mozilla_config_system-headers,v 1.15 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/config/system-headers.orig 2015-03-22 02:59:55.000000000 +0000
+--- mozilla/config/system-headers.orig 2015-09-02 09:28:08.000000000 +0000
+++ mozilla/config/system-headers
-@@ -457,6 +457,7 @@ frame/log.h
- frame/req.h
- freetype/freetype.h
- freetype/ftcache.h
-+freetype/ftfntfmt.h
- freetype/ftglyph.h
- freetype/ftsynth.h
- freetype/ftoutln.h
-@@ -470,6 +471,7 @@ freetype/ftbitmap.h
+@@ -189,7 +189,6 @@ asm/signal.h
+ ASRegistry.h
+ assert.h
+ atk/atk.h
+-atk-bridge.h
+ atlcom.h
+ atlconv.h
+ atlctl.cpp
+@@ -471,6 +470,7 @@ freetype/ftbitmap.h
freetype/ftxf86.h
freetype.h
ftcache.h
@@ -18,7 +18,15 @@ $NetBSD: patch-mozilla_config_system-headers,v 1.14 2015/09/13 15:05:35 joerg Ex
ftglyph.h
ftsynth.h
ftoutln.h
-@@ -1265,7 +1267,6 @@ X11/Xlocale.h
+@@ -636,6 +636,7 @@ libgnomevfs/gnome-vfs-mime-handlers.h
+ libgnomevfs/gnome-vfs-mime-utils.h
+ libgnomevfs/gnome-vfs-ops.h
+ libgnomevfs/gnome-vfs-standard-callbacks.h
++libv4l2.h
+ lib$routines.h
+ limits
+ limits.h
+@@ -1266,7 +1267,6 @@ X11/Xlocale.h
X11/Xos.h
X11/Xutil.h
zmouse.h
@@ -26,7 +34,7 @@ $NetBSD: patch-mozilla_config_system-headers,v 1.14 2015/09/13 15:05:35 joerg Ex
#if MOZ_NATIVE_PNG==1
png.h
#endif
-@@ -1327,10 +1328,13 @@ vorbis/codec.h
+@@ -1328,10 +1328,13 @@ vorbis/codec.h
theora/theoradec.h
tremor/ivorbiscodec.h
speex/speex_resampler.h
@@ -40,7 +48,7 @@ $NetBSD: patch-mozilla_config_system-headers,v 1.14 2015/09/13 15:05:35 joerg Ex
#endif
gst/gst.h
gst/app/gstappsink.h
-@@ -1359,3 +1363,37 @@ unicode/utypes.h
+@@ -1360,3 +1363,43 @@ unicode/utypes.h
#endif
libutil.h
unwind.h
@@ -66,6 +74,12 @@ $NetBSD: patch-mozilla_config_system-headers,v 1.14 2015/09/13 15:05:35 joerg Ex
+#if MOZ_NATIVE_TREMOR==1
+tremor/ivorbiscodec.h
+#endif
++#if MOZ_NATIVE_CELT==1
++celt.h
++celt_header.h
++celt/celt.h
++celt/celt_header.h
++#endif
+#if MOZ_NATIVE_OPUS==1
+opus.h
+opus_multistream.h
diff --git a/www/seamonkey/patches/patch-mozilla_config_system__wrappers_unwind.h b/www/seamonkey/patches/patch-mozilla_config_system__wrappers_unwind.h
new file mode 100644
index 00000000000..808279a2ef9
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_config_system__wrappers_unwind.h
@@ -0,0 +1,9 @@
+$NetBSD: patch-mozilla_config_system__wrappers_unwind.h,v 1.7 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/config/system_wrappers/unwind.h.orig 2015-09-21 03:33:26.000000000 +0000
++++ mozilla/config/system_wrappers/unwind.h
+@@ -0,0 +1,4 @@
++#pragma GCC system_header
++#pragma GCC visibility push(default)
++#include_next <unwind.h>
++#pragma GCC visibility pop
diff --git a/www/seamonkey/patches/patch-mozilla_dom_media_moz.build b/www/seamonkey/patches/patch-mozilla_dom_media_moz.build
index 55deec5e543..b87f27739bc 100644
--- a/www/seamonkey/patches/patch-mozilla_dom_media_moz.build
+++ b/www/seamonkey/patches/patch-mozilla_dom_media_moz.build
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_dom_media_moz.build,v 1.1 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_dom_media_moz.build,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/dom/media/moz.build.orig 2015-03-09 05:34:53.000000000 +0000
+--- mozilla/dom/media/moz.build.orig 2015-09-02 09:28:33.000000000 +0000
+++ mozilla/dom/media/moz.build
-@@ -270,6 +270,27 @@ if CONFIG['ANDROID_VERSION'] > '15':
+@@ -280,6 +280,27 @@ if CONFIG['ANDROID_VERSION'] > '15':
CFLAGS += CONFIG['GSTREAMER_CFLAGS']
CXXFLAGS += CONFIG['GSTREAMER_CFLAGS']
@@ -29,4 +29,4 @@ $NetBSD: patch-mozilla_dom_media_moz.build,v 1.1 2015/03/17 19:50:42 ryoon Exp $
+
include('/ipc/chromium/chromium-config.mozbuild')
- FINAL_LIBRARY = 'xul'
+ # Suppress some GCC warnings being treated as errors:
diff --git a/www/seamonkey/patches/patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp b/www/seamonkey/patches/patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp
index cdcbee3bc71..16cca1cf5ca 100644
--- a/www/seamonkey/patches/patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp
+++ b/www/seamonkey/patches/patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp,v 1.9 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp,v 1.10 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/dom/plugins/ipc/PluginModuleChild.cpp.orig 2015-03-09 05:35:00.000000000 +0000
+--- mozilla/dom/plugins/ipc/PluginModuleChild.cpp.orig 2015-09-02 09:28:36.000000000 +0000
+++ mozilla/dom/plugins/ipc/PluginModuleChild.cpp
-@@ -307,7 +307,7 @@ PluginModuleChild::InitForChrome(const s
+@@ -320,7 +320,7 @@ PluginModuleChild::InitForChrome(const s
// TODO: use PluginPRLibrary here
@@ -11,7 +11,7 @@ $NetBSD: patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp,v 1.9 2015/03/17 19
mShutdownFunc =
(NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown");
-@@ -1869,7 +1869,7 @@ PluginModuleChild::AnswerNP_GetEntryPoin
+@@ -1882,7 +1882,7 @@ PluginModuleChild::AnswerNP_GetEntryPoin
AssertPluginThread();
MOZ_ASSERT(mIsChrome);
@@ -20,12 +20,12 @@ $NetBSD: patch-mozilla_dom_plugins_ipc_PluginModuleChild.cpp,v 1.9 2015/03/17 19
return true;
#elif defined(OS_WIN) || defined(OS_MACOSX)
*_retval = mGetEntryPointsFunc(&mFunctions);
-@@ -1899,7 +1899,7 @@ PluginModuleChild::AnswerNP_Initialize(c
- SendBackUpXResources(FileDescriptor(xSocketFd));
+@@ -1927,7 +1927,7 @@ PluginModuleChild::DoNP_Initialize(const
#endif
+ NPError result;
-#if defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
- *_retval = mInitializeFunc(&sBrowserFuncs, &mFunctions);
- return true;
+ result = mInitializeFunc(&sBrowserFuncs, &mFunctions);
#elif defined(OS_WIN) || defined(OS_MACOSX)
+ result = mInitializeFunc(&sBrowserFuncs);
diff --git a/www/seamonkey/patches/patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp b/www/seamonkey/patches/patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp
index 494deb7af72..bfb12874d0b 100644
--- a/www/seamonkey/patches/patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp
+++ b/www/seamonkey/patches/patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp
@@ -1,16 +1,18 @@
-$NetBSD: patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp,v 1.3 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_extensions_spellcheck_hunspell_src_mozHunspell.cpp,v 1.4 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/extensions/spellcheck/hunspell/src/mozHunspell.cpp.orig 2015-03-09 05:35:11.000000000 +0000
+--- mozilla/extensions/spellcheck/hunspell/src/mozHunspell.cpp.orig 2015-09-02 09:28:48.000000000 +0000
+++ mozilla/extensions/spellcheck/hunspell/src/mozHunspell.cpp
-@@ -400,6 +400,12 @@ mozHunspell::LoadDictionaryList(bool aNo
+@@ -400,6 +400,14 @@ mozHunspell::LoadDictionaryList(bool aNo
}
}
+ // load system hunspell dictionaries
-+ nsIFile* hunDir;
++ nsCOMPtr<nsIFile> hunDir;
+ NS_NewNativeLocalFile(NS_LITERAL_CSTRING("@PREFIX@/share/hunspell"),
-+ true, &hunDir);
-+ LoadDictionariesFromDir(hunDir);
++ true, getter_AddRefs(hunDir));
++ if (hunDir) {
++ LoadDictionariesFromDir(hunDir);
++ }
+
// find dictionaries from extensions requiring restart
nsCOMPtr<nsISimpleEnumerator> dictDirs;
diff --git a/www/seamonkey/patches/patch-mozilla_image_decoders_nsJPEGDecoder.cpp b/www/seamonkey/patches/patch-mozilla_image_decoders_nsJPEGDecoder.cpp
index f1dce9b548c..ac3d08870b4 100644
--- a/www/seamonkey/patches/patch-mozilla_image_decoders_nsJPEGDecoder.cpp
+++ b/www/seamonkey/patches/patch-mozilla_image_decoders_nsJPEGDecoder.cpp
@@ -1,15 +1,15 @@
-$NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.2 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/image/decoders/nsJPEGDecoder.cpp.orig 2015-03-09 05:34:16.000000000 +0000
+--- mozilla/image/decoders/nsJPEGDecoder.cpp.orig 2015-09-02 09:27:13.000000000 +0000
+++ mozilla/image/decoders/nsJPEGDecoder.cpp
-@@ -21,13 +21,28 @@
+@@ -23,13 +23,28 @@
extern "C" {
#include "iccjpeg.h"
-}
+#ifdef JCS_EXTENSIONS
- #if defined(IS_BIG_ENDIAN)
+ #if MOZ_BIG_ENDIAN
#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB
#else
#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX
@@ -32,7 +32,7 @@ $NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.2 2015/03/17 19:50:4
static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width);
-@@ -358,6 +373,7 @@ nsJPEGDecoder::WriteInternal(const char*
+@@ -373,6 +388,7 @@ nsJPEGDecoder::WriteInternal(const char*
case JCS_GRAYSCALE:
case JCS_RGB:
case JCS_YCbCr:
@@ -40,7 +40,7 @@ $NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.2 2015/03/17 19:50:4
// if we're not color managing we can decode directly to
// MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB
if (mCMSMode != eCMSMode_All) {
-@@ -366,6 +382,9 @@ nsJPEGDecoder::WriteInternal(const char*
+@@ -381,6 +397,9 @@ nsJPEGDecoder::WriteInternal(const char*
} else {
mInfo.out_color_space = JCS_RGB;
}
@@ -50,7 +50,7 @@ $NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.2 2015/03/17 19:50:4
break;
case JCS_CMYK:
case JCS_YCCK:
-@@ -424,6 +443,15 @@ nsJPEGDecoder::WriteInternal(const char*
+@@ -450,6 +469,15 @@ nsJPEGDecoder::WriteInternal(const char*
return; // I/O suspension
}
@@ -66,9 +66,9 @@ $NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.2 2015/03/17 19:50:4
// If this is a progressive JPEG ...
mState = mInfo.buffered_image ?
-@@ -596,7 +624,11 @@ nsJPEGDecoder::OutputScanlines(bool* sus
- uint32_t* imageRow = ((uint32_t*)mImageData) +
- (mInfo.output_scanline * mInfo.output_width);
+@@ -632,7 +660,11 @@ nsJPEGDecoder::OutputScanlines(bool* sus
+
+ MOZ_ASSERT(imageRow, "Should have a row buffer here");
+#ifdef JCS_EXTENSIONS
if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) {
@@ -78,7 +78,7 @@ $NetBSD: patch-mozilla_image_decoders_nsJPEGDecoder.cpp,v 1.2 2015/03/17 19:50:4
// Special case: scanline will be directly converted into packed ARGB
if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) {
*suspend = true; // suspend
-@@ -911,6 +943,282 @@ term_source (j_decompress_ptr jd)
+@@ -959,6 +991,282 @@ term_source (j_decompress_ptr jd)
} // namespace mozilla
diff --git a/www/seamonkey/patches/patch-mozilla_intl_unicharutil_util_moz.build b/www/seamonkey/patches/patch-mozilla_intl_unicharutil_util_moz.build
index f75520b3d8e..8a42331ba57 100644
--- a/www/seamonkey/patches/patch-mozilla_intl_unicharutil_util_moz.build
+++ b/www/seamonkey/patches/patch-mozilla_intl_unicharutil_util_moz.build
@@ -1,11 +1,13 @@
-$NetBSD: patch-mozilla_intl_unicharutil_util_moz.build,v 1.1 2015/01/02 04:26:21 ryoon Exp $
+$NetBSD: patch-mozilla_intl_unicharutil_util_moz.build,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/intl/unicharutil/util/moz.build.orig 2014-12-03 06:22:47.000000000 +0000
+--- mozilla/intl/unicharutil/util/moz.build.orig 2015-09-02 09:27:18.000000000 +0000
+++ mozilla/intl/unicharutil/util/moz.build
-@@ -37,3 +37,6 @@ if CONFIG['_MSC_VER']:
-
+@@ -38,5 +38,8 @@ if CONFIG['_MSC_VER']:
if CONFIG['ENABLE_INTL_API']:
CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS']
-+
+
+if CONFIG['MOZ_NATIVE_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['GNU_CXX']:
+ FAIL_ON_WARNINGS = True
diff --git a/www/seamonkey/patches/patch-mozilla_js_public_CallArgs.h b/www/seamonkey/patches/patch-mozilla_js_public_CallArgs.h
new file mode 100644
index 00000000000..1ffcb8b02ae
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_js_public_CallArgs.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-mozilla_js_public_CallArgs.h,v 1.1 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/js/public/CallArgs.h.orig 2015-09-02 09:27:18.000000000 +0000
++++ mozilla/js/public/CallArgs.h
+@@ -344,7 +344,7 @@ class MOZ_STACK_CLASS CallArgs : public
+ * Returns true if there are at least |required| arguments passed in. If
+ * false, it reports an error message on the context.
+ */
+- bool requireAtLeast(JSContext* cx, const char* fnname, unsigned required);
++ JS_PUBLIC_API(bool) requireAtLeast(JSContext* cx, const char* fnname, unsigned required);
+
+ };
+
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp b/www/seamonkey/patches/patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp
index 9ad678ab4e6..ba81031d4d3 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp
+++ b/www/seamonkey/patches/patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp
@@ -1,48 +1,8 @@
-$NetBSD: patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp,v 1.2 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_asmjs_AsmJSSignalHandlers.cpp,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/asmjs/AsmJSSignalHandlers.cpp.orig 2015-03-09 05:34:25.000000000 +0000
+--- mozilla/js/src/asmjs/AsmJSSignalHandlers.cpp.orig 2015-09-02 09:27:18.000000000 +0000
+++ mozilla/js/src/asmjs/AsmJSSignalHandlers.cpp
-@@ -504,8 +504,38 @@ AsmJSFaultHandler(LPEXCEPTION_POINTERS e
- #elif defined(XP_MACOSX)
- # include <mach/exc.h>
-
-+# if defined(ARM_THREAD_STATE)
-+typedef arm_thread_state_t moz_platform_thread_state_t;
-+static const thread_state_flavor_t MOZ_PLATFORM_THREAD_STATE_FLAVOR = ARM_THREAD_STATE;
-+static const mach_msg_type_number_t MOZ_PLATFORM_THREAD_STATE_COUNT = ARM_THREAD_STATE_COUNT;
-+
-+# elif defined(PPC_THREAD_STATE)
-+typedef ppc_thread_state_t moz_platform_thread_state_t;
-+static const thread_state_flavor_t MOZ_PLATFORM_THREAD_STATE_FLAVOR = PPC_THREAD_STATE;
-+static const mach_msg_type_number_t MOZ_PLATFORM_THREAD_STATE_COUNT = PPC_THREAD_STATE_COUNT;
-+
-+# elif defined(PPC_THREAD_STATE64)
-+typedef ppc_thread_state64_t moz_platform_thread_state_t;
-+static const thread_state_flavor_t MOZ_PLATFORM_THREAD_STATE_FLAVOR = PPC_THREAD_STATE64;
-+static const mach_msg_type_number_t MOZ_PLATFORM_THREAD_STATE_COUNT = PPC_THREAD_STATE64_COUNT;
-+
-+# elif defined(x86_THREAD_STATE)
-+typedef x86_thread_state_t moz_platform_thread_state_t;
-+static const thread_state_flavor_t MOZ_PLATFORM_THREAD_STATE_FLAVOR = x86_THREAD_STATE;
-+static const mach_msg_type_number_t MOZ_PLATFORM_THREAD_STATE_COUNT = x86_THREAD_STATE_COUNT;
-+
-+# else
-+# error Type unknown for platform-specific thread_state_t
-+# endif
-+
-+# if defined(__DARWIN_UNIX03)
-+# define REG_FIELD(NAME) __ ## NAME
-+# else
-+# define REG_FIELD(NAME) NAME
-+# endif
-+
- static uint8_t **
--ContextToPC(x86_thread_state_t &state)
-+ContextToPC(moz_platform_thread_state_t &state)
- {
- # if defined(JS_CPU_X64)
- static_assert(sizeof(state.uts.ts64.__rip) == sizeof(void*),
-@@ -617,10 +647,11 @@ HandleMachException(JSRuntime *rt, const
+@@ -637,10 +637,11 @@ HandleMachException(JSRuntime* rt, const
mach_port_t rtThread = request.body.thread.name;
// Read out the JSRuntime thread's register state.
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_gc_Memory.cpp b/www/seamonkey/patches/patch-mozilla_js_src_gc_Memory.cpp
deleted file mode 100644
index 8269fe88374..00000000000
--- a/www/seamonkey/patches/patch-mozilla_js_src_gc_Memory.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-$NetBSD: patch-mozilla_js_src_gc_Memory.cpp,v 1.4 2014/11/02 05:40:31 ryoon Exp $
-
---- mozilla/js/src/gc/Memory.cpp.orig 2014-10-14 06:36:16.000000000 +0000
-+++ mozilla/js/src/gc/Memory.cpp
-@@ -406,7 +406,7 @@ static inline void *
- MapMemory(size_t length, int prot = PROT_READ | PROT_WRITE,
- int flags = MAP_PRIVATE | MAP_ANON, int fd = -1, off_t offset = 0)
- {
--#if defined(__ia64__)
-+#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
- /*
- * The JS engine assumes that all allocated pointers have their high 17 bits clear,
- * which ia64's mmap doesn't support directly. However, we can emulate it by passing
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_jit_ExecutableAllocator.h b/www/seamonkey/patches/patch-mozilla_js_src_jit_ExecutableAllocator.h
index 305259599a1..d04070ce5fb 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_jit_ExecutableAllocator.h
+++ b/www/seamonkey/patches/patch-mozilla_js_src_jit_ExecutableAllocator.h
@@ -1,10 +1,10 @@
-$NetBSD: patch-mozilla_js_src_jit_ExecutableAllocator.h,v 1.2 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_jit_ExecutableAllocator.h,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/jit/ExecutableAllocator.h.orig 2015-03-09 05:34:36.000000000 +0000
+--- mozilla/js/src/jit/ExecutableAllocator.h.orig 2015-09-02 09:27:29.000000000 +0000
+++ mozilla/js/src/jit/ExecutableAllocator.h
-@@ -425,6 +425,11 @@ public:
-
- #undef GCC_VERSION
+@@ -419,6 +419,11 @@ class ExecutableAllocator {
+ {
+ __clear_cache(code, reinterpret_cast<char*>(code) + size);
}
+#elif defined(JS_CODEGEN_ARM) && (defined(__FreeBSD__) || defined(__NetBSD__))
+ static void cacheFlush(void* code, size_t size)
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_jit_LIR.cpp b/www/seamonkey/patches/patch-mozilla_js_src_jit_LIR.cpp
index 390bb01d531..efef5b0bb30 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_jit_LIR.cpp
+++ b/www/seamonkey/patches/patch-mozilla_js_src_jit_LIR.cpp
@@ -1,9 +1,9 @@
-$NetBSD: patch-mozilla_js_src_jit_LIR.cpp,v 1.1 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_jit_LIR.cpp,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/jit/LIR.cpp.orig 2015-03-09 05:34:37.000000000 +0000
+--- mozilla/js/src/jit/LIR.cpp.orig 2015-09-02 09:27:30.000000000 +0000
+++ mozilla/js/src/jit/LIR.cpp
-@@ -314,7 +314,7 @@ LNode::printName(FILE *fp, Opcode op)
- const char *name = names[op];
+@@ -323,7 +323,7 @@ LNode::printName(FILE* fp, Opcode op)
+ const char* name = names[op];
size_t len = strlen(name);
for (size_t i = 0; i < len; i++)
- fprintf(fp, "%c", tolower(name[i]));
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_jit_MIR.cpp b/www/seamonkey/patches/patch-mozilla_js_src_jit_MIR.cpp
index 4419ecfe174..bab28f2dfbf 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_jit_MIR.cpp
+++ b/www/seamonkey/patches/patch-mozilla_js_src_jit_MIR.cpp
@@ -1,13 +1,13 @@
-$NetBSD: patch-mozilla_js_src_jit_MIR.cpp,v 1.1 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_jit_MIR.cpp,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/jit/MIR.cpp.orig 2015-03-09 05:34:37.000000000 +0000
+--- mozilla/js/src/jit/MIR.cpp.orig 2015-09-02 09:27:30.000000000 +0000
+++ mozilla/js/src/jit/MIR.cpp
-@@ -68,7 +68,7 @@ MDefinition::PrintOpcodeName(FILE *fp, M
- const char *name = names[op];
+@@ -71,7 +71,7 @@ MDefinition::PrintOpcodeName(FILE* fp, M
+ const char* name = names[op];
size_t len = strlen(name);
for (size_t i = 0; i < len; i++)
- fprintf(fp, "%c", tolower(name[i]));
+ fprintf(fp, "%c", tolower(((unsigned char)name[i])));
}
- static MConstant *
+ const Value&
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_jit_arm_Architecture-arm.cpp b/www/seamonkey/patches/patch-mozilla_js_src_jit_arm_Architecture-arm.cpp
index 9fb89beddc6..5a1f1bef77c 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_jit_arm_Architecture-arm.cpp
+++ b/www/seamonkey/patches/patch-mozilla_js_src_jit_arm_Architecture-arm.cpp
@@ -1,12 +1,12 @@
-$NetBSD: patch-mozilla_js_src_jit_arm_Architecture-arm.cpp,v 1.2 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_jit_arm_Architecture-arm.cpp,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/jit/arm/Architecture-arm.cpp.orig 2015-03-09 05:34:37.000000000 +0000
+--- mozilla/js/src/jit/arm/Architecture-arm.cpp.orig 2015-09-02 09:27:31.000000000 +0000
+++ mozilla/js/src/jit/arm/Architecture-arm.cpp
@@ -16,7 +16,7 @@
#include "jit/arm/Assembler-arm.h"
#include "jit/RegisterSets.h"
--#if defined(ANDROID) || defined(JS_ARM_SIMULATOR)
+-#if !defined(__linux__) || defined(ANDROID) || defined(JS_ARM_SIMULATOR)
+#if !defined(__linux__) || defined(ANDROID) || defined(JS_ARM_SIMULATOR) || defined(__NetBSD__)
// The Android NDK and B2G do not include the hwcap.h kernel header, and it is not
// defined when building the simulator, so inline the header defines we need.
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_jsapi.cpp b/www/seamonkey/patches/patch-mozilla_js_src_jsapi.cpp
index ebc56e01bff..1617833f5c9 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_jsapi.cpp
+++ b/www/seamonkey/patches/patch-mozilla_js_src_jsapi.cpp
@@ -1,22 +1,13 @@
-$NetBSD: patch-mozilla_js_src_jsapi.cpp,v 1.3 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_jsapi.cpp,v 1.4 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/jsapi.cpp.orig 2015-03-09 05:34:38.000000000 +0000
+--- mozilla/js/src/jsapi.cpp.orig 2015-09-02 09:27:32.000000000 +0000
+++ mozilla/js/src/jsapi.cpp
-@@ -233,7 +233,7 @@ JS_ConvertArgumentsVA(JSContext *cx, con
- assertSameCompartment(cx, args);
- required = true;
- while ((c = *format++) != '\0') {
-- if (isspace(c))
-+ if (isspace(((unsigned char)c)))
- continue;
- if (c == '/') {
- required = false;
-@@ -522,7 +522,7 @@ MessageParameterCount(const char *format
- {
- unsigned numfmtspecs = 0;
- for (const char *fmt = format; *fmt != '\0'; fmt++) {
-- if (*fmt == '{' && isdigit(fmt[1]))
-+ if (*fmt == '{' && isdigit((unsigned char)fmt[1]))
- ++numfmtspecs;
- }
- return numfmtspecs;
+@@ -115,7 +115,7 @@ using js::frontend::Parser;
+ #define JS_ADDRESSOF_VA_LIST(ap) (&(ap))
+ #endif
+
+-bool
++JS_PUBLIC_API(bool)
+ JS::CallArgs::requireAtLeast(JSContext* cx, const char* fnname, unsigned required) {
+ if (length() < required) {
+ char numArgsStr[40];
diff --git a/www/seamonkey/patches/patch-mozilla_js_src_shell_jsoptparse.cpp b/www/seamonkey/patches/patch-mozilla_js_src_shell_jsoptparse.cpp
index cb1b95dd830..88e86deec77 100644
--- a/www/seamonkey/patches/patch-mozilla_js_src_shell_jsoptparse.cpp
+++ b/www/seamonkey/patches/patch-mozilla_js_src_shell_jsoptparse.cpp
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_js_src_shell_jsoptparse.cpp,v 1.1 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_js_src_shell_jsoptparse.cpp,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/js/src/shell/jsoptparse.cpp.orig 2015-03-09 05:34:41.000000000 +0000
+--- mozilla/js/src/shell/jsoptparse.cpp.orig 2015-09-02 09:27:36.000000000 +0000
+++ mozilla/js/src/shell/jsoptparse.cpp
-@@ -90,11 +90,11 @@ PrintParagraph(const char *text, unsigne
+@@ -90,7 +90,7 @@ PrintParagraph(const char* text, unsigne
printf("%*s", startColno, "");
while (*it != '\0') {
@@ -10,9 +10,4 @@ $NetBSD: patch-mozilla_js_src_shell_jsoptparse.cpp,v 1.1 2015/03/17 19:50:42 ryo
+ MOZ_ASSERT(!isspace((unsigned char)*it));
/* Delimit the current token. */
- const char *limit = it;
-- while (!isspace(*limit) && *limit != '\0')
-+ while (!isspace(((unsigned char)*limit)) && *limit != '\0')
- ++limit;
-
- /*
+ const char* limit = it;
diff --git a/www/seamonkey/patches/patch-mozilla_js_xpconnect_src_XPCConvert.cpp b/www/seamonkey/patches/patch-mozilla_js_xpconnect_src_XPCConvert.cpp
new file mode 100644
index 00000000000..461259484a4
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_js_xpconnect_src_XPCConvert.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-mozilla_js_xpconnect_src_XPCConvert.cpp,v 1.1 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/js/xpconnect/src/XPCConvert.cpp.orig 2015-09-02 09:28:14.000000000 +0000
++++ mozilla/js/xpconnect/src/XPCConvert.cpp
+@@ -134,7 +134,7 @@ XPCConvert::NativeData2JS(MutableHandleV
+ d.setNumber(*static_cast<const float*>(s));
+ return true;
+ case nsXPTType::T_DOUBLE:
+- d.setNumber(*static_cast<const double*>(s));
++ d.setNumber(CanonicalizeNaN(*static_cast<const double*>(s)));
+ return true;
+ case nsXPTType::T_BOOL :
+ d.setBoolean(*static_cast<const bool*>(s));
diff --git a/www/seamonkey/patches/patch-mozilla_media_libcubeb_src_cubeb__alsa.c b/www/seamonkey/patches/patch-mozilla_media_libcubeb_src_cubeb__alsa.c
index 6c8c89d3c6a..dcbc55659f7 100644
--- a/www/seamonkey/patches/patch-mozilla_media_libcubeb_src_cubeb__alsa.c
+++ b/www/seamonkey/patches/patch-mozilla_media_libcubeb_src_cubeb__alsa.c
@@ -1,10 +1,10 @@
-$NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.5 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/media/libcubeb/src/cubeb_alsa.c.orig 2015-03-09 05:34:21.000000000 +0000
+--- mozilla/media/libcubeb/src/cubeb_alsa.c.orig 2015-09-02 09:27:22.000000000 +0000
+++ mozilla/media/libcubeb/src/cubeb_alsa.c
-@@ -6,12 +6,18 @@
- */
+@@ -7,12 +7,18 @@
#undef NDEBUG
+ #define _DEFAULT_SOURCE
#define _BSD_SOURCE
+#if defined(__NetBSD__)
+#define _NETBSD_SOURCE
@@ -21,7 +21,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
#include <unistd.h>
#include <alsa/asoundlib.h>
#include "cubeb/cubeb.h"
-@@ -24,6 +30,51 @@
+@@ -25,6 +31,51 @@
#define ALSA_PA_PLUGIN "ALSA <-> PulseAudio PCM I/O Plugin"
@@ -73,7 +73,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
/* ALSA is not thread-safe. snd_pcm_t instances are individually protected
by the owning cubeb_stream's mutex. snd_pcm_t creation and destruction
is not thread-safe until ALSA 1.0.24 (see alsa-lib.git commit 91c9c8f1),
-@@ -64,6 +115,8 @@ struct cubeb {
+@@ -65,6 +116,8 @@ struct cubeb {
workaround is not required. */
snd_config_t * local_config;
int is_pa;
@@ -82,7 +82,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
};
enum stream_state {
-@@ -257,32 +310,35 @@ alsa_refill_stream(cubeb_stream * stm)
+@@ -258,32 +311,35 @@ alsa_refill_stream(cubeb_stream * stm)
long got;
void * p;
int draining;
@@ -137,7 +137,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
/* This should never happen. */
if ((unsigned int) avail > stm->buffer_size) {
-@@ -293,8 +349,8 @@ alsa_refill_stream(cubeb_stream * stm)
+@@ -294,8 +350,8 @@ alsa_refill_stream(cubeb_stream * stm)
available to write. If avail is still zero here, the stream must be in
a funky state, so recover and try again. */
if (avail == 0) {
@@ -148,7 +148,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (avail <= 0) {
pthread_mutex_unlock(&stm->mutex);
stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
-@@ -302,7 +358,7 @@ alsa_refill_stream(cubeb_stream * stm)
+@@ -303,7 +359,7 @@ alsa_refill_stream(cubeb_stream * stm)
}
}
@@ -157,7 +157,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
assert(p);
pthread_mutex_unlock(&stm->mutex);
-@@ -311,10 +367,11 @@ alsa_refill_stream(cubeb_stream * stm)
+@@ -312,10 +368,11 @@ alsa_refill_stream(cubeb_stream * stm)
if (got < 0) {
pthread_mutex_unlock(&stm->mutex);
stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
@@ -170,7 +170,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (stm->params.format == CUBEB_SAMPLE_FLOAT32NE) {
float * b = (float *) p;
-@@ -327,14 +384,62 @@ alsa_refill_stream(cubeb_stream * stm)
+@@ -328,14 +385,64 @@ alsa_refill_stream(cubeb_stream * stm)
b[i] *= stm->volume;
}
}
@@ -206,6 +206,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
+ return ERROR;
+ }
+ continue;
++#if defined(EBADFD)
+ case -EBADFD:
+ fprintf(stderr, "%s: snc_pcm_writei returned -%s, giving up\n",
+ __func__, "EBADFD");
@@ -213,6 +214,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
+ pthread_mutex_unlock(&stm->mutex);
+ return ERROR;
++#endif
+ }
+ if (wrote < 0) {
+ fprintf(stderr, "%s: snc_pcm_writei returned unexpected error %lld, "
@@ -241,7 +243,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
}
if (got != avail) {
long buffer_fill = stm->buffer_size - (avail - got);
-@@ -342,7 +447,7 @@ alsa_refill_stream(cubeb_stream * stm)
+@@ -343,7 +450,7 @@ alsa_refill_stream(cubeb_stream * stm)
/* Fill the remaining buffer with silence to guarantee one full period
has been written. */
@@ -250,7 +252,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
set_timeout(&stm->drain_timeout, buffer_time * 1000);
-@@ -453,26 +558,26 @@ get_slave_pcm_node(snd_config_t * lconf,
+@@ -454,26 +561,26 @@ get_slave_pcm_node(snd_config_t * lconf,
slave_def = NULL;
@@ -282,7 +284,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (r < 0) {
break;
}
-@@ -481,7 +586,7 @@ get_slave_pcm_node(snd_config_t * lconf,
+@@ -482,7 +589,7 @@ get_slave_pcm_node(snd_config_t * lconf,
if (r < 0 || r > (int) sizeof(node_name)) {
break;
}
@@ -291,7 +293,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (r < 0) {
break;
}
-@@ -490,7 +595,7 @@ get_slave_pcm_node(snd_config_t * lconf,
+@@ -491,7 +598,7 @@ get_slave_pcm_node(snd_config_t * lconf,
} while (0);
if (slave_def) {
@@ -300,7 +302,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
}
return NULL;
-@@ -513,22 +618,22 @@ init_local_config_with_workaround(char c
+@@ -514,22 +621,22 @@ init_local_config_with_workaround(char c
lconf = NULL;
@@ -327,7 +329,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (r < 0) {
break;
}
-@@ -537,7 +642,7 @@ init_local_config_with_workaround(char c
+@@ -538,7 +645,7 @@ init_local_config_with_workaround(char c
if (r < 0 || r > (int) sizeof(node_name)) {
break;
}
@@ -336,7 +338,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (r < 0) {
break;
}
-@@ -548,12 +653,12 @@ init_local_config_with_workaround(char c
+@@ -549,12 +656,12 @@ init_local_config_with_workaround(char c
}
/* Fetch the PCM node's type, and bail out if it's not the PulseAudio plugin. */
@@ -351,7 +353,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (r < 0) {
break;
}
-@@ -564,18 +669,18 @@ init_local_config_with_workaround(char c
+@@ -565,18 +672,18 @@ init_local_config_with_workaround(char c
/* Don't clobber an explicit existing handle_underrun value, set it only
if it doesn't already exist. */
@@ -373,7 +375,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
if (r < 0) {
break;
}
-@@ -583,7 +688,7 @@ init_local_config_with_workaround(char c
+@@ -584,7 +691,7 @@ init_local_config_with_workaround(char c
return lconf;
} while (0);
@@ -382,7 +384,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
return NULL;
}
-@@ -595,9 +700,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, s
+@@ -596,9 +703,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, s
pthread_mutex_lock(&cubeb_alsa_mutex);
if (local_config) {
@@ -394,7 +396,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
}
pthread_mutex_unlock(&cubeb_alsa_mutex);
-@@ -610,7 +715,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm)
+@@ -611,7 +718,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm)
int r;
pthread_mutex_lock(&cubeb_alsa_mutex);
@@ -403,7 +405,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
pthread_mutex_unlock(&cubeb_alsa_mutex);
return r;
-@@ -667,12 +772,65 @@ alsa_init(cubeb ** context, char const *
+@@ -668,12 +775,65 @@ alsa_init(cubeb ** context, char const *
pthread_attr_t attr;
snd_pcm_t * dummy;
@@ -470,7 +472,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
cubeb_alsa_error_handler_set = 1;
}
pthread_mutex_unlock(&cubeb_alsa_mutex);
-@@ -680,6 +838,8 @@ alsa_init(cubeb ** context, char const *
+@@ -681,6 +841,8 @@ alsa_init(cubeb ** context, char const *
ctx = calloc(1, sizeof(*ctx));
assert(ctx);
@@ -479,7 +481,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
ctx->ops = &alsa_ops;
r = pthread_mutex_init(&ctx->mutex, NULL);
-@@ -729,7 +889,7 @@ alsa_init(cubeb ** context, char const *
+@@ -730,7 +892,7 @@ alsa_init(cubeb ** context, char const *
config fails with EINVAL, the PA PCM is too old for this workaround. */
if (r == -EINVAL) {
pthread_mutex_lock(&cubeb_alsa_mutex);
@@ -488,7 +490,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
pthread_mutex_unlock(&cubeb_alsa_mutex);
ctx->local_config = NULL;
} else if (r >= 0) {
-@@ -768,9 +928,13 @@ alsa_destroy(cubeb * ctx)
+@@ -769,9 +931,13 @@ alsa_destroy(cubeb * ctx)
pthread_mutex_destroy(&ctx->mutex);
free(ctx->fds);
@@ -503,7 +505,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
pthread_mutex_unlock(&cubeb_alsa_mutex);
}
-@@ -838,7 +1002,7 @@ alsa_stream_init(cubeb * ctx, cubeb_stre
+@@ -839,7 +1005,7 @@ alsa_stream_init(cubeb * ctx, cubeb_stre
return CUBEB_ERROR;
}
@@ -512,7 +514,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
assert(r == 0);
/* Ugly hack: the PA ALSA plugin allows buffer configurations that can't
-@@ -848,23 +1012,23 @@ alsa_stream_init(cubeb * ctx, cubeb_stre
+@@ -849,23 +1015,23 @@ alsa_stream_init(cubeb * ctx, cubeb_stre
latency = latency < 500 ? 500 : latency;
}
@@ -542,7 +544,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
assert((nfds_t) r == stm->nfds);
r = pthread_cond_init(&stm->cond, NULL);
-@@ -895,7 +1059,7 @@ alsa_stream_destroy(cubeb_stream * stm)
+@@ -896,7 +1062,7 @@ alsa_stream_destroy(cubeb_stream * stm)
pthread_mutex_lock(&stm->mutex);
if (stm->pcm) {
if (stm->state == DRAINING) {
@@ -551,7 +553,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
}
alsa_locked_pcm_close(stm->pcm);
stm->pcm = NULL;
-@@ -905,7 +1069,10 @@ alsa_stream_destroy(cubeb_stream * stm)
+@@ -906,7 +1072,10 @@ alsa_stream_destroy(cubeb_stream * stm)
pthread_mutex_destroy(&stm->mutex);
r = pthread_cond_destroy(&stm->cond);
@@ -563,42 +565,42 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
alsa_unregister_stream(stm);
-@@ -937,12 +1104,12 @@ alsa_get_max_channel_count(cubeb * ctx,
+@@ -938,12 +1107,12 @@ alsa_get_max_channel_count(cubeb * ctx,
return CUBEB_ERROR;
}
-- rv = snd_pcm_hw_params_any(stm->pcm, hw_params);
-+ rv = WRAP(snd_pcm_hw_params_any)(stm->pcm, hw_params);
- if (rv < 0) {
+- r = snd_pcm_hw_params_any(stm->pcm, hw_params);
++ r = WRAP(snd_pcm_hw_params_any)(stm->pcm, hw_params);
+ if (r < 0) {
return CUBEB_ERROR;
}
-- rv = snd_pcm_hw_params_get_channels_max(hw_params, max_channels);
-+ rv = WRAP(snd_pcm_hw_params_get_channels_max)(hw_params, max_channels);
- if (rv < 0) {
+- r = snd_pcm_hw_params_get_channels_max(hw_params, max_channels);
++ r = WRAP(snd_pcm_hw_params_get_channels_max)(hw_params, max_channels);
+ if (r < 0) {
return CUBEB_ERROR;
}
-@@ -962,34 +1129,34 @@ alsa_get_preferred_sample_rate(cubeb * c
+@@ -963,34 +1132,34 @@ alsa_get_preferred_sample_rate(cubeb * c
/* get a pcm, disabling resampling, so we get a rate the
* hardware/dmix/pulse/etc. supports. */
-- rv = snd_pcm_open(&pcm, "", SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
-+ rv = WRAP(snd_pcm_open)(&pcm, "", SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
- if (rv < 0) {
+- r = snd_pcm_open(&pcm, "default", SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
++ r = WRAP(snd_pcm_open)(&pcm, "default", SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
+ if (r < 0) {
return CUBEB_ERROR;
}
-- rv = snd_pcm_hw_params_any(pcm, hw_params);
-+ rv = WRAP(snd_pcm_hw_params_any)(pcm, hw_params);
- if (rv < 0) {
+- r = snd_pcm_hw_params_any(pcm, hw_params);
++ r = WRAP(snd_pcm_hw_params_any)(pcm, hw_params);
+ if (r < 0) {
- snd_pcm_close(pcm);
+ WRAP(snd_pcm_close)(pcm);
return CUBEB_ERROR;
}
-- rv = snd_pcm_hw_params_get_rate(hw_params, rate, &dir);
-+ rv = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &dir);
- if (rv >= 0) {
+- r = snd_pcm_hw_params_get_rate(hw_params, rate, &dir);
++ r = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &dir);
+ if (r >= 0) {
/* There is a default rate: use it. */
- snd_pcm_close(pcm);
+ WRAP(snd_pcm_close)(pcm);
@@ -608,9 +610,9 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
/* Use a common rate, alsa may adjust it based on hw/etc. capabilities. */
*rate = 44100;
-- rv = snd_pcm_hw_params_set_rate_near(pcm, hw_params, rate, NULL);
-+ rv = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL);
- if (rv < 0) {
+- r = snd_pcm_hw_params_set_rate_near(pcm, hw_params, rate, NULL);
++ r = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL);
+ if (r < 0) {
- snd_pcm_close(pcm);
+ WRAP(snd_pcm_close)(pcm);
return CUBEB_ERROR;
@@ -621,7 +623,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
return CUBEB_OK;
}
-@@ -1013,7 +1180,7 @@ alsa_stream_start(cubeb_stream * stm)
+@@ -1014,7 +1183,7 @@ alsa_stream_start(cubeb_stream * stm)
ctx = stm->context;
pthread_mutex_lock(&stm->mutex);
@@ -630,7 +632,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
gettimeofday(&stm->last_activity, NULL);
pthread_mutex_unlock(&stm->mutex);
-@@ -1047,7 +1214,7 @@ alsa_stream_stop(cubeb_stream * stm)
+@@ -1048,7 +1217,7 @@ alsa_stream_stop(cubeb_stream * stm)
pthread_mutex_unlock(&ctx->mutex);
pthread_mutex_lock(&stm->mutex);
@@ -639,7 +641,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
pthread_mutex_unlock(&stm->mutex);
return CUBEB_OK;
-@@ -1063,14 +1230,17 @@ alsa_stream_get_position(cubeb_stream *
+@@ -1064,14 +1233,17 @@ alsa_stream_get_position(cubeb_stream *
pthread_mutex_lock(&stm->mutex);
delay = -1;
@@ -660,7 +662,7 @@ $NetBSD: patch-mozilla_media_libcubeb_src_cubeb__alsa.c,v 1.4 2015/03/17 19:50:4
*position = 0;
if (stm->write_position >= (snd_pcm_uframes_t) delay) {
-@@ -1089,7 +1259,7 @@ alsa_stream_get_latency(cubeb_stream * s
+@@ -1090,7 +1262,7 @@ alsa_stream_get_latency(cubeb_stream * s
snd_pcm_sframes_t delay;
/* This function returns the delay in frames until a frame written using
snd_pcm_writei is sent to the DAC. The DAC delay should be < 1ms anyways. */
diff --git a/www/seamonkey/patches/patch-mozilla_media_webrtc_signaling_signaling.gyp b/www/seamonkey/patches/patch-mozilla_media_webrtc_signaling_signaling.gyp
deleted file mode 100644
index 73dc9560f57..00000000000
--- a/www/seamonkey/patches/patch-mozilla_media_webrtc_signaling_signaling.gyp
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-mozilla_media_webrtc_signaling_signaling.gyp,v 1.3 2014/06/22 08:54:39 ryoon Exp $
-
---- mozilla/media/webrtc/signaling/signaling.gyp.orig 2014-06-13 00:46:10.000000000 +0000
-+++ mozilla/media/webrtc/signaling/signaling.gyp
-@@ -825,14 +825,13 @@
- ['OS=="mac"', {
- 'defines' : [
- 'SIP_OS_OSX',
-- '_POSIX_SOURCE',
-+ # using BSD extensions, leave _POSIX_SOURCE undefined
- 'CPR_MEMORY_LITTLE_ENDIAN',
- 'NO_SOCKET_POLLING',
- 'USE_TIMER_SELECT_BASED',
- 'FULL_BUILD',
- 'STUBBED_OUT',
- 'USE_PRINTF',
-- '_DARWIN_C_SOURCE',
- 'NO_NSPR_10_SUPPORT',
- ],
- }],
diff --git a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi
index 3532be61bda..c485c4c4cc8 100644
--- a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi
+++ b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi
@@ -1,17 +1,27 @@
-$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi,v 1.2 2014/06/22 08:54:39 ryoon Exp $
+$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi.orig 2014-06-13 00:45:44.000000000 +0000
+--- mozilla/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi.orig 2015-09-02 09:27:27.000000000 +0000
+++ mozilla/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi
-@@ -14,9 +14,9 @@
+@@ -17,18 +17,11 @@
'conditions': [
['build_with_mozilla==1', {
# Mozilla provides its own build of the opus library.
- 'include_dirs': [
- '/media/libopus/include',
-- ]
+- '/media/libopus/src',
+- '/media/libopus/celt',
+ 'cflags_mozilla': [
++ '$(filter -I%, $(MOZ_CELT_CFLAGS))/celt',
+ '$(MOZ_OPUS_CFLAGS)',
-+ ],
++ '$(filter -I%, $(MOZ_OPUS_CFLAGS))/../src',
+ ],
+- 'direct_dependent_settings': {
+- 'include_dirs': [
+- '/media/libopus/include',
+- '/media/libopus/src',
+- '/media/libopus/celt',
+- ],
+- },
}, {
'dependencies': [
'<(DEPTH)/third_party/opus/opus.gyp:opus'
diff --git a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi
new file mode 100644
index 00000000000..6e98f0b8efe
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi
@@ -0,0 +1,28 @@
+$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi,v 1.1 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi.orig 2015-09-02 09:27:27.000000000 +0000
++++ mozilla/media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi
+@@ -84,19 +84,11 @@
+ ],
+ }],
+ ['build_with_mozilla==1', {
+- 'include_dirs': [
+- # Need Opus header files for the audio classifier.
+- '<(DEPTH)/../../../media/opus/celt',
+-# '<(DEPTH)/third_party/opus/src/src',
++ 'cflags_mozilla': [
++ '$(filter -I%, $(MOZ_CELT_CFLAGS))/celt',
++ '$(MOZ_OPUS_CFLAGS)',
++ '$(filter -I%, $(MOZ_OPUS_CFLAGS))/../src',
+ ],
+- 'direct_dependent_settings': {
+- 'include_dirs': [
+- '../../../../../../media/opus/celt',
+- # Need Opus header files for the audio classifier.
+- '<(DEPTH)/../../../media/opus/celt',
+-# '<(DEPTH)/third_party/opus/src/src',
+- ],
+- },
+ }],
+ ],
+ 'sources': [
diff --git a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi
index 14fc181e933..a435e576a6f 100644
--- a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi
+++ b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi,v 1.3 2014/11/02 05:40:31 ryoon Exp $
+$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi,v 1.4 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi.orig 2014-10-14 06:36:31.000000000 +0000
+--- mozilla/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi.orig 2015-09-02 09:27:28.000000000 +0000
+++ mozilla/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
@@ -7,6 +7,9 @@
# be found in the AUTHORS file in the root of the source tree.
@@ -11,24 +11,24 @@ $NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__c
+ },
'targets': [
{
- 'target_name': 'video_capture_module',
-@@ -46,6 +49,19 @@
- 'linux/video_capture_linux.cc',
- 'linux/video_capture_linux.h',
- ],
-+ 'conditions': [
-+ ['use_libv4l2==1', {
-+ 'defines': [
-+ 'HAVE_LIBV4L2',
-+ ],
-+ 'cflags_mozilla': [
-+ '$(MOZ_LIBV4L2_CFLAGS)',
-+ ],
-+ 'libraries': [
-+ '-lv4l2',
-+ ],
-+ }],
+ # Note this library is missing an implementation for the video capture.
+@@ -69,6 +72,19 @@
+ 'linux/video_capture_linux.cc',
+ 'linux/video_capture_linux.h',
+ ],
++ 'conditions': [
++ ['use_libv4l2==1', {
++ 'defines': [
++ 'HAVE_LIBV4L2',
+ ],
- }], # linux
- ['OS=="mac"', {
- 'sources': [
++ 'cflags_mozilla': [
++ '$(MOZ_LIBV4L2_CFLAGS)',
++ ],
++ 'libraries': [
++ '-lv4l2',
++ ],
++ }],
++ ],
+ }], # linux
+ ['OS=="mac"', {
+ 'sources': [
diff --git a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__coding_main_source_receiver.cc b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__coding_main_source_receiver.cc
deleted file mode 100644
index 686890a8c31..00000000000
--- a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_modules_video__coding_main_source_receiver.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_modules_video__coding_main_source_receiver.cc,v 1.1 2015/03/17 19:50:42 ryoon Exp $
-
---- mozilla/media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc.orig 2015-03-09 05:34:40.000000000 +0000
-+++ mozilla/media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc
-@@ -159,12 +159,13 @@ VCMEncodedFrame* VCMReceiver::FrameForDe
- // Assume that render timing errors are due to changes in the video stream.
- if (next_render_time_ms < 0) {
- timing_error = true;
-- } else if (std::abs(next_render_time_ms - now_ms) > max_video_delay_ms_) {
-+ } else if (std::abs(static_cast<int>(next_render_time_ms - now_ms)) >
-+ max_video_delay_ms_) {
- WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideoCoding,
- VCMId(vcm_id_, receiver_id_),
- "This frame is out of our delay bounds, resetting jitter "
- "buffer: %d > %d",
-- static_cast<int>(std::abs(next_render_time_ms - now_ms)),
-+ std::abs(static_cast<int>(next_render_time_ms - now_ms)),
- max_video_delay_ms_);
- timing_error = true;
- } else if (static_cast<int>(timing_->TargetVideoDelay()) >
diff --git a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp
index de86a7771e4..8e0283dfd1f 100644
--- a/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp
+++ b/www/seamonkey/patches/patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp,v 1.4 2015/02/15 02:11:03 ryoon Exp $
+$NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp,v 1.5 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp.orig 2015-02-05 04:39:00.000000000 +0000
+--- mozilla/media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp.orig 2015-09-02 09:27:31.000000000 +0000
+++ mozilla/media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp
@@ -14,6 +14,13 @@ Cygwin fix provided by:
Scott McMurray
@@ -27,6 +27,6 @@ $NetBSD: patch-mozilla_media_webrtc_trunk_webrtc_system__wrappers_source_spreads
+# endif
+#endif
+
- namespace boost {
- namespace detail {
- //This only works on unsigned data types
+ #ifdef getchar
+ #undef getchar
+ #endif
diff --git a/www/seamonkey/patches/patch-mozilla_memory_build_mozjemalloc__compat.c b/www/seamonkey/patches/patch-mozilla_memory_build_mozjemalloc__compat.c
index d67bc2c16b7..d0d3e73944d 100644
--- a/www/seamonkey/patches/patch-mozilla_memory_build_mozjemalloc__compat.c
+++ b/www/seamonkey/patches/patch-mozilla_memory_build_mozjemalloc__compat.c
@@ -1,35 +1,9 @@
-$NetBSD: patch-mozilla_memory_build_mozjemalloc__compat.c,v 1.2 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_memory_build_mozjemalloc__compat.c,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/memory/build/mozjemalloc_compat.c.orig 2015-03-09 05:34:43.000000000 +0000
+--- mozilla/memory/build/mozjemalloc_compat.c.orig 2015-09-02 09:27:33.000000000 +0000
+++ mozilla/memory/build/mozjemalloc_compat.c
-@@ -12,6 +12,8 @@
- #include "jemalloc_types.h"
- #include "mozilla/Types.h"
-
-+#include <stdbool.h>
-+
- #if defined(MOZ_NATIVE_JEMALLOC)
-
- MOZ_IMPORT_API int
-@@ -47,6 +49,16 @@ je_(nallocm)(size_t *rsize, size_t size,
- je_(mallctlbymib)(mib, miblen, &v, &sz, NULL, 0); \
- } while (0)
-
-+#define CTL_IJ_GET(n, v, i, j) do { \
-+ size_t mib[6]; \
-+ size_t miblen = sizeof(mib) / sizeof(mib[0]); \
-+ size_t sz = sizeof(v); \
-+ je_(mallctlnametomib)(n, mib, &miblen); \
-+ mib[2] = i; \
-+ mib[4] = j; \
-+ je_(mallctlbymib)(mib, miblen, &v, &sz, NULL, 0); \
-+} while (0)
-+
- MOZ_MEMORY_API size_t
- malloc_good_size_impl(size_t size)
- {
-@@ -61,6 +73,48 @@ malloc_good_size_impl(size_t size)
- return size;
+@@ -131,6 +131,48 @@ compute_bin_unused(unsigned int narenas)
+ return bin_unused;
}
+static size_t
@@ -77,13 +51,3 @@ $NetBSD: patch-mozilla_memory_build_mozjemalloc__compat.c,v 1.2 2015/03/17 19:50
MOZ_JEMALLOC_API void
jemalloc_stats_impl(jemalloc_stats_t *stats)
{
-@@ -93,7 +147,8 @@ jemalloc_stats_impl(jemalloc_stats_t *st
- // We could get this value out of base.c::base_pages, but that really should
- // be an upstream change, so don't worry about it for now.
- stats->bookkeeping = 0;
-- stats->bin_unused = 0;
-+
-+ stats->bin_unused = compute_bin_unused(narenas);
- }
-
- MOZ_JEMALLOC_API void
diff --git a/www/seamonkey/patches/patch-mozilla_memory_jemalloc_src_configure b/www/seamonkey/patches/patch-mozilla_memory_jemalloc_src_configure
index 1f47e60e119..6c282bcf910 100644
--- a/www/seamonkey/patches/patch-mozilla_memory_jemalloc_src_configure
+++ b/www/seamonkey/patches/patch-mozilla_memory_jemalloc_src_configure
@@ -1,31 +1,13 @@
-$NetBSD: patch-mozilla_memory_jemalloc_src_configure,v 1.1 2014/11/02 05:40:31 ryoon Exp $
+$NetBSD: patch-mozilla_memory_jemalloc_src_configure,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/memory/jemalloc/src/configure.orig 2014-10-14 06:36:32.000000000 +0000
+--- mozilla/memory/jemalloc/src/configure.orig 2015-09-02 09:27:33.000000000 +0000
+++ mozilla/memory/jemalloc/src/configure
-@@ -6344,7 +6344,7 @@ else
+@@ -6566,7 +6566,7 @@ else
+ LG_PAGE="detect"
fi
- if test "x$have_sbrk" = "x1" ; then
-- if test "x$sbrk_deprecated" == "x1" ; then
-+ if test "x$sbrk_deprecated" = "x1" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Disabling dss allocation because sbrk is deprecated" >&5
- $as_echo "Disabling dss allocation because sbrk is deprecated" >&6; }
- enable_dss="0"
-@@ -6945,7 +6945,7 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $je_cv_gcc_builtin_ffsl" >&5
- $as_echo "$je_cv_gcc_builtin_ffsl" >&6; }
-
--if test "x${je_cv_gcc_builtin_ffsl}" == "xyes" ; then
-+if test "x${je_cv_gcc_builtin_ffsl}" = "xyes" ; then
- $as_echo "#define JEMALLOC_INTERNAL_FFSL __builtin_ffsl" >>confdefs.h
-
- $as_echo "#define JEMALLOC_INTERNAL_FFS __builtin_ffs" >>confdefs.h
-@@ -6988,7 +6988,7 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $je_cv_function_ffsl" >&5
- $as_echo "$je_cv_function_ffsl" >&6; }
-
-- if test "x${je_cv_function_ffsl}" == "xyes" ; then
-+ if test "x${je_cv_function_ffsl}" = "xyes" ; then
- $as_echo "#define JEMALLOC_INTERNAL_FFSL ffsl" >>confdefs.h
-
- $as_echo "#define JEMALLOC_INTERNAL_FFS ffs" >>confdefs.h
+-if test "x$LG_PAGE" == "xdetect"; then
++if test "x$LG_PAGE" = "xdetect"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking LG_PAGE" >&5
+ $as_echo_n "checking LG_PAGE... " >&6; }
+ if ${je_cv_lg_page+:} false; then :
diff --git a/www/seamonkey/patches/patch-mozilla_memory_mozalloc_VolatileBufferOSX.cpp b/www/seamonkey/patches/patch-mozilla_memory_volatile_VolatileBufferOSX.cpp
index ab6978efbf1..3676aa9fc63 100644
--- a/www/seamonkey/patches/patch-mozilla_memory_mozalloc_VolatileBufferOSX.cpp
+++ b/www/seamonkey/patches/patch-mozilla_memory_volatile_VolatileBufferOSX.cpp
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_memory_mozalloc_VolatileBufferOSX.cpp,v 1.1 2015/02/15 02:11:03 ryoon Exp $
+$NetBSD: patch-mozilla_memory_volatile_VolatileBufferOSX.cpp,v 1.1 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/memory/mozalloc/VolatileBufferOSX.cpp.orig 2015-02-05 04:39:05.000000000 +0000
-+++ mozilla/memory/mozalloc/VolatileBufferOSX.cpp
-@@ -46,7 +46,14 @@ VolatileBuffer::Init(size_t aSize, size_
+--- mozilla/memory/volatile/VolatileBufferOSX.cpp.orig 2015-09-02 09:27:34.000000000 +0000
++++ mozilla/memory/volatile/VolatileBufferOSX.cpp
+@@ -47,7 +47,14 @@ VolatileBuffer::Init(size_t aSize, size_
}
heap_alloc:
diff --git a/www/seamonkey/patches/patch-mozilla_mfbt_Attributes.h b/www/seamonkey/patches/patch-mozilla_mfbt_Attributes.h
index 61c15cdd1c4..ae4bb7f78ce 100644
--- a/www/seamonkey/patches/patch-mozilla_mfbt_Attributes.h
+++ b/www/seamonkey/patches/patch-mozilla_mfbt_Attributes.h
@@ -1,16 +1,16 @@
-$NetBSD: patch-mozilla_mfbt_Attributes.h,v 1.1 2014/11/02 05:40:31 ryoon Exp $
+$NetBSD: patch-mozilla_mfbt_Attributes.h,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/mfbt/Attributes.h.orig 2014-10-14 06:36:32.000000000 +0000
+--- mozilla/mfbt/Attributes.h.orig 2015-09-02 09:27:34.000000000 +0000
+++ mozilla/mfbt/Attributes.h
-@@ -51,6 +51,7 @@
+@@ -50,6 +50,7 @@
+ * don't indicate support for them here, due to
* http://stackoverflow.com/questions/20498142/visual-studio-2013-explicit-keyword-bug
*/
- # if _MSC_VER >= 1800
-+# define MOZ_HAVE_CXX11_ALIGNAS
- # define MOZ_HAVE_CXX11_DELETE
- # endif
- # if _MSC_VER >= 1700
-@@ -74,6 +75,9 @@
++# define MOZ_HAVE_CXX11_ALIGNAS
+ # define MOZ_HAVE_NEVER_INLINE __declspec(noinline)
+ # define MOZ_HAVE_NORETURN __declspec(noreturn)
+ # ifdef __clang__
+@@ -70,6 +71,9 @@
# ifndef __has_extension
# define __has_extension __has_feature /* compatibility, for older versions of clang */
# endif
@@ -20,13 +20,13 @@ $NetBSD: patch-mozilla_mfbt_Attributes.h,v 1.1 2014/11/02 05:40:31 ryoon Exp $
# if __has_extension(cxx_constexpr)
# define MOZ_HAVE_CXX11_CONSTEXPR
# endif
-@@ -95,6 +99,9 @@
+@@ -84,6 +88,9 @@
# endif
#elif defined(__GNUC__)
# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
+# if MOZ_GCC_VERSION_AT_LEAST(4, 8, 0)
+# define MOZ_HAVE_CXX11_ALIGNAS
+# endif
- # if MOZ_GCC_VERSION_AT_LEAST(4, 7, 0)
- # define MOZ_HAVE_CXX11_OVERRIDE
- # define MOZ_HAVE_CXX11_FINAL final
+ # define MOZ_HAVE_CXX11_CONSTEXPR
+ # define MOZ_HAVE_EXPLICIT_CONVERSION
+ # endif
diff --git a/www/seamonkey/patches/patch-mozilla_netwerk_base_public_nsNetUtil.h b/www/seamonkey/patches/patch-mozilla_netwerk_base_nsNetUtil.h
index 35963c5b524..c342e5b7d99 100644
--- a/www/seamonkey/patches/patch-mozilla_netwerk_base_public_nsNetUtil.h
+++ b/www/seamonkey/patches/patch-mozilla_netwerk_base_nsNetUtil.h
@@ -1,7 +1,7 @@
-$NetBSD: patch-mozilla_netwerk_base_public_nsNetUtil.h,v 1.1 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_netwerk_base_nsNetUtil.h,v 1.1 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/netwerk/base/public/nsNetUtil.h.orig 2015-03-09 05:34:54.000000000 +0000
-+++ mozilla/netwerk/base/public/nsNetUtil.h
+--- mozilla/netwerk/base/nsNetUtil.h.orig 2015-09-02 09:27:59.000000000 +0000
++++ mozilla/netwerk/base/nsNetUtil.h
@@ -13,6 +13,7 @@
#include "nsMemory.h"
#include "nsCOMPtr.h"
@@ -10,7 +10,7 @@ $NetBSD: patch-mozilla_netwerk_base_public_nsNetUtil.h,v 1.1 2015/03/17 19:50:42
#include "nsHashKeys.h"
#include "plstr.h"
-@@ -2869,6 +2870,26 @@ NS_IsSrcdocChannel(nsIChannel *aChannel)
+@@ -2828,6 +2829,26 @@ NS_IsSrcdocChannel(nsIChannel *aChannel)
bool NS_IsReasonableHTTPHeaderValue(const nsACString& aValue);
/**
diff --git a/www/seamonkey/patches/patch-mozilla_netwerk_dns_Makefile.in b/www/seamonkey/patches/patch-mozilla_netwerk_dns_Makefile.in
deleted file mode 100644
index ec1a30b57b8..00000000000
--- a/www/seamonkey/patches/patch-mozilla_netwerk_dns_Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-mozilla_netwerk_dns_Makefile.in,v 1.2 2014/06/22 08:54:39 ryoon Exp $
-
---- mozilla/netwerk/dns/Makefile.in.orig 2014-06-13 00:45:47.000000000 +0000
-+++ mozilla/netwerk/dns/Makefile.in
-@@ -5,6 +5,10 @@
-
- include $(topsrcdir)/config/rules.mk
-
-+ifdef MOZ_NATIVE_HARFBUZZ
-+CXXFLAGS += $(MOZ_HARFBUZZ_CFLAGS)
-+endif
-+
- # Generate the include file containing compact, static definitions
- # for effective TLD data.
- etld_data.inc: $(srcdir)/prepare_tlds.py $(srcdir)/effective_tld_names.dat
diff --git a/www/seamonkey/patches/patch-mozilla_netwerk_dns_moz.build b/www/seamonkey/patches/patch-mozilla_netwerk_dns_moz.build
index 7709dde90b6..e67d1889e2a 100644
--- a/www/seamonkey/patches/patch-mozilla_netwerk_dns_moz.build
+++ b/www/seamonkey/patches/patch-mozilla_netwerk_dns_moz.build
@@ -1,11 +1,13 @@
-$NetBSD: patch-mozilla_netwerk_dns_moz.build,v 1.1 2015/01/02 04:26:21 ryoon Exp $
+$NetBSD: patch-mozilla_netwerk_dns_moz.build,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/netwerk/dns/moz.build.orig 2014-12-03 06:23:17.000000000 +0000
+--- mozilla/netwerk/dns/moz.build.orig 2015-09-02 09:28:02.000000000 +0000
+++ mozilla/netwerk/dns/moz.build
-@@ -63,3 +63,6 @@ GENERATED_FILES = [
- LOCAL_INCLUDES += [
- '../base/src',
+@@ -68,5 +68,8 @@ LOCAL_INCLUDES += [
+ '/netwerk/base',
]
-+
+
+if CONFIG['MOZ_NATIVE_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['ANDROID_VERSION'] > '19':
+ CXXFLAGS += ['-I%s/bionic/libc/dns/include' % CONFIG['ANDROID_SOURCE']]
diff --git a/www/seamonkey/patches/patch-mozilla_netwerk_wifi_moz.build b/www/seamonkey/patches/patch-mozilla_netwerk_wifi_moz.build
deleted file mode 100644
index 192d74063c7..00000000000
--- a/www/seamonkey/patches/patch-mozilla_netwerk_wifi_moz.build
+++ /dev/null
@@ -1,13 +0,0 @@
-$NetBSD: patch-mozilla_netwerk_wifi_moz.build,v 1.6 2015/01/02 04:26:21 ryoon Exp $
-
---- mozilla/netwerk/wifi/moz.build.orig 2014-12-03 06:23:17.000000000 +0000
-+++ mozilla/netwerk/wifi/moz.build
-@@ -35,7 +35,7 @@ if CONFIG['OS_ARCH'] == 'Darwin':
- UNIFIED_SOURCES += [
- 'osx_corewlan.mm',
- ]
--elif CONFIG['OS_ARCH'] == 'FreeBSD':
-+elif CONFIG['OS_ARCH'] in ('DragonFly', 'FreeBSD'):
- UNIFIED_SOURCES += [
- 'nsWifiScannerFreeBSD.cpp',
- ]
diff --git a/www/seamonkey/patches/patch-mozilla_netwerk_wifi_nsWifiScannerFreeBSD.cpp b/www/seamonkey/patches/patch-mozilla_netwerk_wifi_nsWifiScannerFreeBSD.cpp
deleted file mode 100644
index ea5537ef56e..00000000000
--- a/www/seamonkey/patches/patch-mozilla_netwerk_wifi_nsWifiScannerFreeBSD.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-$NetBSD: patch-mozilla_netwerk_wifi_nsWifiScannerFreeBSD.cpp,v 1.4 2015/01/02 04:26:21 ryoon Exp $
-
---- mozilla/netwerk/wifi/nsWifiScannerFreeBSD.cpp.orig 2014-12-03 06:23:17.000000000 +0000
-+++ mozilla/netwerk/wifi/nsWifiScannerFreeBSD.cpp
-@@ -13,7 +13,11 @@
- #include <sys/socket.h>
- #include <net/if.h>
- #include <net/if_media.h>
-+#ifdef __DragonFly__
-+#include <netproto/802_11/ieee80211_ioctl.h>
-+#else
- #include <net80211/ieee80211_ioctl.h>
-+#endif
-
- #include <ifaddrs.h>
- #include <string.h>
diff --git a/www/seamonkey/patches/patch-mozilla_toolkit_library_moz.build b/www/seamonkey/patches/patch-mozilla_toolkit_library_moz.build
index 782814814c0..7ed6eec0e99 100644
--- a/www/seamonkey/patches/patch-mozilla_toolkit_library_moz.build
+++ b/www/seamonkey/patches/patch-mozilla_toolkit_library_moz.build
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_toolkit_library_moz.build,v 1.3 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_toolkit_library_moz.build,v 1.4 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/toolkit/library/moz.build.orig 2015-03-09 05:34:27.000000000 +0000
+--- mozilla/toolkit/library/moz.build.orig 2015-09-02 09:27:31.000000000 +0000
+++ mozilla/toolkit/library/moz.build
@@ -214,6 +214,7 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF
]
@@ -10,7 +10,7 @@ $NetBSD: patch-mozilla_toolkit_library_moz.build,v 1.3 2015/03/17 19:50:42 ryoon
OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
if CONFIG['MOZ_NATIVE_JPEG']:
-@@ -225,6 +226,27 @@ if CONFIG['MOZ_NATIVE_PNG']:
+@@ -225,6 +226,30 @@ if CONFIG['MOZ_NATIVE_PNG']:
if CONFIG['MOZ_NATIVE_HUNSPELL']:
OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
@@ -26,6 +26,9 @@ $NetBSD: patch-mozilla_toolkit_library_moz.build,v 1.3 2015/03/17 19:50:42 ryoon
+if CONFIG['MOZ_NATIVE_TREMOR']:
+ OS_LIBS += CONFIG['MOZ_TREMOR_LIBS']
+
++if CONFIG['MOZ_NATIVE_CELT']:
++ OS_LIBS += CONFIG['MOZ_CELT_LIBS']
++
+if CONFIG['MOZ_NATIVE_OPUS']:
+ OS_LIBS += CONFIG['MOZ_OPUS_LIBS']
+
@@ -38,7 +41,7 @@ $NetBSD: patch-mozilla_toolkit_library_moz.build,v 1.3 2015/03/17 19:50:42 ryoon
if CONFIG['MOZ_NATIVE_LIBEVENT']:
OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
-@@ -234,8 +256,14 @@ if CONFIG['MOZ_NATIVE_LIBVPX']:
+@@ -234,8 +259,14 @@ if CONFIG['MOZ_NATIVE_LIBVPX']:
if not CONFIG['MOZ_TREE_PIXMAN']:
OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS']
@@ -55,7 +58,7 @@ $NetBSD: patch-mozilla_toolkit_library_moz.build,v 1.3 2015/03/17 19:50:42 ryoon
if CONFIG['HAVE_CLOCK_MONOTONIC']:
OS_LIBS += CONFIG['REALTIME_LIBS']
-@@ -364,7 +392,7 @@ if CONFIG['OS_ARCH'] == 'WINNT':
+@@ -365,7 +396,7 @@ if CONFIG['OS_ARCH'] == 'WINNT':
if CONFIG['MOZ_ENABLE_QT']:
OS_LIBS += CONFIG['XEXT_LIBS']
diff --git a/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPInstallManager.jsm b/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPInstallManager.jsm
index 47aafb8dc7e..defed4740da 100644
--- a/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPInstallManager.jsm
+++ b/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPInstallManager.jsm
@@ -1,16 +1,8 @@
-$NetBSD: patch-mozilla_toolkit_modules_GMPInstallManager.jsm,v 1.1 2014/11/02 05:40:31 ryoon Exp $
+$NetBSD: patch-mozilla_toolkit_modules_GMPInstallManager.jsm,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/toolkit/modules/GMPInstallManager.jsm.orig 2014-10-14 06:36:44.000000000 +0000
+--- mozilla/toolkit/modules/GMPInstallManager.jsm.orig 2015-09-02 09:27:31.000000000 +0000
+++ mozilla/toolkit/modules/GMPInstallManager.jsm
-@@ -107,6 +107,7 @@ let GMPPrefs = {
- */
- KEY_LOG_ENABLED: "media.gmp-manager.log",
- KEY_ADDON_LAST_UPDATE: "media.{0}.lastUpdate",
-+ KEY_ADDON_PATH: "media.{0}.path",
- KEY_ADDON_VERSION: "media.{0}.version",
- KEY_ADDON_AUTOUPDATE: "media.{0}.autoupdate",
- KEY_URL: "media.gmp-manager.url",
-@@ -888,9 +889,7 @@ GMPDownloader.prototype = {
+@@ -874,9 +874,7 @@ GMPDownloader.prototype = {
let gmpAddon = this._gmpAddon;
let installToDirPath = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsIFile);
@@ -21,17 +13,17 @@ $NetBSD: patch-mozilla_toolkit_modules_GMPInstallManager.jsm,v 1.1 2014/11/02 05
installToDirPath.initWithPath(path);
log.info("install to directory path: " + installToDirPath.path);
let gmpInstaller = new GMPExtractor(zipPath, installToDirPath.path);
-@@ -899,10 +898,12 @@ GMPDownloader.prototype = {
+@@ -885,10 +883,12 @@ GMPDownloader.prototype = {
// Success, set the prefs
let now = Math.round(Date.now() / 1000);
- GMPPrefs.set(GMPPrefs.KEY_ADDON_LAST_UPDATE, now, gmpAddon.id);
+ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_LAST_UPDATE, now, gmpAddon.id);
- // Setting the version pref signals installation completion to consumers,
- // if you need to set other prefs etc. do it before this.
+ // Setting the path pref signals installation completion to consumers,
+ // so set the version and potential other information they use first.
- GMPPrefs.set(GMPPrefs.KEY_ADDON_VERSION, gmpAddon.version,
+ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_VERSION, gmpAddon.version,
gmpAddon.id);
-+ GMPPrefs.set(GMPPrefs.KEY_ADDON_PATH,
++ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_PATH,
+ installToDirPath.path, gmpAddon.id);
this._deferred.resolve(extractedPaths);
}, err => {
diff --git a/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPUtils.jsm b/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPUtils.jsm
new file mode 100644
index 00000000000..21707ebca96
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_toolkit_modules_GMPUtils.jsm
@@ -0,0 +1,12 @@
+$NetBSD: patch-mozilla_toolkit_modules_GMPUtils.jsm,v 1.1 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/toolkit/modules/GMPUtils.jsm.orig 2015-09-02 09:27:31.000000000 +0000
++++ mozilla/toolkit/modules/GMPUtils.jsm
+@@ -74,6 +74,7 @@ this.GMPPrefs = {
+ KEY_EME_ENABLED: "media.eme.enabled",
+ KEY_PLUGIN_ENABLED: "media.{0}.enabled",
+ KEY_PLUGIN_LAST_UPDATE: "media.{0}.lastUpdate",
++ KEY_PLUGIN_PATH: "media.{0}.path",
+ KEY_PLUGIN_VERSION: "media.{0}.version",
+ KEY_PLUGIN_AUTOUPDATE: "media.{0}.autoupdate",
+ KEY_PLUGIN_FORCEVISIBLE: "media.{0}.forcevisible",
diff --git a/www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_GMPProvider.jsm b/www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_GMPProvider.jsm
new file mode 100644
index 00000000000..939bc8ddefe
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_GMPProvider.jsm
@@ -0,0 +1,132 @@
+$NetBSD: patch-mozilla_toolkit_mozapps_extensions_internal_GMPProvider.jsm,v 1.1 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/toolkit/mozapps/extensions/internal/GMPProvider.jsm.orig 2015-09-02 09:27:31.000000000 +0000
++++ mozilla/toolkit/mozapps/extensions/internal/GMPProvider.jsm
+@@ -101,12 +101,11 @@ function GMPWrapper(aPluginInfo) {
+ Log.repository.getLoggerWithMessagePrefix("Toolkit.GMP",
+ "GMPWrapper(" +
+ this._plugin.id + ") ");
+- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
+- this._plugin.id),
++ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED, this._plugin.id),
+ this.onPrefEnabledChanged, this);
+- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
++ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
+ this._plugin.id),
+- this.onPrefVersionChanged, this);
++ this.onPrefPathChanged, this);
+ if (this._plugin.isEME) {
+ Preferences.observe(GMPPrefs.KEY_EME_ENABLED,
+ this.onPrefEMEGlobalEnabledChanged, this);
+@@ -123,17 +122,14 @@ GMPWrapper.prototype = {
+ optionsType: AddonManager.OPTIONS_TYPE_INLINE,
+ get optionsURL() { return this._plugin.optionsURL; },
+
++
+ set gmpPath(aPath) { this._gmpPath = aPath; },
+ get gmpPath() {
+- if (!this._gmpPath && this.isInstalled) {
+- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
+- this._plugin.id,
+- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
+- null, this._plugin.id));
++ if (!this._gmpPath) {
++ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ }
+ return this._gmpPath;
+ },
+-
+ get id() { return this._plugin.id; },
+ get type() { return "plugin"; },
+ get isGMPlugin() { return true; },
+@@ -144,8 +140,13 @@ GMPWrapper.prototype = {
+ get description() { return this._plugin.description; },
+ get fullDescription() { return this._plugin.fullDescription; },
+
+- get version() { return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
+- this._plugin.id); },
++ get version() {
++ if (this.isInstalled) {
++ return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
++ this._plugin.id);
++ }
++ return null;
++ },
+
+ get isActive() { return !this.appDisabled && !this.userDisabled; },
+ get appDisabled() {
+@@ -292,24 +293,17 @@ GMPWrapper.prototype = {
+
+ get pluginMimeTypes() { return []; },
+ get pluginLibraries() {
+- if (this.isInstalled) {
+- let path = this.version;
+- return [path];
+- }
+- return [];
++ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
++ return path && path.length ? [OS.Path.basename(path)] : [];
+ },
+ get pluginFullpath() {
+- if (this.isInstalled) {
+- let path = OS.Path.join(OS.Constants.Path.profileDir,
+- this._plugin.id,
+- this.version);
+- return [path];
+- }
+- return [];
++ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
++ return path && path.length ? [path] : [];
+ },
+
+ get isInstalled() {
+- return this.version && this.version.length > 0;
++ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
++ return path && path.length > 0;
+ },
+
+ _handleEnabledChanged: function() {
+@@ -389,10 +383,10 @@ GMPWrapper.prototype = {
+ }
+ },
+
+- onPrefVersionChanged: function() {
++ onPrefPathChanged: function() {
+ AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
+ if (this._gmpPath) {
+- this._log.info("onPrefVersionChanged() - unregistering gmp directory " +
++ this._log.info("onPrefPathChanged() - unregistering gmp directory " +
+ this._gmpPath);
+ gmpService.removeAndDeletePluginDirectory(this._gmpPath, true /* can defer */);
+ }
+@@ -401,15 +395,10 @@ GMPWrapper.prototype = {
+ AddonManagerPrivate.callInstallListeners("onExternalInstall", null, this,
+ null, false);
+ AddonManagerPrivate.callAddonListeners("onInstalling", this, false);
+- this._gmpPath = null;
+- if (this.isInstalled) {
+- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
+- this._plugin.id,
+- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
+- null, this._plugin.id));
+- }
++ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH,
++ null, this._plugin.id);
+ if (this._gmpPath && this.isActive) {
+- this._log.info("onPrefVersionChanged() - registering gmp directory " +
++ this._log.info("onPrefPathChanged() - registering gmp directory " +
+ this._gmpPath);
+ gmpService.addPluginDirectory(this._gmpPath);
+ }
+@@ -431,9 +420,9 @@ GMPWrapper.prototype = {
+ Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
+ this._plugin.id),
+ this.onPrefEnabledChanged, this);
+- Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
++ Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
+ this._plugin.id),
+- this.onPrefVersionChanged, this);
++ this.onPrefPathChanged, this);
+ if (this._plugin.isEME) {
+ Preferences.ignore(GMPPrefs.KEY_EME_ENABLED,
+ this.onPrefEMEGlobalEnabledChanged, this);
diff --git a/www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_OpenH264Provider.jsm b/www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_OpenH264Provider.jsm
deleted file mode 100644
index 2522c1b9ec5..00000000000
--- a/www/seamonkey/patches/patch-mozilla_toolkit_mozapps_extensions_internal_OpenH264Provider.jsm
+++ /dev/null
@@ -1,118 +0,0 @@
-$NetBSD: patch-mozilla_toolkit_mozapps_extensions_internal_OpenH264Provider.jsm,v 1.1 2014/11/02 05:40:31 ryoon Exp $
-
---- mozilla/toolkit/mozapps/extensions/internal/OpenH264Provider.jsm.orig 2014-10-14 06:36:45.000000000 +0000
-+++ mozilla/toolkit/mozapps/extensions/internal/OpenH264Provider.jsm
-@@ -29,6 +29,7 @@ const SEC_IN_A_DAY = 24 * 6
- const OPENH264_PLUGIN_ID = "gmp-gmpopenh264";
- const OPENH264_PREF_BRANCH = "media." + OPENH264_PLUGIN_ID + ".";
- const OPENH264_PREF_ENABLED = "enabled";
-+const OPENH264_PREF_PATH = "path";
- const OPENH264_PREF_VERSION = "version";
- const OPENH264_PREF_LASTUPDATE = "lastUpdate";
- const OPENH264_PREF_AUTOUPDATE = "autoupdate";
-@@ -99,7 +100,12 @@ let OpenH264Wrapper = {
- get description() { return pluginsBundle.GetStringFromName("openH264_description"); },
- get fullDescription() { return OPENH264_FULLDESCRIPTION; },
-
-- get version() { return prefs.get(OPENH264_PREF_VERSION, ""); },
-+ get version() {
-+ if (this.isInstalled) {
-+ return prefs.get(OPENH264_PREF_VERSION, "");
-+ }
-+ return "";
-+ },
-
- get isActive() { return !this.userDisabled; },
- get appDisabled() { return false; },
-@@ -223,24 +229,17 @@ let OpenH264Wrapper = {
-
- get pluginMimeTypes() { return []; },
- get pluginLibraries() {
-- if (this.isInstalled) {
-- let path = this.version;
-- return [path];
-- }
-- return [];
-+ let path = prefs.get(OPENH264_PREF_PATH, null);
-+ return path && path.length ? [OS.Path.basename(path)] : [];
- },
- get pluginFullpath() {
-- if (this.isInstalled) {
-- let path = OS.Path.join(OS.Constants.Path.profileDir,
-- OPENH264_PLUGIN_ID,
-- this.version);
-- return [path];
-- }
-- return [];
-+ let path = prefs.get(OPENH264_PREF_PATH, null);
-+ return path && path.length ? [path] : [];
- },
-
- get isInstalled() {
-- return this.version.length > 0;
-+ let path = prefs.get(OPENH264_PREF_PATH, "");
-+ return path.length > 0;
- },
- };
-
-@@ -251,19 +250,14 @@ let OpenH264Provider = {
- "OpenH264Provider" + "::");
- OpenH264Wrapper._log = Log.repository.getLoggerWithMessagePrefix("Toolkit.OpenH264Provider",
- "OpenH264Wrapper" + "::");
-- this.gmpPath = null;
-- if (OpenH264Wrapper.isInstalled) {
-- this.gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
-- OPENH264_PLUGIN_ID,
-- prefs.get(OPENH264_PREF_VERSION, null));
-- }
-+ this.gmpPath = prefs.get(OPENH264_PREF_PATH, null);
- let enabled = prefs.get(OPENH264_PREF_ENABLED, true);
- this._log.trace("startup() - enabled=" + enabled + ", gmpPath="+this.gmpPath);
-
-
- Services.obs.addObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false);
- prefs.observe(OPENH264_PREF_ENABLED, this.onPrefEnabledChanged, this);
-- prefs.observe(OPENH264_PREF_VERSION, this.onPrefVersionChanged, this);
-+ prefs.observe(OPENH264_PREF_PATH, this.onPrefPathChanged, this);
- prefs.observe(OPENH264_PREF_LOGGING, configureLogging);
-
- if (this.gmpPath && enabled) {
-@@ -280,7 +274,7 @@ let OpenH264Provider = {
- this._log.trace("shutdown()");
- Services.obs.removeObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED);
- prefs.ignore(OPENH264_PREF_ENABLED, this.onPrefEnabledChanged, this);
-- prefs.ignore(OPENH264_PREF_VERSION, this.onPrefVersionChanged, this);
-+ prefs.ignore(OPENH264_PREF_PATH, this.onPrefPathChanged, this);
- prefs.ignore(OPENH264_PREF_LOGGING, configureLogging);
-
- return OpenH264Wrapper._updateTask;
-@@ -306,25 +300,20 @@ let OpenH264Provider = {
- wrapper);
- },
-
-- onPrefVersionChanged: function() {
-+ onPrefPathChanged: function() {
- let wrapper = OpenH264Wrapper;
-
- AddonManagerPrivate.callAddonListeners("onUninstalling", wrapper, false);
- if (this.gmpPath) {
-- this._log.info("onPrefVersionChanged() - unregistering gmp directory " + this.gmpPath);
-+ this._log.info("onPrefPathChanged() - removing gmp directory " + this.gmpPath);
- gmpService.removePluginDirectory(this.gmpPath);
- }
- AddonManagerPrivate.callAddonListeners("onUninstalled", wrapper);
-
- AddonManagerPrivate.callInstallListeners("onExternalInstall", null, wrapper, null, false);
-- this.gmpPath = null;
-- if (OpenH264Wrapper.isInstalled) {
-- this.gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
-- OPENH264_PLUGIN_ID,
-- prefs.get(OPENH264_PREF_VERSION, null));
-- }
-+ this.gmpPath = prefs.get(OPENH264_PREF_PATH, null);
- if (this.gmpPath && wrapper.isActive) {
-- this._log.info("onPrefVersionChanged() - registering gmp directory " + this.gmpPath);
-+ this._log.info("onPrefPathChanged() - adding gmp directory " + this.gmpPath);
- gmpService.addPluginDirectory(this.gmpPath);
- }
- AddonManagerPrivate.callAddonListeners("onInstalled", wrapper);
diff --git a/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk2drawing.c b/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk2drawing.c
new file mode 100644
index 00000000000..f2df4479511
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk2drawing.c
@@ -0,0 +1,22 @@
+$NetBSD: patch-mozilla_widget_gtk_gtk2drawing.c,v 1.3 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/widget/gtk/gtk2drawing.c.orig 2015-09-02 09:27:33.000000000 +0000
++++ mozilla/widget/gtk/gtk2drawing.c
+@@ -831,7 +831,7 @@ moz_gtk_get_focus_outline_size(gint* foc
+ return MOZ_GTK_SUCCESS;
+ }
+
+-gint
++static gint
+ moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
+ gint* focus_width, gint* focus_pad)
+ {
+@@ -928,7 +928,7 @@ moz_gtk_splitter_get_metrics(gint orient
+ return MOZ_GTK_SUCCESS;
+ }
+
+-gint
++static gint
+ moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border)
+ {
+ static const GtkBorder default_inner_border = { 1, 1, 1, 1 };
diff --git a/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk3drawing.c b/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk3drawing.c
index d57b720b48c..42b3fabec6c 100644
--- a/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk3drawing.c
+++ b/www/seamonkey/patches/patch-mozilla_widget_gtk_gtk3drawing.c
@@ -1,69 +1,833 @@
-$NetBSD: patch-mozilla_widget_gtk_gtk3drawing.c,v 1.2 2015/02/15 02:11:03 ryoon Exp $
+$NetBSD: patch-mozilla_widget_gtk_gtk3drawing.c,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/widget/gtk/gtk3drawing.c.orig 2015-02-05 04:38:47.000000000 +0000
+--- mozilla/widget/gtk/gtk3drawing.c.orig 2015-09-02 09:27:33.000000000 +0000
+++ mozilla/widget/gtk/gtk3drawing.c
-@@ -64,6 +64,7 @@ static GtkWidget* gScrolledWindowWidget;
-
+@@ -65,6 +65,7 @@ static GtkWidget* gScrolledWindowWidget;
static style_prop_t style_prop_func;
static gboolean have_arrow_scaling;
-+static gboolean checkbox_check_state;
+ static gboolean checkbox_check_state;
++static gboolean notebook_has_tab_gap;
static gboolean is_initialized;
#define ARROW_UP 0
-@@ -71,6 +72,10 @@ static gboolean is_initialized;
- #define ARROW_RIGHT G_PI_2
- #define ARROW_LEFT (G_PI+G_PI_2)
+@@ -725,6 +726,14 @@ moz_gtk_init()
+ else
+ checkbox_check_state = GTK_STATE_FLAG_ACTIVE;
-+#if !GTK_CHECK_VERSION(3,14,0)
-+#define GTK_STATE_FLAG_CHECKED (1 << 11)
-+#endif
++ if(!gtk_check_version(3, 12, 0)) {
++ ensure_tab_widget();
++ gtk_widget_style_get(gTabWidget, "has-tab-gap", &notebook_has_tab_gap, NULL);
++ }
++ else {
++ notebook_has_tab_gap = TRUE;
++ }
+
- static GtkStateFlags
- GetStateFlagsFromGtkWidgetState(GtkWidgetState* state)
- {
-@@ -714,6 +719,11 @@ moz_gtk_init()
- is_initialized = TRUE;
- have_arrow_scaling = (gtk_major_version > 2 ||
- (gtk_major_version == 2 && gtk_minor_version >= 12));
-+ if (gtk_major_version > 3 ||
-+ (gtk_major_version == 3 && gtk_minor_version >= 14))
-+ checkbox_check_state = GTK_STATE_FLAG_CHECKED;
-+ else
-+ checkbox_check_state = GTK_STATE_FLAG_ACTIVE;
-
/* Add style property to GtkEntry.
* Adding the style property to the normal GtkEntry class means that it
-@@ -1004,10 +1014,10 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec
- gtk_widget_set_sensitive(w, !state->disabled);
- gtk_widget_set_direction(w, direction);
+ * will work without issues inside GtkComboBox and for Spinbuttons. */
+@@ -762,37 +771,17 @@ moz_gtk_radio_get_metrics(gint* indicato
+ gint
+ moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width)
+ {
+- gboolean interior_focus;
+- gint focus_width = 0;
++ GtkBorder border;
++ GtkBorder padding;
++ GtkStyleContext *style;
+
+ ensure_entry_widget();
+- gtk_widget_style_get(gEntryWidget,
+- "interior-focus", &interior_focus,
+- "focus-line-width", &focus_width,
+- NULL);
+- if (interior_focus) {
+- GtkBorder border;
+- GtkStyleContext *style = gtk_widget_get_style_context(gEntryWidget);
+- gtk_style_context_get_border(style, 0, &border);
+- *focus_h_width = border.left + focus_width;
+- *focus_v_width = border.top + focus_width;
+- } else {
+- *focus_h_width = focus_width;
+- *focus_v_width = focus_width;
+- }
+- return MOZ_GTK_SUCCESS;
+-}
+-
+-gint
+-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
+- gint* focus_width, gint* focus_pad)
+-{
+- gtk_widget_style_get (widget,
+- "interior-focus", interior_focus,
+- "focus-line-width", focus_width,
+- "focus-padding", focus_pad,
+- NULL);
++ style = gtk_widget_get_style_context(gEntryWidget);
+
++ gtk_style_context_get_border(style, 0, &border);
++ gtk_style_context_get_padding(style, 0, &padding);
++ *focus_h_width = border.left + padding.left;
++ *focus_v_width = border.top + padding.top;
+ return MOZ_GTK_SUCCESS;
+ }
+
+@@ -880,24 +869,6 @@ moz_gtk_splitter_get_metrics(gint orient
+ return MOZ_GTK_SUCCESS;
+ }
+
+-gint
+-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border)
+-{
+- static const GtkBorder default_inner_border = { 1, 1, 1, 1 };
+- GtkBorder *tmp_border;
+-
+- gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL);
+-
+- if (tmp_border) {
+- *inner_border = *tmp_border;
+- gtk_border_free(tmp_border);
+- }
+- else
+- *inner_border = default_inner_border;
+-
+- return MOZ_GTK_SUCCESS;
+-}
+-
+ static gint
+ moz_gtk_button_paint(cairo_t *cr, GdkRectangle* rect,
+ GtkWidgetState* state,
+@@ -908,19 +879,8 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec
+ GtkStyleContext* style = gtk_widget_get_style_context(widget);
+ gint x = rect->x, y=rect->y, width=rect->width, height=rect->height;
+
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+- moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad);
+ gtk_widget_set_direction(widget, direction);
+-
+- if (!interior_focus && state->focused) {
+- x += focus_width + focus_pad;
+- y += focus_width + focus_pad;
+- width -= 2 * (focus_width + focus_pad);
+- height -= 2 * (focus_width + focus_pad);
+- }
+-
++
+ gtk_style_context_save(style);
+ gtk_style_context_set_state(style, state_flags);
+
+@@ -953,20 +913,12 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec
+ }
+
+ if (state->focused) {
+- if (interior_focus) {
+- GtkBorder border;
+- gtk_style_context_get_border(style, state_flags, &border);
+- x += border.left + focus_pad;
+- y += border.top + focus_pad;
+- width -= 2 * (border.left + focus_pad);
+- height -= 2 * (border.top + focus_pad);
+- } else {
+- x -= focus_width + focus_pad;
+- y -= focus_width + focus_pad;
+- width += 2 * (focus_width + focus_pad);
+- height += 2 * (focus_width + focus_pad);
+- }
+-
++ GtkBorder border;
++ gtk_style_context_get_border(style, state_flags, &border);
++ x += border.left;
++ y += border.top;
++ width -= (border.left + border.right);
++ height -= (border.top + border.bottom);
+ gtk_render_focus(style, cr, x, y, width, height);
+ }
+ gtk_style_context_restore(style);
+@@ -1056,33 +1008,23 @@ calculate_button_inner_rect(GtkWidget* b
+ GtkTextDirection direction,
+ gboolean ignore_focus)
+ {
+- GtkBorder inner_border;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+ GtkStyleContext* style;
+ GtkBorder border;
++ GtkBorder padding = {0, 0, 0, 0};
+
+ style = gtk_widget_get_style_context(button);
+
+ /* This mirrors gtkbutton's child positioning */
+- moz_gtk_button_get_inner_border(button, &inner_border);
+- moz_gtk_widget_get_focus(button, &interior_focus,
+- &focus_width, &focus_pad);
+-
+- if (ignore_focus)
+- focus_width = focus_pad = 0;
+-
+ gtk_style_context_get_border(style, 0, &border);
++ if (!ignore_focus)
++ gtk_style_context_get_padding(style, 0, &padding);
+
+- inner_rect->x = rect->x + border.left + focus_width + focus_pad;
+- inner_rect->x += direction == GTK_TEXT_DIR_LTR ?
+- inner_border.left : inner_border.right;
+- inner_rect->y = rect->y + inner_border.top + border.top +
+- focus_width + focus_pad;
+- inner_rect->width = MAX(1, rect->width - inner_border.left -
+- inner_border.right - (border.left + focus_pad + focus_width) * 2);
+- inner_rect->height = MAX(1, rect->height - inner_border.top -
+- inner_border.bottom - (border.top + focus_pad + focus_width) * 2);
++ inner_rect->x = rect->x + border.left + padding.left;
++ inner_rect->y = rect->y + padding.top + border.top;
++ inner_rect->width = MAX(1, rect->width - padding.left -
++ padding.right - border.left * 2);
++ inner_rect->height = MAX(1, rect->height - padding.top -
++ padding.bottom - border.top * 2);
+
+ return MOZ_GTK_SUCCESS;
+ }
+@@ -1230,6 +1172,7 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi
+ GtkStyleContext* style;
+ GtkScrollbar *scrollbar;
+ GtkAdjustment *adj;
++ GtkBorder margin;
+
+ ensure_scrollbar_widget();
+
+@@ -1239,15 +1182,20 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi
+ scrollbar = GTK_SCROLLBAR(gVertScrollbarWidget);
+
+ gtk_widget_set_direction(GTK_WIDGET(scrollbar), direction);
+-
++
+ style = gtk_widget_get_style_context(GTK_WIDGET(scrollbar));
gtk_style_context_save(style);
--
+-
+
+ gtk_style_context_add_class(style, GTK_STYLE_CLASS_SLIDER);
+ gtk_style_context_set_state(style, state_flags);
+
+- gtk_render_slider(style, cr, rect->x, rect->y,
+- rect->width, rect->height,
++ gtk_style_context_get_margin (style, state_flags, &margin);
++
++ gtk_render_slider(style, cr,
++ rect->x + margin.left,
++ rect->y + margin.top,
++ rect->width - margin.left - margin.right,
++ rect->height - margin.top - margin.bottom,
+ (widget == MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL) ?
+ GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
+
+@@ -1451,19 +1399,12 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
+ {
+ gint x = rect->x, y = rect->y, width = rect->width, height = rect->height;
+ GtkStyleContext* style;
+- gboolean interior_focus;
+- gint focus_width;
+ int draw_focus_outline_only = state->depressed; // NS_THEME_FOCUS_OUTLINE
+
+ gtk_widget_set_direction(widget, direction);
+
+ style = gtk_widget_get_style_context(widget);
+
+- gtk_widget_style_get(widget,
+- "interior-focus", &interior_focus,
+- "focus-line-width", &focus_width,
+- NULL);
+-
+ if (draw_focus_outline_only) {
+ // Inflate the given 'rect' with the focus outline size.
+ gint h, v;
+@@ -1495,14 +1436,6 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
+ /* This will get us the lit borders that focused textboxes enjoy on
+ * some themes. */
+ gtk_style_context_set_state(style, GTK_STATE_FLAG_FOCUSED);
+- if (!interior_focus) {
+- /* Indent the border a little bit if we have exterior focus
+- (this is what GTK does to draw native entries) */
+- x += focus_width;
+- y += focus_width;
+- width -= 2 * focus_width;
+- height -= 2 * focus_width;
+- }
+ }
+
+ if (state->disabled) {
+@@ -1514,11 +1447,6 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
+ }
+ gtk_render_frame(style, cr, x, y, width, height);
+
+- if (state->focused && !state->disabled) {
+- if (!interior_focus) {
+- gtk_render_focus(style, cr, rect->x, rect->y, rect->width, rect->height);
+- }
+- }
+ gtk_style_context_restore(style);
+
+ return MOZ_GTK_SUCCESS;
+@@ -1823,8 +1751,6 @@ moz_gtk_container_paint(cairo_t *cr, Gdk
+ GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
+ GtkStyleContext* style;
+ GtkWidget *widget;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+
if (isradio) {
- gtk_style_context_add_class(style, GTK_STYLE_CLASS_RADIO);
-- gtk_style_context_set_state(style, selected ? GTK_STATE_FLAG_ACTIVE :
-+ gtk_style_context_set_state(style, selected ? checkbox_check_state :
- GTK_STATE_FLAG_NORMAL);
- gtk_render_option(style, cr, x, y, width, height);
- if (state->focused) {
-@@ -1025,7 +1035,7 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec
- gtk_style_context_set_state(style, GTK_STATE_FLAG_INCONSISTENT);
- gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(gCheckboxWidget), TRUE);
- } else if (selected) {
-- gtk_style_context_set_state(style, GTK_STATE_FLAG_ACTIVE);
-+ gtk_style_context_set_state(style, checkbox_check_state);
+ ensure_radiobutton_widget();
+@@ -1837,7 +1763,6 @@ moz_gtk_container_paint(cairo_t *cr, Gdk
+
+ style = gtk_widget_get_style_context(widget);
+ gtk_style_context_save(style);
+- moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad);
+ gtk_style_context_set_state(style, state_flags);
+
+ /* this is for drawing a prelight box */
+@@ -1846,10 +1771,6 @@ moz_gtk_container_paint(cairo_t *cr, Gdk
+ rect->x, rect->y, rect->width, rect->height);
+ }
+
+- if (state->focused && !interior_focus) {
+- gtk_render_focus(style, cr,
+- rect->x, rect->y, rect->width, rect->height);
+- }
+ gtk_style_context_restore(style);
+
+ return MOZ_GTK_SUCCESS;
+@@ -1862,7 +1783,6 @@ moz_gtk_toggle_label_paint(cairo_t *cr,
+ {
+ GtkStyleContext *style;
+ GtkWidget *widget;
+- gboolean interior_focus;
+
+ if (!state->focused)
+ return MOZ_GTK_SUCCESS;
+@@ -1883,10 +1803,6 @@ moz_gtk_toggle_label_paint(cairo_t *cr,
+ }
+ gtk_widget_set_direction(widget, direction);
+
+- gtk_widget_style_get(widget, "interior-focus", &interior_focus, NULL);
+- if (!interior_focus)
+- return MOZ_GTK_SUCCESS;
+-
+ gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
+ gtk_render_focus(style, cr,
+ rect->x, rect->y, rect->width, rect->height);
+@@ -2105,6 +2021,9 @@ moz_gtk_get_tab_thickness(void)
+ GtkStyleContext * style;
+
+ ensure_tab_widget();
++ if (!notebook_has_tab_gap)
++ return 0; /* tabs do not overdraw the tabpanel border with "no gap" style */
++
+ style = gtk_widget_get_style_context(gTabWidget);
+ gtk_style_context_add_class(style, GTK_STYLE_CLASS_NOTEBOOK);
+ gtk_style_context_get_border(style, 0, &border);
+@@ -2150,7 +2069,7 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectan
+ ensure_tab_widget();
+ gtk_widget_set_direction(gTabWidget, direction);
+
+- style = gtk_widget_get_style_context(gTabWidget);
++ style = gtk_widget_get_style_context(gTabWidget);
+ gtk_style_context_save(style);
+ moz_gtk_tab_prepare_style_context(style, flags);
+
+@@ -2167,143 +2086,155 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectan
+
+ focusRect = backRect = tabRect;
+
+- if ((flags & MOZ_GTK_TAB_SELECTED) == 0) {
+- /* Only draw the tab */
+- gtk_render_extension(style, cr,
+- tabRect.x, tabRect.y, tabRect.width, tabRect.height,
+- (flags & MOZ_GTK_TAB_BOTTOM) ?
+- GTK_POS_TOP : GTK_POS_BOTTOM );
+- } else {
+- /* Draw the tab and the gap
+- * We want the gap to be positioned exactly on the tabpanel top
+- * border; since tabbox.css may set a negative margin so that the tab
+- * frame rect already overlaps the tabpanel frame rect, we need to take
+- * that into account when drawing. To that effect, nsNativeThemeGTK
+- * passes us this negative margin (bmargin in the graphic below) in the
+- * lowest bits of |flags|. We use it to set gap_voffset, the distance
+- * between the top of the gap and the bottom of the tab (resp. the
+- * bottom of the gap and the top of the tab when we draw a bottom tab),
+- * while ensuring that the gap always touches the border of the tab,
+- * i.e. 0 <= gap_voffset <= gap_height, to avoid surprinsing results
+- * with big negative or positive margins.
+- * Here is a graphical explanation in the case of top tabs:
+- * ___________________________
+- * / \
+- * | T A B |
+- * ----------|. . . . . . . . . . . . . . .|----- top of tabpanel
+- * : ^ bmargin : ^
+- * : | (-negative margin, : |
+- * bottom : v passed in flags) : | gap_height
+- * of -> :.............................: | (the size of the
+- * the tab . part of the gap . | tabpanel top border)
+- * . outside of the tab . v
+- * ----------------------------------------------
+- *
+- * To draw the gap, we use gtk_paint_box_gap(), see comment in
+- * moz_gtk_tabpanels_paint(). This box_gap is made 3 * gap_height tall,
+- * which should suffice to ensure that the only visible border is the
+- * pierced one. If the tab is in the middle, we make the box_gap begin
+- * a bit to the left of the tab and end a bit to the right, adjusting
+- * the gap position so it still is under the tab, because we want the
+- * rendering of a gap in the middle of a tabpanel. This is the role of
+- * the gints gap_{l,r}_offset. On the contrary, if the tab is the
+- * first, we align the start border of the box_gap with the start
+- * border of the tab (left if LTR, right if RTL), by setting the
+- * appropriate offset to 0.*/
+- gint gap_loffset, gap_roffset, gap_voffset, gap_height;
+-
+- /* Get height needed by the gap */
+- gap_height = moz_gtk_get_tab_thickness();
+-
+- /* Extract gap_voffset from the first bits of flags */
+- gap_voffset = flags & MOZ_GTK_TAB_MARGIN_MASK;
+- if (gap_voffset > gap_height)
+- gap_voffset = gap_height;
+-
+- /* Set gap_{l,r}_offset to appropriate values */
+- gap_loffset = gap_roffset = 20; /* should be enough */
+- if (flags & MOZ_GTK_TAB_FIRST) {
+- if (direction == GTK_TEXT_DIR_RTL)
+- gap_roffset = initial_gap;
+- else
+- gap_loffset = initial_gap;
+- }
+-
+- if (flags & MOZ_GTK_TAB_BOTTOM) {
+- /* Draw the tab on bottom */
+- focusRect.y += gap_voffset;
+- focusRect.height -= gap_voffset;
+-
++ if (notebook_has_tab_gap) {
++ if ((flags & MOZ_GTK_TAB_SELECTED) == 0) {
++ /* Only draw the tab */
+ gtk_render_extension(style, cr,
+- tabRect.x, tabRect.y + gap_voffset, tabRect.width,
+- tabRect.height - gap_voffset, GTK_POS_TOP);
+-
+- gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
+-
+- backRect.y += (gap_voffset - gap_height);
+- backRect.height = gap_height;
+-
+- /* Draw the gap; erase with background color before painting in
+- * case theme does not */
+- gtk_render_background(style, cr, backRect.x, backRect.y,
+- backRect.width, backRect.height);
+- cairo_save(cr);
+- cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
+- cairo_clip(cr);
+-
+- gtk_render_frame_gap(style, cr,
+- tabRect.x - gap_loffset,
+- tabRect.y + gap_voffset - 3 * gap_height,
+- tabRect.width + gap_loffset + gap_roffset,
+- 3 * gap_height, GTK_POS_BOTTOM,
+- gap_loffset, gap_loffset + tabRect.width);
+- cairo_restore(cr);
++ tabRect.x, tabRect.y, tabRect.width, tabRect.height,
++ (flags & MOZ_GTK_TAB_BOTTOM) ?
++ GTK_POS_TOP : GTK_POS_BOTTOM );
} else {
- gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(gCheckboxWidget), FALSE);
+- /* Draw the tab on top */
+- focusRect.height -= gap_voffset;
+- gtk_render_extension(style, cr,
+- tabRect.x, tabRect.y, tabRect.width,
+- tabRect.height - gap_voffset, GTK_POS_BOTTOM);
+-
+- gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
+-
+- backRect.y += (tabRect.height - gap_voffset);
+- backRect.height = gap_height;
++ /* Draw the tab and the gap
++ * We want the gap to be positioned exactly on the tabpanel top
++ * border; since tabbox.css may set a negative margin so that the tab
++ * frame rect already overlaps the tabpanel frame rect, we need to take
++ * that into account when drawing. To that effect, nsNativeThemeGTK
++ * passes us this negative margin (bmargin in the graphic below) in the
++ * lowest bits of |flags|. We use it to set gap_voffset, the distance
++ * between the top of the gap and the bottom of the tab (resp. the
++ * bottom of the gap and the top of the tab when we draw a bottom tab),
++ * while ensuring that the gap always touches the border of the tab,
++ * i.e. 0 <= gap_voffset <= gap_height, to avoid surprinsing results
++ * with big negative or positive margins.
++ * Here is a graphical explanation in the case of top tabs:
++ * ___________________________
++ * / \
++ * | T A B |
++ * ----------|. . . . . . . . . . . . . . .|----- top of tabpanel
++ * : ^ bmargin : ^
++ * : | (-negative margin, : |
++ * bottom : v passed in flags) : | gap_height
++ * of -> :.............................: | (the size of the
++ * the tab . part of the gap . | tabpanel top border)
++ * . outside of the tab . v
++ * ----------------------------------------------
++ *
++ * To draw the gap, we use gtk_paint_box_gap(), see comment in
++ * moz_gtk_tabpanels_paint(). This box_gap is made 3 * gap_height tall,
++ * which should suffice to ensure that the only visible border is the
++ * pierced one. If the tab is in the middle, we make the box_gap begin
++ * a bit to the left of the tab and end a bit to the right, adjusting
++ * the gap position so it still is under the tab, because we want the
++ * rendering of a gap in the middle of a tabpanel. This is the role of
++ * the gints gap_{l,r}_offset. On the contrary, if the tab is the
++ * first, we align the start border of the box_gap with the start
++ * border of the tab (left if LTR, right if RTL), by setting the
++ * appropriate offset to 0.*/
++ gint gap_loffset, gap_roffset, gap_voffset, gap_height;
++
++ /* Get height needed by the gap */
++ gap_height = moz_gtk_get_tab_thickness();
++
++ /* Extract gap_voffset from the first bits of flags */
++ gap_voffset = flags & MOZ_GTK_TAB_MARGIN_MASK;
++ if (gap_voffset > gap_height)
++ gap_voffset = gap_height;
++
++ /* Set gap_{l,r}_offset to appropriate values */
++ gap_loffset = gap_roffset = 20; /* should be enough */
++ if (flags & MOZ_GTK_TAB_FIRST) {
++ if (direction == GTK_TEXT_DIR_RTL)
++ gap_roffset = initial_gap;
++ else
++ gap_loffset = initial_gap;
++ }
+
+- /* Draw the gap; erase with background color before painting in
+- * case theme does not */
+- gtk_render_background(style, cr, backRect.x, backRect.y,
+- backRect.width, backRect.height);
+-
+- cairo_save(cr);
+- cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
+- cairo_clip(cr);
+-
+- gtk_render_frame_gap(style, cr,
+- tabRect.x - gap_loffset,
+- tabRect.y + tabRect.height - gap_voffset,
+- tabRect.width + gap_loffset + gap_roffset,
+- 3 * gap_height, GTK_POS_TOP,
+- gap_loffset, gap_loffset + tabRect.width);
+- cairo_restore(cr);
++ if (flags & MOZ_GTK_TAB_BOTTOM) {
++ /* Draw the tab on bottom */
++ focusRect.y += gap_voffset;
++ focusRect.height -= gap_voffset;
++
++ gtk_render_extension(style, cr,
++ tabRect.x, tabRect.y + gap_voffset, tabRect.width,
++ tabRect.height - gap_voffset, GTK_POS_TOP);
++
++ gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
++
++ backRect.y += (gap_voffset - gap_height);
++ backRect.height = gap_height;
++
++ /* Draw the gap; erase with background color before painting in
++ * case theme does not */
++ gtk_render_background(style, cr, backRect.x, backRect.y,
++ backRect.width, backRect.height);
++ cairo_save(cr);
++ cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
++ cairo_clip(cr);
++
++ gtk_render_frame_gap(style, cr,
++ tabRect.x - gap_loffset,
++ tabRect.y + gap_voffset - 3 * gap_height,
++ tabRect.width + gap_loffset + gap_roffset,
++ 3 * gap_height, GTK_POS_BOTTOM,
++ gap_loffset, gap_loffset + tabRect.width);
++ cairo_restore(cr);
++ } else {
++ /* Draw the tab on top */
++ focusRect.height -= gap_voffset;
++ gtk_render_extension(style, cr,
++ tabRect.x, tabRect.y, tabRect.width,
++ tabRect.height - gap_voffset, GTK_POS_BOTTOM);
++
++ gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
++
++ backRect.y += (tabRect.height - gap_voffset);
++ backRect.height = gap_height;
++
++ /* Draw the gap; erase with background color before painting in
++ * case theme does not */
++ gtk_render_background(style, cr, backRect.x, backRect.y,
++ backRect.width, backRect.height);
++
++ cairo_save(cr);
++ cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
++ cairo_clip(cr);
++
++ gtk_render_frame_gap(style, cr,
++ tabRect.x - gap_loffset,
++ tabRect.y + tabRect.height - gap_voffset,
++ tabRect.width + gap_loffset + gap_roffset,
++ 3 * gap_height, GTK_POS_TOP,
++ gap_loffset, gap_loffset + tabRect.width);
++ cairo_restore(cr);
++ }
}
-@@ -2588,8 +2598,9 @@ moz_gtk_check_menu_item_paint(cairo_t *c
- gtk_style_context_add_class(style, GTK_STYLE_CLASS_CHECK);
++ } else {
++ gtk_render_background(style, cr, tabRect.x, tabRect.y, tabRect.width, tabRect.height);
++ gtk_render_frame(style, cr, tabRect.x, tabRect.y, tabRect.width, tabRect.height);
}
-- if (checked)
-- state_flags |= GTK_STATE_FLAG_ACTIVE;
-+ if (checked) {
-+ state_flags |= checkbox_check_state;
-+ }
-
- gtk_style_context_set_state(style, state_flags);
- gtk_style_context_get_padding(style, state_flags, &padding);
++ gtk_style_context_restore(style);
++
+ if (state->focused) {
+ /* Paint the focus ring */
+- GtkBorder border;
+- gtk_style_context_get_border(style, GetStateFlagsFromGtkWidgetState(state), &border);
++ GtkBorder padding;
++
++ gtk_style_context_save(style);
++ moz_gtk_tab_prepare_style_context(style, flags);
+
+- focusRect.x += border.left;
+- focusRect.width -= (border.left + border.right);
+- focusRect.y += border.top;
+- focusRect.height -= (border.top + border.bottom);
++ gtk_style_context_get_padding(style, GetStateFlagsFromGtkWidgetState(state), &padding);
++
++ focusRect.x += padding.left;
++ focusRect.width -= (padding.left + padding.right);
++ focusRect.y += padding.top;
++ focusRect.height -= (padding.top + padding.bottom);
+
+ gtk_render_focus(style, cr,
+ focusRect.x, focusRect.y, focusRect.width, focusRect.height);
++
++ gtk_style_context_restore(style);
+ }
+
+- gtk_style_context_restore(style);
+
+ return MOZ_GTK_SUCCESS;
+ }
+@@ -2684,26 +2615,18 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ switch (widget) {
+ case MOZ_GTK_BUTTON:
+ {
+- GtkBorder inner_border;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+ ensure_button_widget();
++ style = gtk_widget_get_style_context(gButtonWidget);
++
+ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget));
+
+ /* Don't add this padding in HTML, otherwise the buttons will
+ become too big and stuff the layout. */
+ if (!inhtml) {
+- moz_gtk_widget_get_focus(gButtonWidget, &interior_focus, &focus_width, &focus_pad);
+- moz_gtk_button_get_inner_border(gButtonWidget, &inner_border);
+- *left += focus_width + focus_pad + inner_border.left;
+- *right += focus_width + focus_pad + inner_border.right;
+- *top += focus_width + focus_pad + inner_border.top;
+- *bottom += focus_width + focus_pad + inner_border.bottom;
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
+ }
+
+- moz_gtk_add_style_border(gtk_widget_get_style_context(gButtonWidget),
+- left, top, right, bottom);
++ moz_gtk_add_style_border(style, left, top, right, bottom);
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_ENTRY:
+@@ -2711,7 +2634,13 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ ensure_entry_widget();
+ style = gtk_widget_get_style_context(gEntryWidget);
+ moz_gtk_add_style_border(style, left, top, right, bottom);
+- moz_gtk_add_style_padding(style, left, top, right, bottom);
++
++ /* Use the document padding in HTML
++ and GTK style padding in XUL. */
++ if (!inhtml) {
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
++ }
++
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_TREEVIEW:
+@@ -2731,23 +2660,15 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ * assigned.
+ * That is why the following code is the same as for MOZ_GTK_BUTTON.
+ * */
+-
+- GtkBorder inner_border;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
++ GtkStyleContext *style;
+
+ ensure_tree_header_cell_widget();
+ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gTreeHeaderCellWidget));
+
+- moz_gtk_widget_get_focus(gTreeHeaderCellWidget, &interior_focus, &focus_width, &focus_pad);
+- moz_gtk_button_get_inner_border(gTreeHeaderCellWidget, &inner_border);
+- *left += focus_width + focus_pad + inner_border.left;
+- *right += focus_width + focus_pad + inner_border.right;
+- *top += focus_width + focus_pad + inner_border.top;
+- *bottom += focus_width + focus_pad + inner_border.bottom;
+-
+- moz_gtk_add_style_border(gtk_widget_get_style_context(gTreeHeaderCellWidget),
+- left, top, right, bottom);
++ style = gtk_widget_get_style_context(gTreeHeaderCellWidget);
++
++ moz_gtk_add_style_border(style, left, top, right, bottom);
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_TREE_HEADER_SORTARROW:
+@@ -2767,29 +2688,23 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ /* We need to account for the arrow on the dropdown, so text
+ * doesn't come too close to the arrow, or in some cases spill
+ * into the arrow. */
+- gboolean ignored_interior_focus, wide_separators;
+- gint focus_width, focus_pad, separator_width;
++ gboolean wide_separators;
++ gint separator_width;
+ GtkRequisition arrow_req;
+ GtkBorder border;
+
+ ensure_combo_box_widgets();
+
+- *left = gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget));
++ *left = *top = *right = *bottom =
++ gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget));
++
++ style = gtk_widget_get_style_context(gComboBoxButtonWidget);
+
+ if (!inhtml) {
+- moz_gtk_widget_get_focus(gComboBoxButtonWidget,
+- &ignored_interior_focus,
+- &focus_width, &focus_pad);
+- *left += focus_width + focus_pad;
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
+ }
+
+- style = gtk_widget_get_style_context(gComboBoxButtonWidget);
+- gtk_style_context_get_border(style, 0, &border);
+-
+- *top = *left + border.top;
+- *left += border.left;
+-
+- *right = *left; *bottom = *top;
++ moz_gtk_add_style_border(style, left, top, right, bottom);
+
+ /* If there is no separator, don't try to count its width. */
+ separator_width = 0;
+@@ -2841,60 +2756,23 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ ensure_frame_widget();
+ w = gFrameWidget;
+ break;
+- case MOZ_GTK_CHECKBUTTON_LABEL:
+- case MOZ_GTK_RADIOBUTTON_LABEL:
+- {
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+- /* If the focus is interior, then the label has a border of
+- (focus_width + focus_pad). */
+- if (widget == MOZ_GTK_CHECKBUTTON_LABEL) {
+- ensure_checkbox_widget();
+- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus,
+- &focus_width, &focus_pad);
+- }
+- else {
+- ensure_radiobutton_widget();
+- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus,
+- &focus_width, &focus_pad);
+- }
+-
+- if (interior_focus)
+- *left = *top = *right = *bottom = (focus_width + focus_pad);
+-
+- return MOZ_GTK_SUCCESS;
+- }
+-
+ case MOZ_GTK_CHECKBUTTON_CONTAINER:
+ case MOZ_GTK_RADIOBUTTON_CONTAINER:
+ {
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+- /* If the focus is _not_ interior, then the container has a border
+- of (focus_width + focus_pad). */
+ if (widget == MOZ_GTK_CHECKBUTTON_CONTAINER) {
+ ensure_checkbox_widget();
+- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus,
+- &focus_width, &focus_pad);
+ w = gCheckboxWidget;
+ } else {
+ ensure_radiobutton_widget();
+- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus,
+- &focus_width, &focus_pad);
+ w = gRadiobuttonWidget;
+ }
++ style = gtk_widget_get_style_context(w);
+
+ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w));
+-
+- if (!interior_focus) {
+- *left += (focus_width + focus_pad);
+- *right += (focus_width + focus_pad);
+- *top += (focus_width + focus_pad);
+- *bottom += (focus_width + focus_pad);
+- }
+-
++ moz_gtk_add_style_border(style,
++ left, top, right, bottom);
++ moz_gtk_add_style_padding(style,
++ left, top, right, bottom);
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_MENUPOPUP:
+@@ -2921,6 +2799,8 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ return MOZ_GTK_SUCCESS;
+ }
+ /* These widgets have no borders, since they are not containers. */
++ case MOZ_GTK_CHECKBUTTON_LABEL:
++ case MOZ_GTK_RADIOBUTTON_LABEL:
+ case MOZ_GTK_SPLITTER_HORIZONTAL:
+ case MOZ_GTK_SPLITTER_VERTICAL:
+ case MOZ_GTK_CHECKBUTTON:
+@@ -2975,11 +2855,7 @@ moz_gtk_get_tab_border(gint* left, gint*
+ gtk_style_context_save(style);
+ moz_gtk_tab_prepare_style_context(style, flags);
+
+- // TODO add_style_border() should be replaced
+- // with focus-line-width and focus-padding
+- // see Bug 877605
+ *left = *top = *right = *bottom = 0;
+- moz_gtk_add_style_border(style, left, top, right, bottom);
+ moz_gtk_add_style_padding(style, left, top, right, bottom);
+
+ gtk_widget_style_get (gTabWidget, "tab-curvature", &tab_curvature, NULL);
+@@ -2990,16 +2866,9 @@ moz_gtk_get_tab_border(gint* left, gint*
+ int initial_gap;
+ gtk_widget_style_get (gTabWidget, "initial-gap", &initial_gap, NULL);
+ if (direction == GTK_TEXT_DIR_RTL)
+- *right += initial_gap;
++ *right += initial_gap;
+ else
+- *left += initial_gap;
+- }
+-
+- // Top tabs have no bottom border, bottom tabs have no top border
+- if (flags & MOZ_GTK_TAB_BOTTOM) {
+- *top = 0;
+- } else {
+- *bottom = 0;
++ *left += initial_gap;
+ }
+
+ gtk_style_context_restore(style);
diff --git a/www/seamonkey/patches/patch-mozilla_widget_gtk_gtkdrawing.h b/www/seamonkey/patches/patch-mozilla_widget_gtk_gtkdrawing.h
new file mode 100644
index 00000000000..e03e8aa93d6
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_widget_gtk_gtkdrawing.h
@@ -0,0 +1,41 @@
+$NetBSD: patch-mozilla_widget_gtk_gtkdrawing.h,v 1.3 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/widget/gtk/gtkdrawing.h.orig 2015-09-02 09:27:33.000000000 +0000
++++ mozilla/widget/gtk/gtkdrawing.h
+@@ -293,16 +293,6 @@ moz_gtk_checkbox_get_metrics(gint* indic
+ gint
+ moz_gtk_radio_get_metrics(gint* indicator_size, gint* indicator_spacing);
+
+-/**
+- * Get the inner-border value for a GtkButton widget (button or tree header)
+- * widget: [IN] the widget to get the border value for
+- * inner_border: [OUT] the inner border
+- *
+- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise
+- */
+-gint
+-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border);
+-
+ /** Get the extra size for the focus ring for outline:auto.
+ * widget: [IN] the widget to get the focus metrics for
+ * focus_h_width: [OUT] the horizontal width
+@@ -313,19 +303,6 @@ moz_gtk_button_get_inner_border(GtkWidge
+ gint
+ moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width);
+
+-/** Get the focus metrics for a treeheadercell, button, checkbox, or radio button.
+- * widget: [IN] the widget to get the focus metrics for
+- * interior_focus: [OUT] whether the focus is drawn around the
+- * label (TRUE) or around the whole container (FALSE)
+- * focus_width: [OUT] the width of the focus line
+- * focus_pad: [OUT] the padding between the focus line and children
+- *
+- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise
+- */
+-gint
+-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
+- gint* focus_width, gint* focus_pad);
+-
+ /** Get the horizontal padding for the menuitem widget or checkmenuitem widget.
+ * horizontal_padding: [OUT] The left and right padding of the menuitem or checkmenuitem
+ *
diff --git a/www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.cpp b/www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.cpp
deleted file mode 100644
index 5aa39dcaf99..00000000000
--- a/www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-$NetBSD: patch-mozilla_widget_gtk_nsLookAndFeel.cpp,v 1.1 2015/02/15 02:11:03 ryoon Exp $
-
---- mozilla/widget/gtk/nsLookAndFeel.cpp.orig 2015-02-05 04:38:47.000000000 +0000
-+++ mozilla/widget/gtk/nsLookAndFeel.cpp
-@@ -38,7 +38,6 @@ nsLookAndFeel::nsLookAndFeel()
- mStyle(nullptr),
- #else
- mBackgroundStyle(nullptr),
-- mViewStyle(nullptr),
- mButtonStyle(nullptr),
- #endif
- mDefaultFontCached(false), mButtonFontCached(false),
-@@ -53,7 +52,6 @@ nsLookAndFeel::~nsLookAndFeel()
- g_object_unref(mStyle);
- #else
- g_object_unref(mBackgroundStyle);
-- g_object_unref(mViewStyle);
- g_object_unref(mButtonStyle);
- #endif
- }
-@@ -114,13 +112,19 @@ nsLookAndFeel::NativeGetColor(ColorID aI
- case eColorID_IMESelectedRawTextBackground:
- case eColorID_IMESelectedConvertedTextBackground:
- case eColorID__moz_dragtargetzone:
-- aColor = sMozWindowSelectedBackground;
-+ case eColorID__moz_cellhighlight:
-+ case eColorID__moz_html_cellhighlight:
-+ case eColorID_highlight: // preference selected item,
-+ aColor = sTextSelectedBackground;
- break;
- case eColorID_WidgetSelectForeground:
- case eColorID_TextSelectForeground:
- case eColorID_IMESelectedRawTextForeground:
- case eColorID_IMESelectedConvertedTextForeground:
-- aColor = sMozWindowSelectedText;
-+ case eColorID_highlighttext:
-+ case eColorID__moz_cellhighlighttext:
-+ case eColorID__moz_html_cellhighlighttext:
-+ aColor = sTextSelectedText;
- break;
- #endif
- case eColorID_Widget3DHighlight:
-@@ -238,19 +242,6 @@ nsLookAndFeel::NativeGetColor(ColorID aI
- GTK_STATE_FLAG_INSENSITIVE, &gdk_color);
- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color);
- break;
-- case eColorID_highlight: // preference selected item,
-- // background of selected item
-- gtk_style_context_get_background_color(mViewStyle,
-- GTK_STATE_FLAG_SELECTED,
-- &gdk_color);
-- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color);
-- break;
-- case eColorID_highlighttext:
-- // text of selected item
-- gtk_style_context_get_color(mViewStyle,
-- GTK_STATE_FLAG_SELECTED, &gdk_color);
-- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color);
-- break;
- case eColorID_inactivecaption:
- // inactive window caption
- gtk_style_context_get_background_color(mBackgroundStyle,
-@@ -284,10 +275,17 @@ nsLookAndFeel::NativeGetColor(ColorID aI
- #endif
- break;
-
-+ case eColorID_threedlightshadow:
-+ // 3-D highlighted inner edge color
-+ // always same as background in GTK code
- case eColorID_threedface:
- case eColorID_buttonface:
- // 3-D face color
-- aColor = sFrameBackground;
-+#if (MOZ_WIDGET_GTK == 3)
-+ aColor = sMozWindowBackground;
-+#else
-+ aColor = sButtonBackground;
-+#endif
- break;
-
- case eColorID_buttontext:
-@@ -302,11 +300,6 @@ nsLookAndFeel::NativeGetColor(ColorID aI
- aColor = sFrameOuterLightBorder;
- break;
-
-- case eColorID_threedlightshadow:
-- // 3-D highlighted inner edge color
-- aColor = sFrameBackground; // always same as background in GTK code
-- break;
--
- case eColorID_buttonshadow:
- // 3-D shadow edge color
- case eColorID_threedshadow:
-@@ -391,19 +384,6 @@ nsLookAndFeel::NativeGetColor(ColorID aI
- case eColorID__moz_buttonhovertext:
- aColor = sButtonHoverText;
- break;
-- case eColorID__moz_cellhighlight:
-- case eColorID__moz_html_cellhighlight:
-- gtk_style_context_get_background_color(mViewStyle,
-- GTK_STATE_FLAG_SELECTED,
-- &gdk_color);
-- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color);
-- break;
-- case eColorID__moz_cellhighlighttext:
-- case eColorID__moz_html_cellhighlighttext:
-- gtk_style_context_get_color(mViewStyle,
-- GTK_STATE_FLAG_SELECTED, &gdk_color);
-- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color);
-- break;
- #endif
- case eColorID__moz_menuhover:
- aColor = sMenuHover;
-@@ -965,7 +945,7 @@ nsLookAndFeel::Init()
- GtkStyleContext *style;
-
- // Gtk manages a screen's CSS in the settings object so we
-- // ask Gtk to create it explicitly. Otherwise we may end up
-+ // ask Gtk to create it explicitly. Otherwise we may end up
- // with wrong color theme, see Bug 972382
- (void)gtk_settings_get_for_screen(gdk_screen_get_default());
-
-@@ -975,9 +955,6 @@ nsLookAndFeel::Init()
- mBackgroundStyle = create_context(path);
- gtk_style_context_add_class(mBackgroundStyle, GTK_STYLE_CLASS_BACKGROUND);
-
-- mViewStyle = create_context(path);
-- gtk_style_context_add_class(mViewStyle, GTK_STYLE_CLASS_VIEW);
--
- mButtonStyle = create_context(path);
- gtk_style_context_add_class(mButtonStyle, GTK_STYLE_CLASS_BUTTON);
-
-@@ -990,11 +967,24 @@ nsLookAndFeel::Init()
- g_object_unref(style);
-
- // Text colors
-- gtk_style_context_get_background_color(mViewStyle, GTK_STATE_FLAG_NORMAL, &color);
-+ style = create_context(path);
-+ gtk_style_context_add_class(style, GTK_STYLE_CLASS_VIEW);
-+ gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color);
- sMozFieldBackground = GDK_RGBA_TO_NS_RGBA(color);
-- gtk_style_context_get_color(mViewStyle, GTK_STATE_FLAG_NORMAL, &color);
-+ gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color);
- sMozFieldText = GDK_RGBA_TO_NS_RGBA(color);
-
-+ // Selected text and background
-+ gtk_style_context_get_background_color(style,
-+ static_cast<GtkStateFlags>(GTK_STATE_FLAG_FOCUSED|GTK_STATE_FLAG_SELECTED),
-+ &color);
-+ sTextSelectedBackground = GDK_RGBA_TO_NS_RGBA(color);
-+ gtk_style_context_get_color(style,
-+ static_cast<GtkStateFlags>(GTK_STATE_FLAG_FOCUSED|GTK_STATE_FLAG_SELECTED),
-+ &color);
-+ sTextSelectedText = GDK_RGBA_TO_NS_RGBA(color);
-+ g_object_unref(style);
-+
- // Window colors
- style = create_context(path);
- gtk_style_context_save(style);
-@@ -1003,12 +993,6 @@ nsLookAndFeel::Init()
- sMozWindowBackground = GDK_RGBA_TO_NS_RGBA(color);
- gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color);
- sMozWindowText = GDK_RGBA_TO_NS_RGBA(color);
--
-- // Selected text and background
-- gtk_style_context_get_background_color(style, GTK_STATE_FLAG_SELECTED, &color);
-- sMozWindowSelectedBackground = GDK_RGBA_TO_NS_RGBA(color);
-- gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color);
-- sMozWindowSelectedText = GDK_RGBA_TO_NS_RGBA(color);
- gtk_style_context_restore(style);
-
- // tooltip foreground and background
-@@ -1141,7 +1125,7 @@ nsLookAndFeel::Init()
-
- style = gtk_widget_get_style(button);
- if (style) {
-- sFrameBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]);
-+ sButtonBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]);
- sFrameOuterLightBorder =
- GDK_COLOR_TO_NS_RGB(style->light[GTK_STATE_NORMAL]);
- sFrameInnerDarkBorder =
-@@ -1189,12 +1173,9 @@ nsLookAndFeel::Init()
- GtkWidget *frame = gtk_frame_new(nullptr);
- gtk_container_add(GTK_CONTAINER(parent), frame);
-
-- style = gtk_widget_get_style_context(frame);
-- gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color);
-- sFrameBackground = GDK_RGBA_TO_NS_RGBA(color);
--
- // TODO GTK3 - update sFrameOuterLightBorder
- // for GTK_BORDER_STYLE_INSET/OUTSET/GROVE/RIDGE border styles (Bug 978172).
-+ style = gtk_widget_get_style_context(frame);
- gtk_style_context_get_border_color(style, GTK_STATE_FLAG_NORMAL, &color);
- sFrameInnerDarkBorder = sFrameOuterLightBorder = GDK_RGBA_TO_NS_RGBA(color);
- #endif
-@@ -1257,11 +1238,9 @@ nsLookAndFeel::RefreshImpl()
- mStyle = nullptr;
- #else
- g_object_unref(mBackgroundStyle);
-- g_object_unref(mViewStyle);
- g_object_unref(mButtonStyle);
-
- mBackgroundStyle = nullptr;
-- mViewStyle = nullptr;
- mButtonStyle = nullptr;
- #endif
-
diff --git a/www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.h b/www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.h
deleted file mode 100644
index f1a6cbaeefa..00000000000
--- a/www/seamonkey/patches/patch-mozilla_widget_gtk_nsLookAndFeel.h
+++ /dev/null
@@ -1,32 +0,0 @@
-$NetBSD: patch-mozilla_widget_gtk_nsLookAndFeel.h,v 1.1 2015/02/15 02:11:03 ryoon Exp $
-
---- mozilla/widget/gtk/nsLookAndFeel.h.orig 2015-02-05 04:38:47.000000000 +0000
-+++ mozilla/widget/gtk/nsLookAndFeel.h
-@@ -35,7 +35,6 @@ protected:
- struct _GtkStyle *mStyle;
- #else
- struct _GtkStyleContext *mBackgroundStyle;
-- struct _GtkStyleContext *mViewStyle;
- struct _GtkStyleContext *mButtonStyle;
- #endif
-
-@@ -64,7 +63,7 @@ protected:
- nscolor sMenuHoverText;
- nscolor sButtonText;
- nscolor sButtonHoverText;
-- nscolor sFrameBackground;
-+ nscolor sButtonBackground;
- nscolor sFrameOuterLightBorder;
- nscolor sFrameInnerDarkBorder;
- nscolor sOddCellBackground;
-@@ -75,8 +74,8 @@ protected:
- nscolor sMozFieldBackground;
- nscolor sMozWindowText;
- nscolor sMozWindowBackground;
-- nscolor sMozWindowSelectedText;
-- nscolor sMozWindowSelectedBackground;
-+ nscolor sTextSelectedText;
-+ nscolor sTextSelectedBackground;
- nscolor sMozScrollbar;
- char16_t sInvisibleCharacter;
- float sCaretRatio;
diff --git a/www/seamonkey/patches/patch-mozilla_widget_gtk_nsNativeThemeGTK.cpp b/www/seamonkey/patches/patch-mozilla_widget_gtk_nsNativeThemeGTK.cpp
new file mode 100644
index 00000000000..0e58d924585
--- /dev/null
+++ b/www/seamonkey/patches/patch-mozilla_widget_gtk_nsNativeThemeGTK.cpp
@@ -0,0 +1,30 @@
+$NetBSD: patch-mozilla_widget_gtk_nsNativeThemeGTK.cpp,v 1.3 2015/09/21 05:03:45 ryoon Exp $
+
+--- mozilla/widget/gtk/nsNativeThemeGTK.cpp.orig 2015-09-02 09:27:33.000000000 +0000
++++ mozilla/widget/gtk/nsNativeThemeGTK.cpp
+@@ -761,6 +761,8 @@ nsNativeThemeGTK::GetExtraSizeForWidget(
+ return false;
+
+ gint gap_height = moz_gtk_get_tab_thickness();
++ if (!gap_height)
++ return false;
+
+ int32_t extra = gap_height - GetTabMarginPixels(aFrame);
+ if (extra <= 0)
+@@ -1528,9 +1530,15 @@ nsNativeThemeGTK::GetWidgetTransparency(
+ case NS_THEME_MENUPOPUP:
+ case NS_THEME_WINDOW:
+ case NS_THEME_DIALOG:
+- // Tooltips use gtk_paint_flat_box().
++ return eOpaque;
++ // Tooltips use gtk_paint_flat_box() on Gtk2
++ // but are shaped on Gtk3
+ case NS_THEME_TOOLTIP:
++#if (MOZ_WIDGET_GTK == 2)
+ return eOpaque;
++#else
++ return eTransparent;
++#endif
+ }
+
+ return eUnknownTransparency;
diff --git a/www/seamonkey/patches/patch-mozilla_xpcom_base_nsStackWalk.cpp b/www/seamonkey/patches/patch-mozilla_xpcom_base_nsStackWalk.cpp
index d94ba0cbeb2..0b1e839f632 100644
--- a/www/seamonkey/patches/patch-mozilla_xpcom_base_nsStackWalk.cpp
+++ b/www/seamonkey/patches/patch-mozilla_xpcom_base_nsStackWalk.cpp
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_xpcom_base_nsStackWalk.cpp,v 1.5 2015/02/15 02:11:03 ryoon Exp $
+$NetBSD: patch-mozilla_xpcom_base_nsStackWalk.cpp,v 1.6 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/xpcom/base/nsStackWalk.cpp.orig 2015-02-05 04:38:49.000000000 +0000
+--- mozilla/xpcom/base/nsStackWalk.cpp.orig 2015-09-02 09:27:33.000000000 +0000
+++ mozilla/xpcom/base/nsStackWalk.cpp
@@ -34,12 +34,12 @@ static CriticalAddress gCriticalAddress;
#define _GNU_SOURCE
@@ -27,7 +27,7 @@ $NetBSD: patch-mozilla_xpcom_base_nsStackWalk.cpp,v 1.5 2015/02/15 02:11:03 ryoo
#include <pthread.h>
#include <CoreServices/CoreServices.h>
-@@ -832,7 +832,7 @@ NS_DescribeCodeAddress(void* aPC, nsCode
+@@ -830,7 +830,7 @@ NS_DescribeCodeAddress(void* aPC, nsCode
}
// i386 or PPC Linux stackwalking code
@@ -36,7 +36,7 @@ $NetBSD: patch-mozilla_xpcom_base_nsStackWalk.cpp,v 1.5 2015/02/15 02:11:03 ryoo
#include <stdlib.h>
#include <string.h>
-@@ -903,7 +903,7 @@ FramePointerStackWalk(NS_WalkStackCallba
+@@ -901,7 +901,7 @@ FramePointerStackWalk(NS_WalkStackCallba
(long(next) & 3)) {
break;
}
@@ -45,12 +45,12 @@ $NetBSD: patch-mozilla_xpcom_base_nsStackWalk.cpp,v 1.5 2015/02/15 02:11:03 ryoo
// ppc mac or powerpc64 linux
void* pc = *(bp + 2);
bp += 3;
-@@ -933,7 +933,7 @@ FramePointerStackWalk(NS_WalkStackCallba
+@@ -931,7 +931,7 @@ FramePointerStackWalk(NS_WalkStackCallba
}
#define X86_OR_PPC (defined(__i386) || defined(PPC) || defined(__ppc__))
-#if X86_OR_PPC && (NSSTACKWALK_SUPPORTS_MACOSX || NSSTACKWALK_SUPPORTS_LINUX) // i386 or PPC Linux or Mac stackwalking code
+#if X86_OR_PPC && (NSSTACKWALK_SUPPORTS_DARWIN || NSSTACKWALK_SUPPORTS_LINUX) // i386 or PPC Linux or Mac stackwalking code
- EXPORT_XPCOM_API(nsresult)
+ XPCOM_API(nsresult)
NS_StackWalk(NS_WalkStackCallback aCallback, uint32_t aSkipFrames,
diff --git a/www/seamonkey/patches/patch-mozilla_xpcom_build_XPCOMInit.cpp b/www/seamonkey/patches/patch-mozilla_xpcom_build_XPCOMInit.cpp
index 16c21d8ab69..2d1acaeebe2 100644
--- a/www/seamonkey/patches/patch-mozilla_xpcom_build_XPCOMInit.cpp
+++ b/www/seamonkey/patches/patch-mozilla_xpcom_build_XPCOMInit.cpp
@@ -1,8 +1,8 @@
-$NetBSD: patch-mozilla_xpcom_build_XPCOMInit.cpp,v 1.1 2015/02/15 02:11:03 ryoon Exp $
+$NetBSD: patch-mozilla_xpcom_build_XPCOMInit.cpp,v 1.2 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/xpcom/build/XPCOMInit.cpp.orig 2015-02-05 04:38:49.000000000 +0000
+--- mozilla/xpcom/build/XPCOMInit.cpp.orig 2015-09-02 09:27:33.000000000 +0000
+++ mozilla/xpcom/build/XPCOMInit.cpp
-@@ -139,7 +139,9 @@ extern nsresult nsStringInputStreamConst
+@@ -141,7 +141,9 @@ extern nsresult nsStringInputStreamConst
#include "mozilla/VisualEventTracer.h"
#endif
@@ -10,9 +10,9 @@ $NetBSD: patch-mozilla_xpcom_build_XPCOMInit.cpp,v 1.1 2015/02/15 02:11:03 ryoon
#include "ogg/ogg.h"
+#endif
#if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
- #include "vpx_mem/vpx_mem.h"
- #endif
-@@ -652,11 +654,13 @@ NS_InitXPCOM2(nsIServiceManager** aResul
+ #if defined(HAVE_STDINT_H)
+ // mozilla-config.h defines HAVE_STDINT_H, and then it's defined *again* in
+@@ -669,11 +671,13 @@ NS_InitXPCOM2(nsIServiceManager** aResul
// this oddness.
mozilla::SetICUMemoryFunctions();
diff --git a/www/seamonkey/patches/patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build b/www/seamonkey/patches/patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build
index 0daad5fd5d2..7930c1544bf 100644
--- a/www/seamonkey/patches/patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build
+++ b/www/seamonkey/patches/patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build
@@ -1,6 +1,6 @@
-$NetBSD: patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build,v 1.2 2015/03/17 19:50:42 ryoon Exp $
+$NetBSD: patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build,v 1.3 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/xpcom/reflect/xptcall/md/unix/moz.build.orig 2015-03-09 05:34:28.000000000 +0000
+--- mozilla/xpcom/reflect/xptcall/md/unix/moz.build.orig 2015-09-02 09:27:34.000000000 +0000
+++ mozilla/xpcom/reflect/xptcall/md/unix/moz.build
@@ -9,7 +9,7 @@ if CONFIG['OS_ARCH'] == 'Darwin':
'xptcinvoke_darwin.cpp',
@@ -11,20 +11,12 @@ $NetBSD: patch-mozilla_xpcom_reflect_xptcall_md_unix_moz.build,v 1.2 2015/03/17
SOURCES += [
'xptcinvoke_asm_ppc_rhapsody.s',
]
-@@ -19,14 +19,14 @@ if CONFIG['OS_ARCH'] == 'Darwin':
- if '86' in CONFIG['OS_TEST'] and CONFIG['OS_TEST'] != 'x86_64':
- DEFINES['MOZ_NEED_LEADING_UNDERSCORE'] = True
-
--if CONFIG['OS_ARCH'] in ('NetBSD', 'GNU'):
-+if CONFIG['OS_ARCH'] in ('OpenBSD', 'GNU'):
- if CONFIG['CPU_ARCH'] == 'x86':
- SOURCES += [
- 'xptcinvoke_gcc_x86_unix.cpp',
+@@ -26,7 +26,7 @@ if CONFIG['OS_ARCH'] == 'GNU':
'xptcstubs_gcc_x86_unix.cpp'
]
--if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'OpenBSD') or \
-+if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD', 'DragonFly') or \
+-if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD', 'OpenBSD') or \
++if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'DragonFly') or \
CONFIG['OS_ARCH'].startswith('GNU_'):
if CONFIG['OS_TEST'] == 'x86_64':
SOURCES += [
diff --git a/www/seamonkey/patches/patch-rc b/www/seamonkey/patches/patch-rc
index a739e427870..aaa39d389f3 100644
--- a/www/seamonkey/patches/patch-rc
+++ b/www/seamonkey/patches/patch-rc
@@ -1,13 +1,15 @@
-$NetBSD: patch-rc,v 1.8 2013/01/07 21:55:30 ryoon Exp $
+$NetBSD: patch-rc,v 1.9 2015/09/21 05:03:45 ryoon Exp $
---- mozilla/browser/branding/unofficial/locales/en-US/brand.dtd.orig 2012-11-18 10:19:30.000000000 +0000
+--- mozilla/browser/branding/unofficial/locales/en-US/brand.dtd.orig 2015-09-02 09:27:26.000000000 +0000
+++ mozilla/browser/branding/unofficial/locales/en-US/brand.dtd
-@@ -2,7 +2,7 @@
+@@ -2,8 +2,8 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-<!ENTITY brandShorterName "Mozilla Developer Preview">
-<!ENTITY brandShortName "Mozilla Developer Preview">
-<!ENTITY brandFullName "Mozilla Developer Preview">
++<!ENTITY brandShorterName "Browser">
+<!ENTITY brandShortName "Browser">
+<!ENTITY brandFullName "Browser">
<!ENTITY vendorShortName "mozilla.org">