mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Merge inbound to m-c
This commit is contained in:
commit
bc76ab2b98
@ -658,30 +658,15 @@ HyperTextAccessible::FindOffset(int32_t aOffset, nsDirection aDirection,
|
||||
// Turn the resulting node and offset into a hyperTextOffset
|
||||
// If finalAccessible is nullptr, then DOMPointToHypertextOffset() searched
|
||||
// through the hypertext children without finding the node/offset position.
|
||||
int32_t hyperTextOffset;
|
||||
int32_t hyperTextOffset = 0;
|
||||
Accessible* finalAccessible =
|
||||
DOMPointToHypertextOffset(pos.mResultContent, pos.mContentOffset,
|
||||
&hyperTextOffset, aDirection == eDirNext);
|
||||
|
||||
if (!finalAccessible && aDirection == eDirPrevious) {
|
||||
// If we reached the end during search, this means we didn't find the DOM point
|
||||
// and we're actually at the start of the paragraph
|
||||
hyperTextOffset = 0;
|
||||
}
|
||||
else if (aAmount == eSelectBeginLine) {
|
||||
Accessible* firstChild = mChildren.SafeElementAt(0, nullptr);
|
||||
// For line selection with needsStart, set start of line exactly to line break
|
||||
if (pos.mContentOffset == 0 && firstChild &&
|
||||
firstChild->Role() == roles::STATICTEXT &&
|
||||
static_cast<int32_t>(nsAccUtils::TextLength(firstChild)) == hyperTextOffset) {
|
||||
// XXX Bullet hack -- we should remove this once list bullets use anonymous content
|
||||
hyperTextOffset = 0;
|
||||
}
|
||||
if (aWordMovementType != eStartWord && aAmount != eSelectBeginLine &&
|
||||
hyperTextOffset > 0) {
|
||||
-- hyperTextOffset;
|
||||
}
|
||||
}
|
||||
// If we reached the end during search, this means we didn't find the DOM point
|
||||
// and we're actually at the start of the paragraph
|
||||
if (!finalAccessible && aDirection == eDirPrevious)
|
||||
return 0;
|
||||
|
||||
return hyperTextOffset;
|
||||
}
|
||||
|
@ -432,9 +432,9 @@ protected:
|
||||
* Return an offset corresponding to the given direction and selection amount
|
||||
* relative the given offset. A helper used to find word or line boundaries.
|
||||
*/
|
||||
int32_t FindOffset(int32_t aOffset, nsDirection aDirection,
|
||||
nsSelectionAmount aAmount,
|
||||
EWordMovementType aWordMovementType = eDefaultBehavior);
|
||||
virtual int32_t FindOffset(int32_t aOffset, nsDirection aDirection,
|
||||
nsSelectionAmount aAmount,
|
||||
EWordMovementType aWordMovementType = eDefaultBehavior);
|
||||
|
||||
/**
|
||||
* Provides information for substring that is defined by the given start
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "HTMLListAccessible.h"
|
||||
|
||||
#include "DocAccessible.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "Role.h"
|
||||
#include "States.h"
|
||||
|
||||
@ -97,6 +98,33 @@ HTMLLIAccessible::GetBounds(int32_t* aX, int32_t* aY,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
int32_t
|
||||
HTMLLIAccessible::FindOffset(int32_t aOffset, nsDirection aDirection,
|
||||
nsSelectionAmount aAmount,
|
||||
EWordMovementType aWordMovementType)
|
||||
{
|
||||
Accessible* child = GetChildAtOffset(aOffset);
|
||||
if (!child)
|
||||
return -1;
|
||||
|
||||
if (child != mBullet) {
|
||||
if (aDirection == eDirPrevious &&
|
||||
(aAmount == eSelectBeginLine || aAmount == eSelectLine))
|
||||
return 0;
|
||||
|
||||
return HyperTextAccessible::FindOffset(aOffset, aDirection,
|
||||
aAmount, aWordMovementType);
|
||||
}
|
||||
|
||||
if (aDirection == eDirPrevious)
|
||||
return 0;
|
||||
|
||||
if (aAmount == eSelectEndLine || aAmount == eSelectLine)
|
||||
return CharacterCount();
|
||||
|
||||
return nsAccUtils::TextLength(child);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// HTMLLIAccessible: public
|
||||
|
||||
|
@ -55,7 +55,12 @@ public:
|
||||
virtual a11y::role NativeRole();
|
||||
virtual uint64_t NativeState();
|
||||
|
||||
// nsHTMLLIAccessible
|
||||
// HyperTextAccessible
|
||||
virtual int32_t FindOffset(int32_t aOffset, nsDirection aDirection,
|
||||
nsSelectionAmount aAmount,
|
||||
EWordMovementType aWordMovementType) MOZ_OVERRIDE;
|
||||
|
||||
// HTMLLIAccessible
|
||||
void UpdateBullet(bool aHasBullet);
|
||||
|
||||
protected:
|
||||
|
@ -79,7 +79,8 @@ const COORDTYPE_PARENT_RELATIVE = nsIAccessibleCoordinateType.COORDTYPE_PARENT_R
|
||||
|
||||
const kEmbedChar = String.fromCharCode(0xfffc);
|
||||
|
||||
const kDiscBulletText = String.fromCharCode(0x2022) + " ";
|
||||
const kDiscBulletChar = String.fromCharCode(0x2022);
|
||||
const kDiscBulletText = kDiscBulletChar + " ";
|
||||
const kCircleBulletText = String.fromCharCode(0x25e6) + " ";
|
||||
const kSquareBulletText = String.fromCharCode(0x25aa) + " ";
|
||||
|
||||
|
@ -108,6 +108,12 @@
|
||||
BOUNDARY_LINE_START,
|
||||
[ [ 0, 3, "foo\n", 0, 4 ], [ 4, 4, "", 4, 4 ] ]);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// list items
|
||||
|
||||
testTextAtOffset([ "li1" ], BOUNDARY_LINE_START,
|
||||
[ [ 0, 5, kDiscBulletChar + "Item", 0, 5 ] ]);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
@ -166,5 +172,9 @@ two words
|
||||
|
||||
<iframe id="ht_2" src="data:text/html,<div contentEditable='true'>foo<br/></div>"></iframe>
|
||||
<iframe id="ht_3" src="data:text/html,<div contentEditable='true'>foo<br/><br/></div>"></iframe>
|
||||
|
||||
<ul>
|
||||
<li id="li1">Item</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -731,6 +731,7 @@ var gPluginHandler = {
|
||||
let principal = contentWindow.document.nodePrincipal;
|
||||
Services.perms.addFromPrincipal(principal, aPluginInfo.permissionString,
|
||||
permission, expireType, expireTime);
|
||||
aPluginInfo.pluginPermissionType = expireType;
|
||||
}
|
||||
|
||||
// Manually activate the plugins that would have been automatically
|
||||
|
@ -105,6 +105,7 @@ run-if = crashreporter
|
||||
[browser_CTP_data_urls.js]
|
||||
[browser_CTP_drag_drop.js]
|
||||
[browser_CTP_hideBar.js]
|
||||
[browser_CTP_multi_allow.js]
|
||||
[browser_CTP_nonplugins.js]
|
||||
[browser_CTP_resize.js]
|
||||
[browser_URLBarSetURI.js]
|
||||
|
138
browser/base/content/test/general/browser_CTP_multi_allow.js
Normal file
138
browser/base/content/test/general/browser_CTP_multi_allow.js
Normal file
@ -0,0 +1,138 @@
|
||||
var rootDir = getRootDirectory(gTestPath);
|
||||
const gTestRoot = rootDir;
|
||||
const gHttpTestRoot = rootDir.replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
|
||||
|
||||
var gTestBrowser = null;
|
||||
var gNextTest = null;
|
||||
var gPluginHost = Components.classes["@mozilla.org/plugin/host;1"].getService(Components.interfaces.nsIPluginHost);
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
registerCleanupFunction(function() {
|
||||
clearAllPluginPermissions();
|
||||
Services.prefs.clearUserPref("extensions.blocklist.suppressUI");
|
||||
});
|
||||
Services.prefs.setBoolPref("extensions.blocklist.suppressUI", true);
|
||||
|
||||
var newTab = gBrowser.addTab();
|
||||
gBrowser.selectedTab = newTab;
|
||||
gTestBrowser = gBrowser.selectedBrowser;
|
||||
gTestBrowser.addEventListener("load", pageLoad, true);
|
||||
|
||||
Services.prefs.setBoolPref("plugins.click_to_play", true);
|
||||
setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY);
|
||||
setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY, "Second Test Plug-in");
|
||||
|
||||
prepareTest(test1a, gHttpTestRoot + "plugin_two_types.html");
|
||||
}
|
||||
|
||||
function finishTest() {
|
||||
clearAllPluginPermissions();
|
||||
gTestBrowser.removeEventListener("load", pageLoad, true);
|
||||
gBrowser.removeCurrentTab();
|
||||
window.focus();
|
||||
finish();
|
||||
}
|
||||
|
||||
function pageLoad() {
|
||||
// The plugin events are async dispatched and can come after the load event
|
||||
// This just allows the events to fire before we then go on to test the states
|
||||
executeSoon(gNextTest);
|
||||
}
|
||||
|
||||
function prepareTest(nextTest, url) {
|
||||
gNextTest = nextTest;
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
|
||||
// Due to layout being async, "PluginBindAttached" may trigger later.
|
||||
// This wraps a function to force a layout flush, thus triggering it,
|
||||
// and schedules the function execution so they're definitely executed
|
||||
// afterwards.
|
||||
function runAfterPluginBindingAttached(func) {
|
||||
return function() {
|
||||
let doc = gTestBrowser.contentDocument;
|
||||
let elems = doc.getElementsByTagName('embed');
|
||||
if (elems.length < 1) {
|
||||
elems = doc.getElementsByTagName('object');
|
||||
}
|
||||
elems[0].clientTop;
|
||||
executeSoon(func);
|
||||
};
|
||||
}
|
||||
|
||||
// Test that the click-to-play doorhanger for multiple plugins shows the correct
|
||||
// state when re-opening without reloads or navigation.
|
||||
|
||||
function test1a() {
|
||||
let doc = gTestBrowser.contentDocument;
|
||||
let plugin = doc.getElementById("test");
|
||||
let objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
ok(!objLoadingContent.activated, "Test1a, Plugin should not be activated");
|
||||
|
||||
let notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
ok(notification, "Test 1a, Should have a click-to-play notification");
|
||||
notification.reshow();
|
||||
|
||||
is(notification.options.centerActions.size, 2,
|
||||
"Test 1a, Should have two types of plugin in the notification");
|
||||
|
||||
let pluginItem = null;
|
||||
for (let item of PopupNotifications.panel.firstChild.childNodes) {
|
||||
is(item.value, "block", "Test 1a, all plugins should start out blocked");
|
||||
if (item.action.pluginName == "Test") {
|
||||
pluginItem = item;
|
||||
}
|
||||
}
|
||||
|
||||
// Choose "Allow now" for the test plugin
|
||||
pluginItem.value = "allownow";
|
||||
PopupNotifications.panel.firstChild._primaryButton.click();
|
||||
|
||||
waitForCondition(() => objLoadingContent.activated, test1b,
|
||||
"Test 1a, Waited too long for plugin to activate");
|
||||
}
|
||||
|
||||
function test1b() {
|
||||
let notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
ok(notification, "Test 1b, Should have a click-to-play notification");
|
||||
notification.reshow();
|
||||
|
||||
let pluginItem = null;
|
||||
for (let item of PopupNotifications.panel.firstChild.childNodes) {
|
||||
if (item.action.pluginName == "Test") {
|
||||
is(item.value, "allownow", "Test 1b, Test plugin should now be set to 'Allow now'");
|
||||
} else {
|
||||
is(item.value, "block", "Test 1b, Second Test plugin should still be blocked");
|
||||
pluginItem = item;
|
||||
}
|
||||
}
|
||||
|
||||
// Choose "Allow and remember" for the Second Test plugin
|
||||
pluginItem.value = "allowalways";
|
||||
PopupNotifications.panel.firstChild._primaryButton.click();
|
||||
|
||||
let doc = gTestBrowser.contentDocument;
|
||||
let plugin = doc.getElementById("secondtestA");
|
||||
let objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
waitForCondition(() => objLoadingContent.activated, test1c,
|
||||
"Test 1b, Waited too long for plugin to activate");
|
||||
}
|
||||
|
||||
function test1c() {
|
||||
let notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
ok(notification, "Test 1c, Should have a click-to-play notification");
|
||||
notification.reshow();
|
||||
|
||||
for (let item of PopupNotifications.panel.firstChild.childNodes) {
|
||||
if (item.action.pluginName == "Test") {
|
||||
is(item.value, "allownow", "Test 1c, Test plugin should be set to 'Allow now'");
|
||||
} else {
|
||||
is(item.value, "allowalways", "Test 1c, Second Test plugin should be set to 'Allow always'");
|
||||
}
|
||||
}
|
||||
|
||||
finishTest();
|
||||
}
|
@ -555,12 +555,24 @@ function resizeAndCheckWidths(first, second, third, checks, cb) {
|
||||
resizeWindowToChatAreaWidth(width, function(sizedOk) {
|
||||
checkPopup();
|
||||
ok(sizedOk, count+": window resized correctly");
|
||||
if (sizedOk) {
|
||||
let numVisible = [first, second, third].filter(function(item) !item.collapsed).length;
|
||||
is(numVisible, numExpectedVisible, count + ": " + "correct number of chats visible");
|
||||
function collapsedObserver(r, m) {
|
||||
if ([first, second, third].filter(function(item) !item.collapsed).length == numExpectedVisible) {
|
||||
if (m) {
|
||||
m.disconnect();
|
||||
}
|
||||
ok(true, count + ": " + "correct number of chats visible");
|
||||
info(">> Check " + count);
|
||||
resizeAndCheckWidths(first, second, third, checks, cb);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (!collapsedObserver()) {
|
||||
let m = new MutationObserver(collapsedObserver);
|
||||
m.observe(first, {attributes: true });
|
||||
m.observe(second, {attributes: true });
|
||||
m.observe(third, {attributes: true });
|
||||
}
|
||||
info(">> Check " + count);
|
||||
resizeAndCheckWidths(first, second, third, checks, cb);
|
||||
}, count);
|
||||
}
|
||||
|
||||
|
@ -14,10 +14,14 @@ function test() {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
executeSoon(function() {
|
||||
info("The second private window got loaded");
|
||||
let newTab = win.gBrowser.addTab("about:home");
|
||||
let newTab = win.gBrowser.addTab();
|
||||
win.gBrowser.selectedTab = newTab;
|
||||
let tabBrowser = win.gBrowser.getBrowserForTab(newTab);
|
||||
tabBrowser.addEventListener("load", function tabLoadListener() {
|
||||
if (win.content.location != "about:home") {
|
||||
win.content.location = "about:home";
|
||||
return;
|
||||
}
|
||||
tabBrowser.removeEventListener("load", tabLoadListener, true);
|
||||
executeSoon(function() {
|
||||
info("about:home got loaded");
|
||||
|
@ -14,6 +14,10 @@ function test() {
|
||||
executeSoon(function() {
|
||||
aWindow.gBrowser.selectedTab = aWindow.gBrowser.addTab();
|
||||
aWindow.gBrowser.selectedBrowser.addEventListener("load", function () {
|
||||
if (aWindow.content.location != testPageURL) {
|
||||
aWindow.content.location = testPageURL;
|
||||
return;
|
||||
}
|
||||
aWindow.gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true);
|
||||
|
||||
function runTest() {
|
||||
@ -36,7 +40,6 @@ function test() {
|
||||
}
|
||||
runTest();
|
||||
}, true);
|
||||
aWindow.content.location = testPageURL;
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -5,11 +5,18 @@
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
const page1 = 'http://mochi.test:8888/browser/browser/components/privatebrowsing/test/browser/' +
|
||||
'browser_privatebrowsing_localStorage_page1.html'
|
||||
|
||||
function checkLocalStorage(aWindow, aCallback) {
|
||||
executeSoon(function() {
|
||||
let tab = aWindow.gBrowser.selectedTab = aWindow.gBrowser.addTab();
|
||||
let browser = aWindow.gBrowser.selectedBrowser;
|
||||
browser.addEventListener('load', function() {
|
||||
if (browser.contentWindow.location != page1) {
|
||||
browser.loadURI(page1);
|
||||
return;
|
||||
}
|
||||
browser.removeEventListener('load', arguments.callee, true);
|
||||
let tab2 = aWindow.gBrowser.selectedTab = aWindow.gBrowser.addTab();
|
||||
browser.contentWindow.location = 'http://mochi.test:8888/browser/browser/components/privatebrowsing/test/browser/' +
|
||||
@ -20,9 +27,6 @@ function test() {
|
||||
aCallback();
|
||||
}, true);
|
||||
}, true);
|
||||
|
||||
browser.loadURI('http://mochi.test:8888/browser/browser/components/privatebrowsing/test/browser/' +
|
||||
'browser_privatebrowsing_localStorage_page1.html');
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -466,7 +466,7 @@ JAVA_GEN_DIR = _javagen
|
||||
JAVA_DIST_DIR = $(DEPTH)/$(JAVA_GEN_DIR)
|
||||
JAVA_IFACES_PKG_NAME = org/mozilla/interfaces
|
||||
|
||||
OS_INCLUDES += $(MOZ_JPEG_CFLAGS) $(MOZ_PNG_CFLAGS) $(MOZ_ZLIB_CFLAGS)
|
||||
OS_INCLUDES += $(MOZ_JPEG_CFLAGS) $(MOZ_PNG_CFLAGS) $(MOZ_ZLIB_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
|
||||
|
||||
# NSPR_CFLAGS and NSS_CFLAGS must appear ahead of OS_INCLUDES to avoid Linux
|
||||
# builds wrongly picking up system NSPR/NSS header files.
|
||||
|
2
config/external/moz.build
vendored
2
config/external/moz.build
vendored
@ -27,7 +27,7 @@ if CONFIG['MOZ_OPUS']:
|
||||
if CONFIG['MOZ_WEBM']:
|
||||
external_dirs += ['media/libnestegg']
|
||||
|
||||
if CONFIG['MOZ_VP8'] and not CONFIG['MOZ_NATIVE_LIBVPX']:
|
||||
if CONFIG['MOZ_VPX'] and not CONFIG['MOZ_NATIVE_LIBVPX']:
|
||||
external_dirs += ['media/libvpx']
|
||||
|
||||
if CONFIG['MOZ_OGG']:
|
||||
|
32
configure.in
32
configure.in
@ -3967,9 +3967,8 @@ MOZ_SCTP=
|
||||
MOZ_MEDIA_PLUGINS=
|
||||
MOZ_MEDIA_NAVIGATOR=
|
||||
MOZ_OMX_PLUGIN=
|
||||
MOZ_VP8=
|
||||
MOZ_VP8_ERROR_CONCEALMENT=
|
||||
MOZ_VP8_ENCODER=1
|
||||
MOZ_VPX=
|
||||
MOZ_VPX_ERROR_CONCEALMENT=
|
||||
MOZ_WEBSPEECH=1
|
||||
VPX_AS=
|
||||
VPX_ASFLAGS=
|
||||
@ -5114,8 +5113,8 @@ if test -n "$MOZ_WEBRTC"; then
|
||||
dnl opt/production builds (via MOZ_CRASH())
|
||||
AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
|
||||
MOZ_RAW=1
|
||||
MOZ_VP8=1
|
||||
MOZ_VP8_ERROR_CONCEALMENT=1
|
||||
MOZ_VPX=1
|
||||
MOZ_VPX_ERROR_CONCEALMENT=1
|
||||
|
||||
dnl enable once Signaling lands
|
||||
MOZ_WEBRTC_SIGNALING=1
|
||||
@ -5228,7 +5227,7 @@ MOZ_ARG_DISABLE_BOOL(webm,
|
||||
|
||||
if test -n "$MOZ_WEBM"; then
|
||||
AC_DEFINE(MOZ_WEBM)
|
||||
MOZ_VP8=1
|
||||
MOZ_VPX=1
|
||||
fi;
|
||||
|
||||
dnl ========================================================
|
||||
@ -5364,13 +5363,10 @@ MOZ_ARG_WITH_BOOL(system-libvpx,
|
||||
MOZ_LIBVPX_CFLAGS=
|
||||
MOZ_LIBVPX_LIBS=
|
||||
|
||||
if test -n "$MOZ_VP8"; then
|
||||
AC_DEFINE(MOZ_VP8)
|
||||
if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
|
||||
AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
|
||||
fi
|
||||
if test -n "$MOZ_VP8_ENCODER" ; then
|
||||
AC_DEFINE(MOZ_VP8_ENCODER)
|
||||
if test -n "$MOZ_VPX"; then
|
||||
AC_DEFINE(MOZ_VPX)
|
||||
if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then
|
||||
AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT)
|
||||
fi
|
||||
|
||||
if test -n "$MOZ_NATIVE_LIBVPX"; then
|
||||
@ -5402,7 +5398,7 @@ if test "$MOZ_WEBM" -o "$MOZ_OGG"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
|
||||
if test -n "$MOZ_VPX" -a -z "$MOZ_NATIVE_LIBVPX"; then
|
||||
|
||||
dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
|
||||
dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
|
||||
@ -5467,8 +5463,7 @@ if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
|
||||
AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
|
||||
fi
|
||||
|
||||
if test -n "$MOZ_VP8_ENCODER" -a \
|
||||
-z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
|
||||
if test -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
|
||||
dnl We prefer to get asm offsets using inline assembler, which the above
|
||||
dnl compilers can do. When we're not using one of those, we have to fall
|
||||
dnl back to obj_int_extract, which reads them from a compiled object
|
||||
@ -8620,9 +8615,8 @@ AC_SUBST(MOZ_DIRECTSHOW)
|
||||
AC_SUBST(MOZ_MEDIA_PLUGINS)
|
||||
AC_SUBST(MOZ_APPLEMEDIA)
|
||||
AC_SUBST(MOZ_OMX_PLUGIN)
|
||||
AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
|
||||
AC_SUBST(MOZ_VP8_ENCODER)
|
||||
AC_SUBST(MOZ_VP8)
|
||||
AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
|
||||
AC_SUBST(MOZ_VPX)
|
||||
AC_SUBST(MOZ_OGG)
|
||||
AC_SUBST(VPX_AS)
|
||||
AC_SUBST(VPX_ASFLAGS)
|
||||
|
@ -311,11 +311,6 @@ public:
|
||||
friend class nsAttrAndChildArray;
|
||||
|
||||
#ifdef MOZILLA_INTERNAL_API
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(push)
|
||||
// Disable annoying warning about 'this' in initializers.
|
||||
#pragma warning(disable:4355)
|
||||
#endif
|
||||
nsINode(already_AddRefed<nsINodeInfo> aNodeInfo)
|
||||
: mNodeInfo(aNodeInfo),
|
||||
mParent(nullptr),
|
||||
@ -323,15 +318,11 @@ public:
|
||||
mNextSibling(nullptr),
|
||||
mPreviousSibling(nullptr),
|
||||
mFirstChild(nullptr),
|
||||
mSubtreeRoot(this),
|
||||
mSubtreeRoot(MOZ_THIS_IN_INITIALIZER_LIST()),
|
||||
mSlots(nullptr)
|
||||
{
|
||||
SetIsDOMBinding();
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
virtual ~nsINode();
|
||||
|
@ -5,5 +5,5 @@
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
||||
|
@ -102,14 +102,6 @@ DEFINE_KEYNAME_WITH_SAME_NAME(Cancel)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Esc)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Exit)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Zoom)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Separator)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Spacebar)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Add)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Subtract)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Multiply)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Divide)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Equals)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Decimal)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(BrightnessDown)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(BrightnessUp)
|
||||
DEFINE_KEYNAME_WITH_SAME_NAME(Camera)
|
||||
|
@ -217,7 +217,7 @@ public:
|
||||
outputData, &outSamples);
|
||||
if (++i == aChannels) {
|
||||
mPosition += inSamples;
|
||||
MOZ_ASSERT(mPosition <= mDuration);
|
||||
MOZ_ASSERT(mPosition <= mDuration || mLoop);
|
||||
aFramesWritten = outSamples;
|
||||
if (inSamples == aAvailableInInputBuffer && !mLoop) {
|
||||
// If the available output space were unbounded then the input
|
||||
|
@ -36,21 +36,11 @@ nsSMILTimeValueSpec::EventListener::HandleEvent(nsIDOMEvent* aEvent)
|
||||
//----------------------------------------------------------------------
|
||||
// Implementation
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Disable "warning C4355: 'this' : used in base member initializer list".
|
||||
// We can ignore that warning because we know that mReferencedElement's
|
||||
// constructor doesn't dereference the pointer passed to it.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355)
|
||||
#endif
|
||||
nsSMILTimeValueSpec::nsSMILTimeValueSpec(nsSMILTimedElement& aOwner,
|
||||
bool aIsBegin)
|
||||
: mOwner(&aOwner),
|
||||
mIsBegin(aIsBegin),
|
||||
mReferencedElement(this)
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
mReferencedElement(MOZ_THIS_IN_INITIALIZER_LIST())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -43,19 +43,9 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
//----------------------------------------------------------------------
|
||||
// Implementation
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Disable "warning C4355: 'this' : used in base member initializer list".
|
||||
// We can ignore that warning because we know that mHrefTarget's constructor
|
||||
// doesn't dereference the pointer passed to it.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355)
|
||||
#endif
|
||||
SVGAnimationElement::SVGAnimationElement(already_AddRefed<nsINodeInfo> aNodeInfo)
|
||||
: SVGAnimationElementBase(aNodeInfo),
|
||||
mHrefTarget(this)
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
mHrefTarget(MOZ_THIS_IN_INITIALIZER_LIST())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -55,19 +55,9 @@ NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(SVGMPathElement)
|
||||
NS_INTERFACE_TABLE_TAIL_INHERITING(SVGMPathElementBase)
|
||||
|
||||
// Constructor
|
||||
#ifdef _MSC_VER
|
||||
// Disable "warning C4355: 'this' : used in base member initializer list".
|
||||
// We can ignore that warning because we know that mHrefTarget's constructor
|
||||
// doesn't dereference the pointer passed to it.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355)
|
||||
#endif
|
||||
SVGMPathElement::SVGMPathElement(already_AddRefed<nsINodeInfo> aNodeInfo)
|
||||
: SVGMPathElementBase(aNodeInfo),
|
||||
mHrefTarget(this)
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
mHrefTarget(MOZ_THIS_IN_INITIALIZER_LIST())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -71,18 +71,8 @@ NS_INTERFACE_TABLE_TAIL_INHERITING(SVGUseElementBase)
|
||||
//----------------------------------------------------------------------
|
||||
// Implementation
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Disable "warning C4355: 'this' : used in base member initializer list".
|
||||
// We can ignore that warning because we know that mSource's constructor
|
||||
// doesn't dereference the pointer passed to it.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355)
|
||||
#endif
|
||||
SVGUseElement::SVGUseElement(already_AddRefed<nsINodeInfo> aNodeInfo)
|
||||
: SVGUseElementBase(aNodeInfo), mSource(this)
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
: SVGUseElementBase(aNodeInfo), mSource(MOZ_THIS_IN_INITIALIZER_LIST())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,5 @@ include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += \
|
||||
$(MOZ_CAIRO_CFLAGS) \
|
||||
$(MOZ_PIXMAN_CFLAGS) \
|
||||
$(TK_CFLAGS) \
|
||||
$(NULL)
|
||||
|
@ -5,5 +5,4 @@
|
||||
|
||||
CXXFLAGS += \
|
||||
$(MOZ_CAIRO_CFLAGS) \
|
||||
$(MOZ_PIXMAN_CFLAGS) \
|
||||
$(NULL)
|
||||
|
@ -18,7 +18,6 @@
|
||||
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
#include "gfxImageSurface.h"
|
||||
#include "gfx2DGlue.h"
|
||||
namespace mozilla {
|
||||
namespace gfx {
|
||||
static void
|
||||
@ -28,7 +27,8 @@ DumpAsPNG(SourceSurface* aSurface)
|
||||
IntSize size = dataSource->GetSize();
|
||||
nsRefPtr<gfxImageSurface> imageSurface =
|
||||
new gfxImageSurface(dataSource->GetData(), gfxIntSize(size.width, size.height),
|
||||
dataSource->Stride(), SurfaceFormatToImageFormat(aSurface->GetFormat()));
|
||||
dataSource->Stride(),
|
||||
aSurface->GetFormat() == FORMAT_A8 ? gfxImageFormatA8 : gfxImageFormatARGB32);
|
||||
imageSurface->PrintAsDataURL();
|
||||
}
|
||||
} // namespace gfx
|
||||
@ -559,7 +559,7 @@ FilterNodeSoftware::Draw(DrawTarget* aDrawTarget,
|
||||
const DrawOptions &aOptions)
|
||||
{
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("<pre>\nRendering...\n");
|
||||
printf("<style>section{margin:10px;}</style><pre>\nRendering filter %s...\n", GetName());
|
||||
#endif
|
||||
|
||||
Rect renderRect = aSourceRect;
|
||||
@ -568,9 +568,13 @@ FilterNodeSoftware::Draw(DrawTarget* aDrawTarget,
|
||||
int32_t(renderRect.width), int32_t(renderRect.height));
|
||||
IntRect outputRect = renderIntRect.Intersect(GetOutputRectInRect(renderIntRect));
|
||||
|
||||
// Render.
|
||||
RefPtr<DataSourceSurface> result = GetOutput(outputRect);
|
||||
RefPtr<DataSourceSurface> result;
|
||||
if (!outputRect.IsEmpty()) {
|
||||
result = GetOutput(outputRect);
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
// Null results are allowed and treated as transparent. Don't draw anything.
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("output returned null\n");
|
||||
printf("</pre>\n");
|
||||
@ -578,35 +582,23 @@ FilterNodeSoftware::Draw(DrawTarget* aDrawTarget,
|
||||
return;
|
||||
}
|
||||
|
||||
// Add transparency around outputRect in renderIntRect.
|
||||
result = GetDataSurfaceInRect(result, outputRect, renderIntRect, EDGE_MODE_NONE);
|
||||
if (!result) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("GetDataSurfaceInRect for output returned null\n");
|
||||
printf("</pre>\n");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("output:\n");
|
||||
printf("output from %s:\n", GetName());
|
||||
printf("<img src='"); DumpAsPNG(result); printf("'>\n");
|
||||
printf("</pre>\n");
|
||||
#endif
|
||||
|
||||
// Draw.
|
||||
aDrawTarget->DrawSurface(result, Rect(aDestPoint, aSourceRect.Size()),
|
||||
aSourceRect - renderIntRect.TopLeft(),
|
||||
Point sourceToDestOffset = aDestPoint - aSourceRect.TopLeft();
|
||||
Rect renderedSourceRect = Rect(outputRect).Intersect(aSourceRect);
|
||||
Rect renderedDestRect = renderedSourceRect + sourceToDestOffset;
|
||||
aDrawTarget->DrawSurface(result, renderedDestRect,
|
||||
renderedSourceRect - Point(outputRect.TopLeft()),
|
||||
DrawSurfaceOptions(), aOptions);
|
||||
}
|
||||
|
||||
TemporaryRef<DataSourceSurface>
|
||||
FilterNodeSoftware::GetOutput(const IntRect &aRect)
|
||||
{
|
||||
if (aRect.IsEmpty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(GetOutputRectInRect(aRect).Contains(aRect));
|
||||
if (!mCachedRect.Contains(aRect)) {
|
||||
RequestRect(aRect);
|
||||
@ -664,7 +656,7 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
||||
const IntRect *aTransparencyPaddedSourceRect)
|
||||
{
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("<h1>GetInputDataSourceSurface with aRect: %d, %d, %d, %d</h1>\n",
|
||||
printf("<section><h1>GetInputDataSourceSurface with aRect: %d, %d, %d, %d</h1>\n",
|
||||
aRect.x, aRect.y, aRect.width, aRect.height);
|
||||
#endif
|
||||
int32_t inputIndex = InputIndex(aInputEnumIndex);
|
||||
@ -673,36 +665,48 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (aRect.IsEmpty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
RefPtr<SourceSurface> surface;
|
||||
IntRect surfaceRect;
|
||||
|
||||
if (mInputSurfaces[inputIndex]) {
|
||||
// Input from input surface
|
||||
surface = mInputSurfaces[inputIndex];
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("input from input surface:\n");
|
||||
printf("<img src='"); DumpAsPNG(surface); printf("'>\n");
|
||||
#endif
|
||||
surfaceRect = IntRect(IntPoint(0, 0), surface->GetSize());
|
||||
} else {
|
||||
// Input from input filter
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("getting input from input filter %s...\n", mInputFilters[inputIndex]->GetName());
|
||||
#endif
|
||||
RefPtr<FilterNodeSoftware> filter = mInputFilters[inputIndex];
|
||||
MOZ_ASSERT(filter, "missing input");
|
||||
IntRect inputFilterOutput = filter->GetOutputRectInRect(aRect);
|
||||
if (!inputFilterOutput.IsEmpty()) {
|
||||
surface = filter->GetOutput(inputFilterOutput);
|
||||
}
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("input from input filter %s:\n", mInputFilters[inputIndex]->GetName());
|
||||
#endif
|
||||
surfaceRect = inputFilterOutput;
|
||||
MOZ_ASSERT(!surface || surfaceRect.Size() == surface->GetSize());
|
||||
}
|
||||
|
||||
if (surface && surface->GetFormat() == FORMAT_UNKNOWN) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("wrong input format\n\n");
|
||||
printf("wrong input format</section>\n\n");
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!surfaceRect.IsEmpty() && !surface) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf(" -- no input --\n\n");
|
||||
printf(" -- no input --</section>\n\n");
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
@ -718,7 +722,7 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
||||
|
||||
if (!result) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf(" -- no input --\n\n");
|
||||
printf(" -- no input --</section>\n\n");
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
@ -736,8 +740,7 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
||||
}
|
||||
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("input:\n");
|
||||
printf("<img src='"); DumpAsPNG(result); printf("'>\n");
|
||||
printf("<img src='"); DumpAsPNG(result); printf("'></section>");
|
||||
#endif
|
||||
|
||||
MOZ_ASSERT(!result || result->GetSize() == aRect.Size(), "wrong surface size");
|
||||
@ -887,11 +890,23 @@ FilterNodeBlendSoftware::Render(const IntRect& aRect)
|
||||
GetInputDataSourceSurface(IN_BLEND_IN, aRect, NEED_COLOR_CHANNELS);
|
||||
RefPtr<DataSourceSurface> input2 =
|
||||
GetInputDataSourceSurface(IN_BLEND_IN2, aRect, NEED_COLOR_CHANNELS);
|
||||
if (!input1 || !input2) {
|
||||
|
||||
// Null inputs need to be treated as transparent.
|
||||
|
||||
// First case: both are transparent.
|
||||
if (!input1 && !input2) {
|
||||
// Then the result is transparent, too.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return FilterProcessing::ApplyBlending(input1, input2, mBlendMode);
|
||||
// Second case: both are non-transparent.
|
||||
if (input1 && input2) {
|
||||
// Apply normal filtering.
|
||||
return FilterProcessing::ApplyBlending(input1, input2, mBlendMode);
|
||||
}
|
||||
|
||||
// Third case: one of them is transparent. Return the non-transparent one.
|
||||
return input1 ? input1 : input2;
|
||||
}
|
||||
|
||||
void
|
||||
@ -940,6 +955,10 @@ FilterNodeTransformSoftware::SetAttribute(uint32_t aIndex, const Matrix &aMatrix
|
||||
IntRect
|
||||
FilterNodeTransformSoftware::SourceRectForOutputRect(const IntRect &aRect)
|
||||
{
|
||||
if (aRect.IsEmpty()) {
|
||||
return IntRect();
|
||||
}
|
||||
|
||||
Matrix inverted(mMatrix);
|
||||
if (!inverted.Invert()) {
|
||||
return IntRect();
|
||||
@ -993,6 +1012,10 @@ IntRect
|
||||
FilterNodeTransformSoftware::GetOutputRectInRect(const IntRect& aRect)
|
||||
{
|
||||
IntRect srcRect = SourceRectForOutputRect(aRect);
|
||||
if (srcRect.IsEmpty()) {
|
||||
return IntRect();
|
||||
}
|
||||
|
||||
Rect outRect = mMatrix.TransformBounds(Rect(srcRect));
|
||||
outRect.RoundOut();
|
||||
return RoundedToInt(outRect).Intersect(aRect);
|
||||
@ -1322,6 +1345,9 @@ FilterNodeFloodSoftware::GetOutput(const IntRect& aRect)
|
||||
IntRect
|
||||
FilterNodeFloodSoftware::GetOutputRectInRect(const IntRect& aRect)
|
||||
{
|
||||
if (mColor.a == 0.0f) {
|
||||
return IntRect();
|
||||
}
|
||||
return aRect;
|
||||
}
|
||||
|
||||
@ -2244,6 +2270,10 @@ FilterNodeConvolveMatrixSoftware::RequestFromInputsForRect(const IntRect &aRect)
|
||||
IntRect
|
||||
FilterNodeConvolveMatrixSoftware::InflatedSourceRect(const IntRect &aDestRect)
|
||||
{
|
||||
if (aDestRect.IsEmpty()) {
|
||||
return IntRect();
|
||||
}
|
||||
|
||||
IntMargin margin;
|
||||
margin.left = ceil(mTarget.x * mKernelUnitLength.width);
|
||||
margin.top = ceil(mTarget.y * mKernelUnitLength.height);
|
||||
@ -2258,6 +2288,10 @@ FilterNodeConvolveMatrixSoftware::InflatedSourceRect(const IntRect &aDestRect)
|
||||
IntRect
|
||||
FilterNodeConvolveMatrixSoftware::InflatedDestRect(const IntRect &aSourceRect)
|
||||
{
|
||||
if (aSourceRect.IsEmpty()) {
|
||||
return IntRect();
|
||||
}
|
||||
|
||||
IntMargin margin;
|
||||
margin.left = ceil((mKernelSize.width - mTarget.x - 1) * mKernelUnitLength.width);
|
||||
margin.top = ceil((mKernelSize.height - mTarget.y - 1) * mKernelUnitLength.height);
|
||||
@ -2513,11 +2547,25 @@ FilterNodeArithmeticCombineSoftware::Render(const IntRect& aRect)
|
||||
GetInputDataSourceSurface(IN_ARITHMETIC_COMBINE_IN, aRect, NEED_COLOR_CHANNELS);
|
||||
RefPtr<DataSourceSurface> input2 =
|
||||
GetInputDataSourceSurface(IN_ARITHMETIC_COMBINE_IN2, aRect, NEED_COLOR_CHANNELS);
|
||||
if (!input1 || !input2) {
|
||||
if (!input1 && !input2) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return FilterProcessing::ApplyArithmeticCombine(input1, input2, mK1, mK2, mK3, mK4);
|
||||
// If one input is null, treat it as transparent by adjusting the factors.
|
||||
Float k1 = mK1, k2 = mK2, k3 = mK3, k4 = mK4;
|
||||
if (!input1) {
|
||||
k1 = 0.0f;
|
||||
k2 = 0.0f;
|
||||
input1 = input2;
|
||||
}
|
||||
|
||||
if (!input2) {
|
||||
k1 = 0.0f;
|
||||
k3 = 0.0f;
|
||||
input2 = input1;
|
||||
}
|
||||
|
||||
return FilterProcessing::ApplyArithmeticCombine(input1, input2, k1, k2, k3, k4);
|
||||
}
|
||||
|
||||
void
|
||||
@ -2530,8 +2578,22 @@ FilterNodeArithmeticCombineSoftware::RequestFromInputsForRect(const IntRect &aRe
|
||||
IntRect
|
||||
FilterNodeArithmeticCombineSoftware::GetOutputRectInRect(const IntRect& aRect)
|
||||
{
|
||||
return GetInputRectInRect(IN_ARITHMETIC_COMBINE_IN, aRect).Union(
|
||||
GetInputRectInRect(IN_ARITHMETIC_COMBINE_IN2, aRect)).Intersect(aRect);
|
||||
if (mK4 > 0.0f) {
|
||||
return aRect;
|
||||
}
|
||||
IntRect rectFrom1 = GetInputRectInRect(IN_ARITHMETIC_COMBINE_IN, aRect).Intersect(aRect);
|
||||
IntRect rectFrom2 = GetInputRectInRect(IN_ARITHMETIC_COMBINE_IN2, aRect).Intersect(aRect);
|
||||
IntRect result;
|
||||
if (mK1 > 0.0f) {
|
||||
result = rectFrom1.Intersect(rectFrom2);
|
||||
}
|
||||
if (mK2 > 0.0f) {
|
||||
result = result.Union(rectFrom1);
|
||||
}
|
||||
if (mK3 > 0.0f) {
|
||||
result = result.Union(rectFrom2);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
FilterNodeCompositeSoftware::FilterNodeCompositeSoftware()
|
||||
@ -2559,17 +2621,41 @@ FilterNodeCompositeSoftware::Render(const IntRect& aRect)
|
||||
GetInputDataSourceSurface(IN_COMPOSITE_IN_START, aRect, NEED_COLOR_CHANNELS);
|
||||
RefPtr<DataSourceSurface> dest =
|
||||
Factory::CreateDataSourceSurface(aRect.Size(), FORMAT_B8G8R8A8);
|
||||
if (!start || !dest) {
|
||||
if (!dest) {
|
||||
return nullptr;
|
||||
}
|
||||
CopyRect(start, dest, aRect - aRect.TopLeft(), IntPoint());
|
||||
|
||||
if (start) {
|
||||
CopyRect(start, dest, aRect - aRect.TopLeft(), IntPoint());
|
||||
} else {
|
||||
ClearDataSourceSurface(dest);
|
||||
}
|
||||
|
||||
for (size_t inputIndex = 1; inputIndex < NumberOfSetInputs(); inputIndex++) {
|
||||
RefPtr<DataSourceSurface> input =
|
||||
GetInputDataSourceSurface(IN_COMPOSITE_IN_START + inputIndex, aRect, NEED_COLOR_CHANNELS);
|
||||
if (!input) {
|
||||
return nullptr;
|
||||
if (input) {
|
||||
FilterProcessing::ApplyComposition(input, dest, mOperator);
|
||||
} else {
|
||||
// We need to treat input as transparent. Depending on the composite
|
||||
// operator, different things happen to dest.
|
||||
switch (mOperator) {
|
||||
case COMPOSITE_OPERATOR_OVER:
|
||||
case COMPOSITE_OPERATOR_ATOP:
|
||||
case COMPOSITE_OPERATOR_XOR:
|
||||
// dest is unchanged.
|
||||
break;
|
||||
case COMPOSITE_OPERATOR_OUT:
|
||||
// dest is now transparent, but it can become non-transparent again
|
||||
// when compositing additional inputs.
|
||||
ClearDataSourceSurface(dest);
|
||||
break;
|
||||
case COMPOSITE_OPERATOR_IN:
|
||||
// Transparency always wins. We're completely transparent now and
|
||||
// no additional input can get rid of that transparency.
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
FilterProcessing::ApplyComposition(input, dest, mOperator);
|
||||
}
|
||||
return dest;
|
||||
}
|
||||
@ -2587,7 +2673,12 @@ FilterNodeCompositeSoftware::GetOutputRectInRect(const IntRect& aRect)
|
||||
{
|
||||
IntRect rect;
|
||||
for (size_t inputIndex = 0; inputIndex < NumberOfSetInputs(); inputIndex++) {
|
||||
rect = rect.Union(GetInputRectInRect(IN_COMPOSITE_IN_START + inputIndex, aRect));
|
||||
IntRect inputRect = GetInputRectInRect(IN_COMPOSITE_IN_START + inputIndex, aRect);
|
||||
if (mOperator == COMPOSITE_OPERATOR_IN && inputIndex > 0) {
|
||||
rect = rect.Intersect(inputRect);
|
||||
} else {
|
||||
rect = rect.Union(inputRect);
|
||||
}
|
||||
}
|
||||
return rect;
|
||||
}
|
||||
@ -2752,13 +2843,7 @@ FilterNodeCropSoftware::SetAttribute(uint32_t aIndex,
|
||||
TemporaryRef<DataSourceSurface>
|
||||
FilterNodeCropSoftware::Render(const IntRect& aRect)
|
||||
{
|
||||
IntRect sourceRect = aRect.Intersect(mCropRect);
|
||||
RefPtr<DataSourceSurface> input =
|
||||
GetInputDataSourceSurface(IN_CROP_IN, sourceRect);
|
||||
if (!input) {
|
||||
return nullptr;
|
||||
}
|
||||
return GetDataSurfaceInRect(input, sourceRect, aRect, EDGE_MODE_NONE);
|
||||
return GetInputDataSourceSurface(IN_CROP_IN, aRect.Intersect(mCropRect));
|
||||
}
|
||||
|
||||
void
|
||||
@ -3122,13 +3207,17 @@ FilterNodeLightingSoftware<LightType, LightingType>::DoRender(const IntRect& aRe
|
||||
GetInputDataSourceSurface(IN_LIGHTING_IN, srcRect, CAN_HANDLE_A8,
|
||||
EDGE_MODE_DUPLICATE);
|
||||
|
||||
if (!input) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (input->GetFormat() != FORMAT_A8) {
|
||||
input = FilterProcessing::ExtractAlpha(input);
|
||||
}
|
||||
|
||||
RefPtr<DataSourceSurface> target =
|
||||
Factory::CreateDataSourceSurface(size, FORMAT_B8G8R8A8);
|
||||
if (!input || !target) {
|
||||
if (!target) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,8 @@ public:
|
||||
virtual void SetInput(uint32_t aIndex, SourceSurface *aSurface) MOZ_OVERRIDE;
|
||||
virtual void SetInput(uint32_t aIndex, FilterNode *aFilter) MOZ_OVERRIDE;
|
||||
|
||||
virtual const char* GetName() { return "Unknown"; }
|
||||
|
||||
virtual void AddInvalidationListener(FilterInvalidationListener* aListener);
|
||||
virtual void RemoveInvalidationListener(FilterInvalidationListener* aListener);
|
||||
|
||||
@ -216,6 +218,7 @@ class FilterNodeTransformSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeTransformSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Transform"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aGraphicsFilter) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Matrix &aMatrix) MOZ_OVERRIDE;
|
||||
@ -236,6 +239,7 @@ class FilterNodeBlendSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeBlendSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Blend"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aBlendMode) MOZ_OVERRIDE;
|
||||
|
||||
@ -253,6 +257,7 @@ class FilterNodeMorphologySoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeMorphologySoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Morphology"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntSize &aRadii) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aOperator) MOZ_OVERRIDE;
|
||||
@ -271,6 +276,7 @@ private:
|
||||
class FilterNodeColorMatrixSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "ColorMatrix"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Matrix5x4 &aMatrix) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aAlphaMode) MOZ_OVERRIDE;
|
||||
@ -289,6 +295,7 @@ private:
|
||||
class FilterNodeFloodSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Flood"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Color &aColor) MOZ_OVERRIDE;
|
||||
|
||||
@ -304,6 +311,7 @@ private:
|
||||
class FilterNodeTileSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Tile"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntRect &aSourceRect) MOZ_OVERRIDE;
|
||||
|
||||
@ -346,6 +354,7 @@ protected:
|
||||
class FilterNodeTableTransferSoftware : public FilterNodeComponentTransferSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "TableTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
||||
@ -364,6 +373,7 @@ private:
|
||||
class FilterNodeDiscreteTransferSoftware : public FilterNodeComponentTransferSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "DiscreteTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
||||
@ -383,6 +393,7 @@ class FilterNodeLinearTransferSoftware : public FilterNodeComponentTransferSoftw
|
||||
{
|
||||
public:
|
||||
FilterNodeLinearTransferSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "LinearTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aValue) MOZ_OVERRIDE;
|
||||
|
||||
@ -406,6 +417,7 @@ class FilterNodeGammaTransferSoftware : public FilterNodeComponentTransferSoftwa
|
||||
{
|
||||
public:
|
||||
FilterNodeGammaTransferSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "GammaTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aValue) MOZ_OVERRIDE;
|
||||
|
||||
@ -433,6 +445,7 @@ class FilterNodeConvolveMatrixSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeConvolveMatrixSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "ConvolveMatrix"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntSize &aKernelSize) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aMatrix, uint32_t aSize) MOZ_OVERRIDE;
|
||||
@ -473,6 +486,7 @@ class FilterNodeDisplacementMapSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeDisplacementMapSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "DisplacementMap"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aScale) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aValue) MOZ_OVERRIDE;
|
||||
@ -495,6 +509,7 @@ class FilterNodeTurbulenceSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeTurbulenceSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Turbulence"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Size &aSize) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntRect &aRenderRect) MOZ_OVERRIDE;
|
||||
@ -519,6 +534,7 @@ class FilterNodeArithmeticCombineSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeArithmeticCombineSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "ArithmeticCombine"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
||||
@ -539,6 +555,7 @@ class FilterNodeCompositeSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeCompositeSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Composite"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aOperator) MOZ_OVERRIDE;
|
||||
|
||||
@ -571,6 +588,7 @@ class FilterNodeGaussianBlurSoftware : public FilterNodeBlurXYSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeGaussianBlurSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "GaussianBlur"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aStdDeviation) MOZ_OVERRIDE;
|
||||
|
||||
@ -585,6 +603,7 @@ class FilterNodeDirectionalBlurSoftware : public FilterNodeBlurXYSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeDirectionalBlurSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "DirectionalBlur"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aStdDeviation) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aBlurDirection) MOZ_OVERRIDE;
|
||||
@ -600,6 +619,7 @@ private:
|
||||
class FilterNodeCropSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Crop"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Rect &aSourceRect) MOZ_OVERRIDE;
|
||||
|
||||
@ -615,6 +635,8 @@ private:
|
||||
|
||||
class FilterNodePremultiplySoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Premultiply"; }
|
||||
protected:
|
||||
virtual TemporaryRef<DataSourceSurface> Render(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
virtual IntRect GetOutputRectInRect(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
@ -624,6 +646,8 @@ protected:
|
||||
|
||||
class FilterNodeUnpremultiplySoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Unpremultiply"; }
|
||||
protected:
|
||||
virtual TemporaryRef<DataSourceSurface> Render(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
virtual IntRect GetOutputRectInRect(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
@ -636,6 +660,7 @@ class FilterNodeLightingSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
FilterNodeLightingSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Lighting"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Size &) MOZ_OVERRIDE;
|
||||
|
@ -32,4 +32,4 @@ FilterProcessingSSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
|
||||
endif
|
||||
endif
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS)
|
||||
|
@ -36,7 +36,3 @@ CFLAGS += -Wno-missing-field-initializers
|
||||
CFLAGS += -Wno-conversion
|
||||
endif # GNU_CC
|
||||
|
||||
ifndef MOZ_TREE_PIXMAN
|
||||
CFLAGS += $(MOZ_PIXMAN_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_PIXMAN_CFLAGS)
|
||||
endif
|
||||
|
@ -10,5 +10,5 @@ endif
|
||||
|
||||
DEFINES := $(filter-out -DUNICODE,$(DEFINES))
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
CFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
@ -5,4 +5,4 @@
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
@ -24,7 +24,7 @@ CXXFLAGS += \
|
||||
-I$(ANDROID_SOURCE)/frameworks/native/include/media/openmax \
|
||||
$(NULL)
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
||||
ifdef _MSC_VER
|
||||
ifeq ($(CPU_ARCH),x86_64)
|
||||
|
@ -1261,18 +1261,42 @@ PostFilterExtentsForPrimitive(const FilterPrimitiveDescription& aDescription,
|
||||
{
|
||||
uint32_t op = atts.GetUint(eCompositeOperator);
|
||||
if (op == SVG_FECOMPOSITE_OPERATOR_ARITHMETIC) {
|
||||
// The arithmetic composite primitive can draw outside the bounding
|
||||
// box of its source images.
|
||||
const nsTArray<float>& coefficients = atts.GetFloats(eCompositeCoefficients);
|
||||
MOZ_ASSERT(coefficients.Length() == 4);
|
||||
if (coefficients[3] > 0.0f) {
|
||||
// The arithmetic composite primitive can draw outside the bounding
|
||||
// box of its source images.
|
||||
return ThebesIntRect(aDescription.PrimitiveSubregion());
|
||||
|
||||
// The calculation is:
|
||||
// r = c[0] * in[0] * in[1] + c[1] * in[0] + c[2] * in[1] + c[3]
|
||||
nsIntRegion region;
|
||||
if (coefficients[0] > 0.0f) {
|
||||
region = aInputExtents[0].Intersect(aInputExtents[1]);
|
||||
}
|
||||
if (coefficients[1] > 0.0f) {
|
||||
region.Or(region, aInputExtents[0]);
|
||||
}
|
||||
if (coefficients[2] > 0.0f) {
|
||||
region.Or(region, aInputExtents[1]);
|
||||
}
|
||||
if (coefficients[3] > 0.0f) {
|
||||
region = ThebesIntRect(aDescription.PrimitiveSubregion());
|
||||
}
|
||||
return region;
|
||||
}
|
||||
if (op == SVG_FECOMPOSITE_OPERATOR_IN) {
|
||||
return aInputExtents[0].Intersect(aInputExtents[1]);
|
||||
}
|
||||
return ResultChangeRegionForPrimitive(aDescription, aInputExtents);
|
||||
}
|
||||
|
||||
case FilterPrimitiveDescription::eFlood:
|
||||
{
|
||||
if (atts.GetColor(eFloodColor).a == 0.0f) {
|
||||
return nsIntRect();
|
||||
}
|
||||
return ThebesIntRect(aDescription.PrimitiveSubregion());
|
||||
}
|
||||
|
||||
case FilterPrimitiveDescription::eTurbulence:
|
||||
case FilterPrimitiveDescription::eImage:
|
||||
{
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
||||
ifdef MOZ_WIDGET_GTK
|
||||
CXXFLAGS += $(MOZ_PANGO_CFLAGS)
|
||||
|
@ -10,8 +10,8 @@ include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES := $(filter-out -DUNICODE,$(DEFINES))
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
CFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
||||
ifeq ($(MOZ_WIDGET_TOOLKIT),android)
|
||||
CXXFLAGS += $(CAIRO_FT_CFLAGS)
|
||||
|
@ -6,4 +6,4 @@
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
# Because imgFrame.cpp includes "cairo.h"
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS)
|
||||
|
@ -466,7 +466,7 @@ JAVA_GEN_DIR = _javagen
|
||||
JAVA_DIST_DIR = $(DEPTH)/$(JAVA_GEN_DIR)
|
||||
JAVA_IFACES_PKG_NAME = org/mozilla/interfaces
|
||||
|
||||
OS_INCLUDES += $(MOZ_JPEG_CFLAGS) $(MOZ_PNG_CFLAGS) $(MOZ_ZLIB_CFLAGS)
|
||||
OS_INCLUDES += $(MOZ_JPEG_CFLAGS) $(MOZ_PNG_CFLAGS) $(MOZ_ZLIB_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
|
||||
|
||||
# NSPR_CFLAGS and NSS_CFLAGS must appear ahead of OS_INCLUDES to avoid Linux
|
||||
# builds wrongly picking up system NSPR/NSS header files.
|
||||
|
@ -96,7 +96,9 @@ class StoreBuffer
|
||||
MonoTypeBuffer &operator=(const MonoTypeBuffer& other) MOZ_DELETE;
|
||||
|
||||
bool init() {
|
||||
storage_ = js_new<LifoAlloc>(LifoAllocBlockSize);
|
||||
if (!storage_)
|
||||
storage_ = js_new<LifoAlloc>(LifoAllocBlockSize);
|
||||
clear();
|
||||
return bool(storage_);
|
||||
}
|
||||
|
||||
@ -170,7 +172,9 @@ class StoreBuffer
|
||||
GenericBuffer &operator=(const GenericBuffer& other) MOZ_DELETE;
|
||||
|
||||
bool init() {
|
||||
storage_ = js_new<LifoAlloc>(LifoAllocBlockSize);
|
||||
if (!storage_)
|
||||
storage_ = js_new<LifoAlloc>(LifoAllocBlockSize);
|
||||
clear();
|
||||
return bool(storage_);
|
||||
}
|
||||
|
||||
|
12
js/src/jit-test/tests/baseline/bug945223.js
Normal file
12
js/src/jit-test/tests/baseline/bug945223.js
Normal file
@ -0,0 +1,12 @@
|
||||
// |jit-test| error: InternalError
|
||||
|
||||
Array.prototype.__proto__ = Proxy.create({
|
||||
getPropertyDescriptor: function(name) {
|
||||
return (560566);
|
||||
},
|
||||
}, null);
|
||||
function f() {}
|
||||
function g() { }
|
||||
var x = [f,f,f,undefined,g];
|
||||
for (var i = 0; i < 5; ++i)
|
||||
y = x[i]("x");
|
@ -796,7 +796,11 @@ InitFromBailout(JSContext *cx, HandleScript caller, jsbytecode *callerPC,
|
||||
|
||||
#ifdef DEBUG
|
||||
uint32_t expectedDepth;
|
||||
if (ReconstructStackDepth(cx, script, resumeAfter ? GetNextPc(pc) : pc, &expectedDepth)) {
|
||||
bool reachablePC;
|
||||
if (!ReconstructStackDepth(cx, script, resumeAfter ? GetNextPc(pc) : pc, &expectedDepth, &reachablePC))
|
||||
return false;
|
||||
|
||||
if (reachablePC) {
|
||||
if (op != JSOP_FUNAPPLY || !iter.moreFrames() || resumeAfter) {
|
||||
if (op == JSOP_FUNCALL) {
|
||||
// For fun.call(this, ...); the reconstructStackDepth will
|
||||
|
@ -1815,7 +1815,7 @@ DoCompareFallback(JSContext *cx, BaselineFrame *frame, ICCompare_Fallback *stub,
|
||||
rhs.isUndefined() ? "Undefined" : "Number");
|
||||
ICCompare_NumberWithUndefined::Compiler compiler(cx, op, lhs.isUndefined());
|
||||
ICStub *doubleStub = compiler.getStub(compiler.getStubSpace(script));
|
||||
if (!stub)
|
||||
if (!doubleStub)
|
||||
return false;
|
||||
|
||||
stub->addNewStub(doubleStub);
|
||||
@ -4296,12 +4296,20 @@ ICGetElemNativeCompiler::generateStubCode(MacroAssembler &masm)
|
||||
masm.branchTestUndefined(Assembler::NotEqual, valAddr, &skipNoSuchMethod);
|
||||
|
||||
GeneralRegisterSet regs = availableGeneralRegs(0);
|
||||
regs.takeUnchecked(objReg);
|
||||
regs.take(R1);
|
||||
Register scratch = regs.takeAnyExcluding(BaselineTailCallReg);
|
||||
regs.take(R0);
|
||||
regs.takeUnchecked(objReg);
|
||||
if (popR1)
|
||||
masm.pop(R1.scratchReg());
|
||||
enterStubFrame(masm, scratch);
|
||||
|
||||
// Box and push obj and key onto baseline frame stack for decompiler.
|
||||
masm.tagValue(JSVAL_TYPE_OBJECT, objReg, R0);
|
||||
EmitStowICValues(masm, 2);
|
||||
|
||||
regs.add(R0);
|
||||
regs.takeUnchecked(objReg);
|
||||
|
||||
enterStubFrame(masm, regs.getAnyExcluding(BaselineTailCallReg));
|
||||
|
||||
masm.pushValue(R1);
|
||||
masm.push(objReg);
|
||||
@ -4309,6 +4317,10 @@ ICGetElemNativeCompiler::generateStubCode(MacroAssembler &masm)
|
||||
return false;
|
||||
|
||||
leaveStubFrame(masm);
|
||||
|
||||
// Pop pushed obj and key from baseline stack.
|
||||
EmitUnstowICValues(masm, 2, /* discard = */ true);
|
||||
|
||||
// Result is already in R0
|
||||
masm.jump(&afterNoSuchMethod);
|
||||
masm.bind(&skipNoSuchMethod);
|
||||
@ -4472,10 +4484,20 @@ ICGetElem_Dense::Compiler::generateStubCode(MacroAssembler &masm)
|
||||
regs = availableGeneralRegs(0);
|
||||
regs.takeUnchecked(obj);
|
||||
regs.takeUnchecked(key);
|
||||
regs.takeUnchecked(BaselineTailCallReg);
|
||||
ValueOperand val = regs.takeValueOperand();
|
||||
|
||||
masm.loadValue(element, val);
|
||||
masm.branchTestUndefined(Assembler::NotEqual, val, &skipNoSuchMethod);
|
||||
|
||||
// Box and push obj and key onto baseline frame stack for decompiler.
|
||||
EmitRestoreTailCallReg(masm);
|
||||
masm.tagValue(JSVAL_TYPE_OBJECT, obj, val);
|
||||
masm.pushValue(val);
|
||||
masm.tagValue(JSVAL_TYPE_INT32, key, val);
|
||||
masm.pushValue(val);
|
||||
EmitRepushTailCallReg(masm);
|
||||
|
||||
regs.add(val);
|
||||
|
||||
// Call __noSuchMethod__ checker. Object pointer is in objReg.
|
||||
@ -4490,6 +4512,10 @@ ICGetElem_Dense::Compiler::generateStubCode(MacroAssembler &masm)
|
||||
return false;
|
||||
|
||||
leaveStubFrame(masm);
|
||||
|
||||
// Pop pushed obj and key from baseline stack.
|
||||
EmitUnstowICValues(masm, 2, /* discard = */ true);
|
||||
|
||||
// Result is already in R0
|
||||
masm.jump(&afterNoSuchMethod);
|
||||
masm.bind(&skipNoSuchMethod);
|
||||
@ -4703,19 +4729,33 @@ ICGetElem_Arguments::Compiler::generateStubCode(MacroAssembler &masm)
|
||||
|
||||
// Call __noSuchMethod__ checker. Object pointer is in objReg.
|
||||
regs = availableGeneralRegs(0);
|
||||
// R1 and objReg are guaranteed not to overlap.
|
||||
regs.takeUnchecked(objReg);
|
||||
regs.take(R1);
|
||||
masm.tagValue(JSVAL_TYPE_INT32, idxReg, R1);
|
||||
scratchReg = regs.takeAnyExcluding(BaselineTailCallReg);
|
||||
enterStubFrame(masm, scratchReg);
|
||||
regs.takeUnchecked(idxReg);
|
||||
regs.takeUnchecked(BaselineTailCallReg);
|
||||
ValueOperand val = regs.takeValueOperand();
|
||||
|
||||
masm.pushValue(R1);
|
||||
// Box and push obj and key onto baseline frame stack for decompiler.
|
||||
EmitRestoreTailCallReg(masm);
|
||||
masm.tagValue(JSVAL_TYPE_OBJECT, objReg, val);
|
||||
masm.pushValue(val);
|
||||
masm.tagValue(JSVAL_TYPE_INT32, idxReg, val);
|
||||
masm.pushValue(val);
|
||||
EmitRepushTailCallReg(masm);
|
||||
|
||||
regs.add(val);
|
||||
enterStubFrame(masm, regs.getAnyExcluding(BaselineTailCallReg));
|
||||
regs.take(val);
|
||||
|
||||
masm.pushValue(val);
|
||||
masm.push(objReg);
|
||||
if (!callVM(LookupNoSuchMethodHandlerInfo, masm))
|
||||
return false;
|
||||
|
||||
leaveStubFrame(masm);
|
||||
|
||||
// Pop pushed obj and key from baseline stack.
|
||||
EmitUnstowICValues(masm, 2, /* discard = */ true);
|
||||
|
||||
// Result is already in R0
|
||||
masm.jump(&afterNoSuchMethod);
|
||||
masm.bind(&skipNoSuchMethod);
|
||||
@ -6533,16 +6573,33 @@ ICGetPropNativeCompiler::generateStubCode(MacroAssembler &masm)
|
||||
masm.branchTestUndefined(Assembler::NotEqual, R0, &skipNoSuchMethod);
|
||||
|
||||
masm.pop(objReg);
|
||||
enterStubFrame(masm, scratch);
|
||||
|
||||
masm.movePtr(ImmGCPtr(propName_.get()), R1.scratchReg());
|
||||
masm.tagValue(JSVAL_TYPE_STRING, R1.scratchReg(), R1);
|
||||
masm.pushValue(R1);
|
||||
// Call __noSuchMethod__ checker. Object pointer is in objReg.
|
||||
regs = availableGeneralRegs(0);
|
||||
regs.takeUnchecked(objReg);
|
||||
regs.takeUnchecked(BaselineTailCallReg);
|
||||
ValueOperand val = regs.takeValueOperand();
|
||||
|
||||
// Box and push obj onto baseline frame stack for decompiler.
|
||||
EmitRestoreTailCallReg(masm);
|
||||
masm.tagValue(JSVAL_TYPE_OBJECT, objReg, val);
|
||||
masm.pushValue(val);
|
||||
EmitRepushTailCallReg(masm);
|
||||
|
||||
enterStubFrame(masm, regs.getAnyExcluding(BaselineTailCallReg));
|
||||
|
||||
masm.movePtr(ImmGCPtr(propName_.get()), val.scratchReg());
|
||||
masm.tagValue(JSVAL_TYPE_STRING, val.scratchReg(), val);
|
||||
masm.pushValue(val);
|
||||
masm.push(objReg);
|
||||
if (!callVM(LookupNoSuchMethodHandlerInfo, masm))
|
||||
return false;
|
||||
|
||||
leaveStubFrame(masm);
|
||||
|
||||
// Pop pushed obj from baseline stack.
|
||||
EmitUnstowICValues(masm, 1, /* discard = */ true);
|
||||
|
||||
masm.jump(&afterNoSuchMethod);
|
||||
masm.bind(&skipNoSuchMethod);
|
||||
|
||||
|
@ -217,13 +217,8 @@ class InlineList : protected InlineListNode<T>
|
||||
{
|
||||
typedef InlineListNode<T> Node;
|
||||
|
||||
// Silence MSVC warning C4355
|
||||
InlineList<T> *thisFromConstructor() {
|
||||
return this;
|
||||
}
|
||||
|
||||
public:
|
||||
InlineList() : InlineListNode<T>(thisFromConstructor(), thisFromConstructor())
|
||||
InlineList() : InlineListNode<T>(MOZ_THIS_IN_INITIALIZER_LIST(), MOZ_THIS_IN_INITIALIZER_LIST())
|
||||
{ }
|
||||
|
||||
public:
|
||||
|
@ -436,13 +436,17 @@ class TypeAnalyzer
|
||||
|
||||
// Try to specialize this phi based on its non-cyclic inputs.
|
||||
static MIRType
|
||||
GuessPhiType(MPhi *phi)
|
||||
GuessPhiType(MPhi *phi, bool *hasInputsWithEmptyTypes)
|
||||
{
|
||||
*hasInputsWithEmptyTypes = false;
|
||||
|
||||
MIRType type = MIRType_None;
|
||||
bool convertibleToFloat32 = false;
|
||||
bool hasPhiInputs = false;
|
||||
for (size_t i = 0, e = phi->numOperands(); i < e; i++) {
|
||||
MDefinition *in = phi->getOperand(i);
|
||||
if (in->isPhi()) {
|
||||
hasPhiInputs = true;
|
||||
if (!in->toPhi()->triedToSpecialize())
|
||||
continue;
|
||||
if (in->type() == MIRType_None) {
|
||||
@ -452,6 +456,13 @@ GuessPhiType(MPhi *phi)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Ignore operands which we've never observed.
|
||||
if (in->resultTypeSet() && in->resultTypeSet()->empty()) {
|
||||
*hasInputsWithEmptyTypes = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (type == MIRType_None) {
|
||||
type = in->type();
|
||||
if (in->canProduceFloat32())
|
||||
@ -459,10 +470,6 @@ GuessPhiType(MPhi *phi)
|
||||
continue;
|
||||
}
|
||||
if (type != in->type()) {
|
||||
// Ignore operands which we've never observed.
|
||||
if (in->resultTypeSet() && in->resultTypeSet()->empty())
|
||||
continue;
|
||||
|
||||
if (convertibleToFloat32 && in->type() == MIRType_Float32) {
|
||||
// If we only saw definitions that can be converted into Float32 before and
|
||||
// encounter a Float32 value, promote previous values to Float32
|
||||
@ -476,6 +483,14 @@ GuessPhiType(MPhi *phi)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (type == MIRType_None && !hasPhiInputs) {
|
||||
// All inputs are non-phis with empty typesets. Use MIRType_Value
|
||||
// in this case, as it's impossible to get better type information.
|
||||
JS_ASSERT(*hasInputsWithEmptyTypes);
|
||||
type = MIRType_Value;
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
@ -537,18 +552,28 @@ TypeAnalyzer::propagateSpecialization(MPhi *phi)
|
||||
bool
|
||||
TypeAnalyzer::specializePhis()
|
||||
{
|
||||
Vector<MPhi *, 0, SystemAllocPolicy> phisWithEmptyInputTypes;
|
||||
|
||||
for (PostorderIterator block(graph.poBegin()); block != graph.poEnd(); block++) {
|
||||
if (mir->shouldCancel("Specialize Phis (main loop)"))
|
||||
return false;
|
||||
|
||||
for (MPhiIterator phi(block->phisBegin()); phi != block->phisEnd(); phi++) {
|
||||
MIRType type = GuessPhiType(*phi);
|
||||
bool hasInputsWithEmptyTypes;
|
||||
MIRType type = GuessPhiType(*phi, &hasInputsWithEmptyTypes);
|
||||
phi->specialize(type);
|
||||
if (type == MIRType_None) {
|
||||
// We tried to guess the type but failed because all operands are
|
||||
// phis we still have to visit. Set the triedToSpecialize flag but
|
||||
// don't propagate the type to other phis, propagateSpecialization
|
||||
// will do that once we know the type of one of the operands.
|
||||
|
||||
// Edge case: when this phi has a non-phi input with an empty
|
||||
// typeset, it's possible for two phis to have a cyclic
|
||||
// dependency and they will both have MIRType_None. Specialize
|
||||
// such phis to MIRType_Value later on.
|
||||
if (hasInputsWithEmptyTypes && !phisWithEmptyInputTypes.append(*phi))
|
||||
return false;
|
||||
continue;
|
||||
}
|
||||
if (!propagateSpecialization(*phi))
|
||||
@ -556,14 +581,31 @@ TypeAnalyzer::specializePhis()
|
||||
}
|
||||
}
|
||||
|
||||
while (!phiWorklist_.empty()) {
|
||||
if (mir->shouldCancel("Specialize Phis (worklist)"))
|
||||
return false;
|
||||
do {
|
||||
while (!phiWorklist_.empty()) {
|
||||
if (mir->shouldCancel("Specialize Phis (worklist)"))
|
||||
return false;
|
||||
|
||||
MPhi *phi = popPhi();
|
||||
if (!propagateSpecialization(phi))
|
||||
return false;
|
||||
}
|
||||
MPhi *phi = popPhi();
|
||||
if (!propagateSpecialization(phi))
|
||||
return false;
|
||||
}
|
||||
|
||||
// When two phis have a cyclic dependency and inputs that have an empty
|
||||
// typeset (which are ignored by GuessPhiType), we may still have to
|
||||
// specialize these to MIRType_Value.
|
||||
while (!phisWithEmptyInputTypes.empty()) {
|
||||
if (mir->shouldCancel("Specialize Phis (phisWithEmptyInputTypes)"))
|
||||
return false;
|
||||
|
||||
MPhi *phi = phisWithEmptyInputTypes.popCopy();
|
||||
if (phi->type() == MIRType_None) {
|
||||
phi->specialize(MIRType_Value);
|
||||
if (!propagateSpecialization(phi))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (!phiWorklist_.empty());
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -572,6 +614,7 @@ void
|
||||
TypeAnalyzer::adjustPhiInputs(MPhi *phi)
|
||||
{
|
||||
MIRType phiType = phi->type();
|
||||
JS_ASSERT(phiType != MIRType_None);
|
||||
|
||||
// If we specialized a type that's not Value, there are 3 cases:
|
||||
// 1. Every input is of that type.
|
||||
|
@ -3846,7 +3846,6 @@ IonBuilder::inlineScriptedCall(CallInfo &callInfo, JSFunction *target)
|
||||
AutoAccumulateReturns aar(graph(), returns);
|
||||
|
||||
// Build the graph.
|
||||
JS_ASSERT_IF(analysisContext, !analysisContext->isExceptionPending());
|
||||
IonBuilder inlineBuilder(analysisContext, compartment,
|
||||
&alloc(), &graph(), constraints(), &inspector, info, nullptr,
|
||||
inliningDepth_ + 1, loopDepth_);
|
||||
|
@ -2941,10 +2941,10 @@ jit::PropertyReadNeedsTypeBarrier(JSContext *propertycx,
|
||||
if (property.maybeTypes()) {
|
||||
types::TypeSet::TypeList types;
|
||||
if (!property.maybeTypes()->enumerateTypes(&types))
|
||||
return false;
|
||||
break;
|
||||
if (types.length()) {
|
||||
if (!observed->addType(types[0], GetIonContext()->temp->lifoAlloc()))
|
||||
return false;
|
||||
// Note: the return value here is ignored.
|
||||
observed->addType(types[0], GetIonContext()->temp->lifoAlloc());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ PerfSpewer::writeProfile(JSScript *script,
|
||||
reinterpret_cast<uintptr_t>(code->raw()),
|
||||
size,
|
||||
script->filename(),
|
||||
script->lineno,
|
||||
script->lineno(),
|
||||
thisFunctionIndex);
|
||||
}
|
||||
unlockPerfMap();
|
||||
@ -237,7 +237,7 @@ PerfSpewer::writeProfile(JSScript *script,
|
||||
|
||||
if (prologueSize > 0) {
|
||||
fprintf(PerfFilePtr, "%zx %zx %s:%d: Func%02d-Prologue\n",
|
||||
funcStart, prologueSize, script->filename(), script->lineno, thisFunctionIndex);
|
||||
funcStart, prologueSize, script->filename(), script->lineno(), thisFunctionIndex);
|
||||
}
|
||||
|
||||
uintptr_t cur = funcStart + prologueSize;
|
||||
@ -252,7 +252,7 @@ PerfSpewer::writeProfile(JSScript *script,
|
||||
fprintf(PerfFilePtr, "%zx %zx %s:%d: Func%02d-Block?\n",
|
||||
static_cast<uintptr_t>(cur),
|
||||
static_cast<uintptr_t>(blockStart - cur),
|
||||
script->filename(), script->lineno,
|
||||
script->filename(), script->lineno(),
|
||||
thisFunctionIndex);
|
||||
}
|
||||
cur = blockEnd;
|
||||
@ -271,7 +271,7 @@ PerfSpewer::writeProfile(JSScript *script,
|
||||
if (cur < funcEndInlineCode) {
|
||||
fprintf(PerfFilePtr, "%zx %zx %s:%d: Func%02d-Epilogue\n",
|
||||
cur, funcEndInlineCode - cur,
|
||||
script->filename(), script->lineno,
|
||||
script->filename(), script->lineno(),
|
||||
thisFunctionIndex);
|
||||
}
|
||||
|
||||
@ -279,7 +279,7 @@ PerfSpewer::writeProfile(JSScript *script,
|
||||
if (funcEndInlineCode < funcEnd) {
|
||||
fprintf(PerfFilePtr, "%zx %zx %s:%d: Func%02d-OOL\n",
|
||||
funcEndInlineCode, funcEnd - funcEndInlineCode,
|
||||
script->filename(), script->lineno,
|
||||
script->filename(), script->lineno(),
|
||||
thisFunctionIndex);
|
||||
}
|
||||
|
||||
@ -301,7 +301,7 @@ js::jit::writePerfSpewerBaselineProfile(JSScript *script, IonCode *code)
|
||||
if (size > 0) {
|
||||
fprintf(PerfFilePtr, "%zx %zx %s:%d: Baseline\n",
|
||||
reinterpret_cast<uintptr_t>(code->raw()),
|
||||
size, script->filename(), script->lineno);
|
||||
size, script->filename(), script->lineno());
|
||||
}
|
||||
|
||||
unlockPerfMap();
|
||||
|
@ -25,6 +25,12 @@ EmitRestoreTailCallReg(MacroAssembler &masm)
|
||||
// No-op on ARM because link register is always holding the return address.
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitRepushTailCallReg(MacroAssembler &masm)
|
||||
{
|
||||
// No-op on ARM because link register is always holding the return address.
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitCallIC(CodeOffsetLabel *patchOffset, MacroAssembler &masm)
|
||||
{
|
||||
@ -196,18 +202,25 @@ EmitStowICValues(MacroAssembler &masm, int values)
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitUnstowICValues(MacroAssembler &masm, int values)
|
||||
EmitUnstowICValues(MacroAssembler &masm, int values, bool discard = false)
|
||||
{
|
||||
JS_ASSERT(values >= 0 && values <= 2);
|
||||
switch(values) {
|
||||
case 1:
|
||||
// Unstow R0
|
||||
masm.popValue(R0);
|
||||
if (discard)
|
||||
masm.addPtr(Imm32(sizeof(Value)), BaselineStackReg);
|
||||
else
|
||||
masm.popValue(R0);
|
||||
break;
|
||||
case 2:
|
||||
// Unstow R0 and R1
|
||||
masm.popValue(R1);
|
||||
masm.popValue(R0);
|
||||
if (discard) {
|
||||
masm.addPtr(Imm32(sizeof(Value) * 2), BaselineStackReg);
|
||||
} else {
|
||||
masm.popValue(R1);
|
||||
masm.popValue(R0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -281,7 +281,11 @@ CodeGeneratorShared::encode(LSnapshot *snapshot)
|
||||
#ifdef DEBUG
|
||||
if (GetIonContext()->cx) {
|
||||
uint32_t stackDepth;
|
||||
if (ReconstructStackDepth(GetIonContext()->cx, script, bailPC, &stackDepth)) {
|
||||
bool reachablePC;
|
||||
if (!ReconstructStackDepth(GetIonContext()->cx, script, bailPC, &stackDepth, &reachablePC))
|
||||
return false;
|
||||
|
||||
if (reachablePC) {
|
||||
if (JSOp(*bailPC) == JSOP_FUNCALL) {
|
||||
// For fun.call(this, ...); the reconstructStackDepth will
|
||||
// include the this. When inlining that is not included.
|
||||
|
@ -25,6 +25,12 @@ EmitRestoreTailCallReg(MacroAssembler &masm)
|
||||
masm.pop(BaselineTailCallReg);
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitRepushTailCallReg(MacroAssembler &masm)
|
||||
{
|
||||
masm.push(BaselineTailCallReg);
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitCallIC(CodeOffsetLabel *patchOffset, MacroAssembler &masm)
|
||||
{
|
||||
@ -182,21 +188,28 @@ EmitStowICValues(MacroAssembler &masm, int values)
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitUnstowICValues(MacroAssembler &masm, int values)
|
||||
EmitUnstowICValues(MacroAssembler &masm, int values, bool discard = false)
|
||||
{
|
||||
JS_ASSERT(values >= 0 && values <= 2);
|
||||
switch(values) {
|
||||
case 1:
|
||||
// Unstow R0
|
||||
masm.pop(BaselineTailCallReg);
|
||||
masm.popValue(R0);
|
||||
if (discard)
|
||||
masm.addPtr(Imm32(sizeof(Value)), BaselineStackReg);
|
||||
else
|
||||
masm.popValue(R0);
|
||||
masm.push(BaselineTailCallReg);
|
||||
break;
|
||||
case 2:
|
||||
// Unstow R0 and R1
|
||||
masm.pop(BaselineTailCallReg);
|
||||
masm.popValue(R1);
|
||||
masm.popValue(R0);
|
||||
if (discard) {
|
||||
masm.addPtr(Imm32(sizeof(Value) * 2), BaselineStackReg);
|
||||
} else {
|
||||
masm.popValue(R1);
|
||||
masm.popValue(R0);
|
||||
}
|
||||
masm.push(BaselineTailCallReg);
|
||||
break;
|
||||
}
|
||||
|
@ -25,6 +25,12 @@ EmitRestoreTailCallReg(MacroAssembler &masm)
|
||||
masm.pop(BaselineTailCallReg);
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitRepushTailCallReg(MacroAssembler &masm)
|
||||
{
|
||||
masm.push(BaselineTailCallReg);
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitCallIC(CodeOffsetLabel *patchOffset, MacroAssembler &masm)
|
||||
{
|
||||
@ -188,21 +194,28 @@ EmitStowICValues(MacroAssembler &masm, int values)
|
||||
}
|
||||
|
||||
inline void
|
||||
EmitUnstowICValues(MacroAssembler &masm, int values)
|
||||
EmitUnstowICValues(MacroAssembler &masm, int values, bool discard = false)
|
||||
{
|
||||
JS_ASSERT(values >= 0 && values <= 2);
|
||||
switch(values) {
|
||||
case 1:
|
||||
// Unstow R0
|
||||
masm.pop(BaselineTailCallReg);
|
||||
masm.popValue(R0);
|
||||
if (discard)
|
||||
masm.addPtr(Imm32(sizeof(Value)), BaselineStackReg);
|
||||
else
|
||||
masm.popValue(R0);
|
||||
masm.push(BaselineTailCallReg);
|
||||
break;
|
||||
case 2:
|
||||
// Unstow R0 and R1
|
||||
masm.pop(BaselineTailCallReg);
|
||||
masm.popValue(R1);
|
||||
masm.popValue(R0);
|
||||
if (discard) {
|
||||
masm.addPtr(Imm32(sizeof(Value) * 2), BaselineStackReg);
|
||||
} else {
|
||||
masm.popValue(R1);
|
||||
masm.popValue(R0);
|
||||
}
|
||||
masm.push(BaselineTailCallReg);
|
||||
break;
|
||||
}
|
||||
|
@ -17,8 +17,6 @@
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4100) /* Silence unreferenced formal parameter warnings */
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355) /* Silence warning about "this" used in base member initializer list */
|
||||
#endif
|
||||
|
||||
struct DtoaState;
|
||||
@ -1089,7 +1087,6 @@ class AutoLockForExclusiveAccess
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif /* jscntxt_h */
|
||||
|
@ -697,16 +697,16 @@ BytecodeParser::parse()
|
||||
#ifdef DEBUG
|
||||
|
||||
bool
|
||||
js::ReconstructStackDepth(JSContext *cx, JSScript *script, jsbytecode *pc, uint32_t *depth)
|
||||
js::ReconstructStackDepth(JSContext *cx, JSScript *script, jsbytecode *pc, uint32_t *depth, bool *reachablePC)
|
||||
{
|
||||
BytecodeParser parser(cx, script);
|
||||
if (!parser.parse())
|
||||
return false;
|
||||
|
||||
if (!parser.isReachable(pc))
|
||||
return false;
|
||||
*reachablePC = parser.isReachable(pc);
|
||||
|
||||
*depth = parser.stackDepthAtPC(pc);
|
||||
if (*reachablePC)
|
||||
*depth = parser.stackDepthAtPC(pc);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -358,7 +358,7 @@ StackDefs(JSScript *script, jsbytecode *pc);
|
||||
* false.
|
||||
*/
|
||||
extern bool
|
||||
ReconstructStackDepth(JSContext *cx, JSScript *script, jsbytecode *pc, uint32_t *depth);
|
||||
ReconstructStackDepth(JSContext *cx, JSScript *script, jsbytecode *pc, uint32_t *depth, bool *reachablePC);
|
||||
#endif
|
||||
|
||||
} /* namespace js */
|
||||
|
@ -47,8 +47,6 @@
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4100) /* Silence unreferenced formal parameter warnings */
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355) /* Silence warning about "this" used in base member initializer list */
|
||||
#endif
|
||||
|
||||
namespace js {
|
||||
@ -2072,7 +2070,6 @@ class AutoProtectHeapForCompilation
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif /* vm_Runtime_h */
|
||||
|
@ -674,7 +674,7 @@ CanSkipWrappedJS(nsXPCWrappedJS *wrappedJS)
|
||||
// If traversing wrappedJS wouldn't release it, nor
|
||||
// cause any other objects to be added to the graph, no
|
||||
// need to add it to the graph at all.
|
||||
bool isRootWrappedJS = wrappedJS->GetRootWrapper() == wrappedJS;
|
||||
bool isRootWrappedJS = wrappedJS->IsRootWrapper();
|
||||
if (nsCCUncollectableMarker::sGeneration &&
|
||||
(!obj || !xpc_IsGrayGCThing(obj)) &&
|
||||
!wrappedJS->IsSubjectToFinalization() &&
|
||||
@ -2948,7 +2948,7 @@ XPCJSRuntime::XPCJSRuntime(nsXPConnect* aXPConnect)
|
||||
mVariantRoots(nullptr),
|
||||
mWrappedJSRoots(nullptr),
|
||||
mObjectHolderRoots(nullptr),
|
||||
mWatchdogManager(new WatchdogManager(this)),
|
||||
mWatchdogManager(new WatchdogManager(MOZ_THIS_IN_INITIALIZER_LIST())),
|
||||
mJunkScope(nullptr),
|
||||
mAsyncSnowWhiteFreer(new AsyncFreeSnowWhite())
|
||||
{
|
||||
|
@ -10,9 +10,7 @@
|
||||
#include "jsprf.h"
|
||||
#include "nsCxPusher.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsProxyRelease.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "nsTextFormatter.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
@ -51,15 +49,12 @@ NS_CYCLE_COLLECTION_CLASSNAME(nsXPCWrappedJS)::Traverse
|
||||
cb.NoteJSChild(tmp->GetJSObjectPreserveColor());
|
||||
}
|
||||
|
||||
nsXPCWrappedJS* root = tmp->GetRootWrapper();
|
||||
if (root == tmp) {
|
||||
// The root wrapper keeps the aggregated native object alive.
|
||||
if (tmp->IsRootWrapper()) {
|
||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "aggregated native");
|
||||
cb.NoteXPCOMChild(tmp->GetAggregatedNativeObject());
|
||||
} else {
|
||||
// Non-root wrappers keep their root alive.
|
||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "root");
|
||||
cb.NoteXPCOMChild(static_cast<nsIXPConnectWrappedJS*>(root));
|
||||
cb.NoteXPCOMChild(static_cast<nsIXPConnectWrappedJS*>(tmp->GetRootWrapper()));
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
@ -219,7 +214,7 @@ nsXPCWrappedJS::GetTraceName(JSTracer* trc, char *buf, size_t bufsize)
|
||||
NS_IMETHODIMP
|
||||
nsXPCWrappedJS::GetWeakReference(nsIWeakReference** aInstancePtr)
|
||||
{
|
||||
if (mRoot != this)
|
||||
if (!IsRootWrapper())
|
||||
return mRoot->GetWeakReference(aInstancePtr);
|
||||
|
||||
return nsSupportsWeakReference::GetWeakReference(aInstancePtr);
|
||||
@ -344,7 +339,7 @@ nsXPCWrappedJS::nsXPCWrappedJS(JSContext* cx,
|
||||
nsISupports* aOuter)
|
||||
: mJSObj(aJSObj),
|
||||
mClass(aClass),
|
||||
mRoot(root ? root : this),
|
||||
mRoot(root ? root : MOZ_THIS_IN_INITIALIZER_LIST()),
|
||||
mNext(nullptr),
|
||||
mOuter(root ? nullptr : aOuter)
|
||||
{
|
||||
@ -356,7 +351,7 @@ nsXPCWrappedJS::nsXPCWrappedJS(JSContext* cx,
|
||||
NS_ADDREF(aClass);
|
||||
NS_IF_ADDREF(mOuter);
|
||||
|
||||
if (mRoot != this)
|
||||
if (!IsRootWrapper())
|
||||
NS_ADDREF(mRoot);
|
||||
|
||||
}
|
||||
@ -365,8 +360,7 @@ nsXPCWrappedJS::~nsXPCWrappedJS()
|
||||
{
|
||||
NS_PRECONDITION(0 == mRefCnt, "refcounting error");
|
||||
|
||||
if (mRoot == this) {
|
||||
// Remove this root wrapper from the map
|
||||
if (IsRootWrapper()) {
|
||||
XPCJSRuntime* rt = nsXPConnect::GetRuntimeInstance();
|
||||
JSObject2WrappedJSMap* map = rt->GetWrappedJSMap();
|
||||
if (map)
|
||||
@ -381,8 +375,7 @@ nsXPCWrappedJS::Unlink()
|
||||
if (IsValid()) {
|
||||
XPCJSRuntime* rt = nsXPConnect::GetRuntimeInstance();
|
||||
if (rt) {
|
||||
if (mRoot == this) {
|
||||
// remove this root wrapper from the map
|
||||
if (IsRootWrapper()) {
|
||||
JSObject2WrappedJSMap* map = rt->GetWrappedJSMap();
|
||||
if (map)
|
||||
map->Remove(this);
|
||||
@ -395,7 +388,7 @@ nsXPCWrappedJS::Unlink()
|
||||
mJSObj = nullptr;
|
||||
}
|
||||
|
||||
if (mRoot == this) {
|
||||
if (IsRootWrapper()) {
|
||||
ClearWeakReferences();
|
||||
} else if (mRoot) {
|
||||
// unlink this wrapper
|
||||
@ -551,9 +544,8 @@ nsXPCWrappedJS::DebugDump(int16_t depth)
|
||||
XPC_LOG_ALWAYS(("nsXPCWrappedJS @ %x with mRefCnt = %d", this, mRefCnt.get()));
|
||||
XPC_LOG_INDENT();
|
||||
|
||||
bool isRoot = mRoot == this;
|
||||
XPC_LOG_ALWAYS(("%s wrapper around JSObject @ %x", \
|
||||
isRoot ? "ROOT":"non-root", mJSObj.get()));
|
||||
IsRootWrapper() ? "ROOT":"non-root", mJSObj.get()));
|
||||
char* name;
|
||||
GetClass()->GetInterfaceInfo()->GetName(&name);
|
||||
XPC_LOG_ALWAYS(("interface name is %s", name));
|
||||
@ -565,18 +557,18 @@ nsXPCWrappedJS::DebugDump(int16_t depth)
|
||||
NS_Free(iid);
|
||||
XPC_LOG_ALWAYS(("nsXPCWrappedJSClass @ %x", mClass));
|
||||
|
||||
if (!isRoot)
|
||||
if (!IsRootWrapper())
|
||||
XPC_LOG_OUTDENT();
|
||||
if (mNext) {
|
||||
if (isRoot) {
|
||||
if (IsRootWrapper()) {
|
||||
XPC_LOG_ALWAYS(("Additional wrappers for this object..."));
|
||||
XPC_LOG_INDENT();
|
||||
}
|
||||
mNext->DebugDump(depth);
|
||||
if (isRoot)
|
||||
if (IsRootWrapper())
|
||||
XPC_LOG_OUTDENT();
|
||||
}
|
||||
if (isRoot)
|
||||
if (IsRootWrapper())
|
||||
XPC_LOG_OUTDENT();
|
||||
#endif
|
||||
return NS_OK;
|
||||
|
@ -248,11 +248,6 @@ inline JSObject* GetWNExpandoChain(JSObject *obj)
|
||||
return JS_GetReservedSlot(obj, WN_XRAYEXPANDOCHAIN_SLOT).toObjectOrNull();
|
||||
}
|
||||
|
||||
// We PROMISE to never screw this up.
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable : 4355) // OK to pass "this" in member initializer
|
||||
#endif
|
||||
|
||||
/***************************************************************************
|
||||
****************************************************************************
|
||||
*
|
||||
@ -2502,6 +2497,7 @@ public:
|
||||
nsXPCWrappedJS* Find(REFNSIID aIID);
|
||||
nsXPCWrappedJS* FindInherited(REFNSIID aIID);
|
||||
|
||||
bool IsRootWrapper() const {return mRoot == this;}
|
||||
bool IsValid() const {return mJSObj != nullptr;}
|
||||
void SystemIsBeingShutDown();
|
||||
|
||||
|
@ -5,4 +5,4 @@
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS)
|
||||
|
@ -3573,10 +3573,33 @@ nsDisplayScrollLayer::TryMerge(nsDisplayListBuilder* aBuilder,
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
PropagateClip(nsDisplayListBuilder* aBuilder, const DisplayItemClip& aClip,
|
||||
nsDisplayList* aList)
|
||||
{
|
||||
for (nsDisplayItem* i = aList->GetBottom(); i != nullptr; i = i->GetAbove()) {
|
||||
DisplayItemClip clip(i->GetClip());
|
||||
clip.IntersectWith(aClip);
|
||||
i->SetClip(aBuilder, clip);
|
||||
nsDisplayList* list = i->GetSameCoordinateSystemChildren();
|
||||
if (list) {
|
||||
PropagateClip(aBuilder, aClip, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
nsDisplayScrollLayer::ShouldFlattenAway(nsDisplayListBuilder* aBuilder)
|
||||
{
|
||||
return GetScrollLayerCount() > 1;
|
||||
if (GetScrollLayerCount() > 1) {
|
||||
// Propagate our clip to our children. The clip for the scroll frame is
|
||||
// on this item, but not our child items so that they can draw non-visible
|
||||
// parts of the display port. But if we are flattening we failed and can't
|
||||
// draw the extra content, so it needs to be clipped.
|
||||
PropagateClip(aBuilder, GetClip(), &mList);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
intptr_t
|
||||
|
@ -10,7 +10,6 @@ include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += \
|
||||
$(MOZ_CAIRO_CFLAGS) \
|
||||
$(MOZ_PIXMAN_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_WIDGET_GTK
|
||||
|
@ -29,7 +29,7 @@ nestegg_tstamp_scale
|
||||
nestegg_has_cues
|
||||
nestegg_sniff
|
||||
#endif
|
||||
#ifdef MOZ_VP8
|
||||
#ifdef MOZ_VPX
|
||||
#ifndef MOZ_NATIVE_LIBVPX
|
||||
vpx_codec_control_
|
||||
vpx_codec_dec_init_ver
|
||||
@ -42,10 +42,8 @@ vpx_codec_vp9_dx
|
||||
vpx_img_free
|
||||
vpx_codec_enc_config_set
|
||||
vpx_codec_enc_init_ver
|
||||
#ifdef MOZ_VP8_ENCODER
|
||||
vpx_codec_vp8_cx
|
||||
vpx_codec_vp9_cx
|
||||
#endif
|
||||
vpx_img_set_rect
|
||||
vpx_img_wrap
|
||||
vpx_codec_get_cx_data
|
||||
|
71
layout/reftests/bugs/933264-1-ref.html
Normal file
71
layout/reftests/bugs/933264-1-ref.html
Normal file
@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<title>The Grid in an overflowing div</title>
|
||||
<style type="text/css">
|
||||
html {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
body {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
table {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: 1px solid black;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
tr {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
td {
|
||||
/* top border counts as part of height, but
|
||||
left border doesn't count as part of width.
|
||||
go figure.
|
||||
*/
|
||||
min-height: 99px;
|
||||
height: 99px;
|
||||
max-height: 99px;
|
||||
min-width: 99px;
|
||||
width: 99px;
|
||||
max-width: 99px;
|
||||
padding: 0;
|
||||
border-left: 1px solid black;
|
||||
border-top: 1px solid black;
|
||||
border-right: none;
|
||||
border-bottom: none;
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
var val = 900;
|
||||
function scroll() {
|
||||
var div = document.getElementById('nest');
|
||||
div.scrollLeft = val;
|
||||
div.scrollTop = val;
|
||||
document.documentElement.removeAttribute('class');
|
||||
}
|
||||
|
||||
window.onload = scroll;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="color: red">this text is above the scrolling div. the div below is 300x400</div>
|
||||
<div id="nest" style="overflow: scroll; height: 400px; width: 300px; border: solid 1px black">
|
||||
<div style="background: blue; width: 5000px; height: 5000px;"></div>
|
||||
</div>
|
||||
<div style="color: red">this text is below the scrolling div</div>
|
||||
</body>
|
||||
</html>
|
78
layout/reftests/bugs/933264-1.html
Normal file
78
layout/reftests/bugs/933264-1.html
Normal file
@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<title>The Grid in an overflowing div</title>
|
||||
<style type="text/css">
|
||||
html {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
body {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
table {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: 1px solid black;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
tr {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
td {
|
||||
/* top border counts as part of height, but
|
||||
left border doesn't count as part of width.
|
||||
go figure.
|
||||
*/
|
||||
min-height: 99px;
|
||||
height: 99px;
|
||||
max-height: 99px;
|
||||
min-width: 99px;
|
||||
width: 99px;
|
||||
max-width: 99px;
|
||||
padding: 0;
|
||||
border-left: 1px solid black;
|
||||
border-top: 1px solid black;
|
||||
border-right: none;
|
||||
border-bottom: none;
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
var val = 100;
|
||||
var max = 1000;
|
||||
function scrollmore() {
|
||||
if (val == max) {
|
||||
document.documentElement.removeAttribute('class');
|
||||
return;
|
||||
}
|
||||
var div = document.getElementById('nest');
|
||||
div.scrollLeft = val;
|
||||
div.scrollTop = val;
|
||||
val += 100;
|
||||
document.documentElement.offsetLeft;
|
||||
setTimeout(scrollmore, 500);
|
||||
}
|
||||
|
||||
window.onload = scrollmore;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="color: red">this text is above the scrolling div. the div below is 300x400</div>
|
||||
<div id="nest" style="overflow: scroll; height: 400px; width: 300px; border: solid 1px black">
|
||||
<div style="background: blue; width: 5000px; height: 5000px;">text</div>
|
||||
</div>
|
||||
<div style="color: red">this text is below the scrolling div</div>
|
||||
</body>
|
||||
</html>
|
@ -1783,6 +1783,7 @@ fuzzy-if(cocoaWidget,1,40) == 928607-1.html 928607-1-ref.html
|
||||
== 931464-1.html 931464-1-ref.html
|
||||
== 931853.html 931853-ref.html
|
||||
== 931853-quirks.html 931853-quirks-ref.html
|
||||
fuzzy-if(OSX==10.6,2,30) == 933264-1.html 933264-1-ref.html
|
||||
== 936670-1.svg 936670-1-ref.svg
|
||||
== 941940-1.html 941940-1-ref.html
|
||||
== 942017.html 942017-ref.html
|
||||
|
@ -66,21 +66,11 @@ nsSVGRenderingObserver::StopListening()
|
||||
* benefits/necessity of maintaining a second observer list.
|
||||
*/
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Disable "warning C4355: 'this' : used in base member initializer list".
|
||||
// We can ignore that warning because we know that mElement's constructor
|
||||
// doesn't dereference the pointer passed to it.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4355)
|
||||
#endif
|
||||
nsSVGIDRenderingObserver::nsSVGIDRenderingObserver(nsIURI *aURI,
|
||||
nsIFrame *aFrame,
|
||||
bool aReferenceImage)
|
||||
: mElement(this), mFrame(aFrame),
|
||||
: mElement(MOZ_THIS_IN_INITIALIZER_LIST()), mFrame(aFrame),
|
||||
mFramePresShell(aFrame->PresContext()->PresShell())
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
{
|
||||
// Start watching the target element
|
||||
mElement.Reset(aFrame->GetContent(), aURI, true, aReferenceImage);
|
||||
|
@ -22,10 +22,7 @@ CSRCS += cpu-features.c
|
||||
endif
|
||||
endif
|
||||
|
||||
ASM_OFFSETS = vpx_scale_asm_offsets.asm
|
||||
ifdef MOZ_VP8_ENCODER
|
||||
ASM_OFFSETS += vp8_asm_enc_offsets.asm
|
||||
endif
|
||||
ASM_OFFSETS = vpx_scale_asm_offsets.asm vp8_asm_enc_offsets.asm
|
||||
|
||||
|
||||
ifdef VPX_AS_CONVERSION
|
||||
@ -54,11 +51,7 @@ VPX_OIE_FORMAT := gas
|
||||
endif
|
||||
|
||||
GARBAGE += vpx_scale_asm_offsets.$(OBJ_SUFFIX) vpx_scale_asm_offsets.asm
|
||||
|
||||
ifdef MOZ_VP8_ENCODER
|
||||
|
||||
GARBAGE += vp8_asm_enc_offsets.$(OBJ_SUFFIX) vp8_asm_enc_offsets.asm
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
@ -82,8 +75,6 @@ vpx_scale_asm_offsets.asm: vpx_scale_asm_offsets.s
|
||||
|
||||
GARBAGE += vpx_scale_asm_offsets.s vpx_scale_asm_offsets.asm
|
||||
|
||||
ifdef MOZ_VP8_ENCODER
|
||||
|
||||
vp8_asm_enc_offsets.s: CFLAGS += -DINLINE_ASM
|
||||
|
||||
vp8_asm_enc_offsets.s: $(srcdir)/vp8/encoder/vp8_asm_enc_offsets.c
|
||||
@ -96,9 +87,6 @@ vp8_asm_enc_offsets.asm: vp8_asm_enc_offsets.s
|
||||
|
||||
GARBAGE += vp8_asm_enc_offsets.s vp8_asm_enc_offsets.asm
|
||||
|
||||
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
EXTRA_MDDEPEND_FILES = vp8_asm_enc_offsets.s.pp vp8_asm_enc_offsets.$(OBJ_SUFFIX).pp vpx_scale_asm_offsets.s.pp vpx_scale_asm_offsets.$(OBJ_SUFFIX).pp
|
||||
@ -122,7 +110,7 @@ ifdef VPX_NEED_OBJ_INT_EXTRACT
|
||||
|
||||
# only for MSVC
|
||||
ifdef _MSC_VER
|
||||
NO_PROFILE_GUIDED_OPTIMIZE := vpx_scale_asm_offsets.c
|
||||
NO_PROFILE_GUIDED_OPTIMIZE := vpx_scale_asm_offsets.c vp8_asm_enc_offsets.c
|
||||
endif
|
||||
|
||||
vpx_scale_asm_offsets.asm: vpx_scale_asm_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
|
||||
@ -133,12 +121,6 @@ vpx_scale_asm_offsets.asm: vpx_scale_asm_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
|
||||
# It was generated solely so it could be parsed by obj_int_extract.
|
||||
OBJS := $(filter-out vpx_scale_asm_offsets.$(OBJ_SUFFIX),$(OBJS))
|
||||
|
||||
ifdef MOZ_VP8_ENCODER
|
||||
|
||||
ifdef _MSC_VER
|
||||
NO_PROFILE_GUIDED_OPTIMIZE += vp8_asm_enc_offsets.c
|
||||
endif
|
||||
|
||||
vp8_asm_enc_offsets.asm: vp8_asm_enc_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
|
||||
./$(HOST_PROGRAM) $(VPX_OIE_FORMAT) $< \
|
||||
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
|
||||
@ -147,7 +129,6 @@ vp8_asm_enc_offsets.asm: vp8_asm_enc_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
|
||||
# It was generated solely so it could be parsed by obj_int_extract.
|
||||
OBJS := $(filter-out vp8_asm_enc_offsets.$(OBJ_SUFFIX),$(OBJS))
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
# Workaround a bug of Sun Studio (CR 6963410)
|
||||
|
@ -15,26 +15,16 @@ if CONFIG['VPX_NEED_OBJ_INT_EXTRACT']:
|
||||
|
||||
HOST_PROGRAM = 'host_obj_int_extract'
|
||||
|
||||
SOURCES += files['COMMON']
|
||||
SOURCES += files['SOURCES']
|
||||
|
||||
if CONFIG['MOZ_VP8_ERROR_CONCEALMENT']:
|
||||
if CONFIG['MOZ_VPX_ERROR_CONCEALMENT']:
|
||||
SOURCES += files['ERROR_CONCEALMENT']
|
||||
|
||||
if CONFIG['MOZ_VP8_ENCODER']:
|
||||
SOURCES += files['ENCODER']
|
||||
|
||||
#postproc is only enabled on x86 with asm
|
||||
if CONFIG['VPX_X86_ASM']:
|
||||
SOURCES += files['VP8_POSTPROC']
|
||||
|
||||
if CONFIG['VPX_X86_ASM'] and CONFIG['OS_TARGET'] == 'WINNT':
|
||||
SOURCES += [
|
||||
'vp8/encoder/vp8_asm_enc_offsets.c',
|
||||
'vpx_scale/vpx_scale_asm_offsets.c',
|
||||
]
|
||||
if CONFIG['MOZ_VP8_ENCODER']:
|
||||
SOURCES += [
|
||||
'vp8/encoder/vp8_asm_enc_offsets.c',
|
||||
]
|
||||
|
||||
if CONFIG['VPX_X86_ASM']:
|
||||
SOURCES += files['X86_ASM']
|
||||
@ -47,16 +37,12 @@ if CONFIG['VPX_X86_ASM']:
|
||||
if CONFIG['OS_TARGET'] == 'Darwin':
|
||||
SOURCES += files['AVX2']
|
||||
|
||||
if CONFIG['VPX_X86_ASM'] and CONFIG['MOZ_VP8_ENCODER']:
|
||||
SOURCES += files['X86_ASM_ENCODER']
|
||||
if '64' in CONFIG['OS_TEST']:
|
||||
SOURCES += files['X86-64_ASM_ENCODER']
|
||||
#postproc is only enabled on x86 with asm
|
||||
SOURCES += files['VP8_POSTPROC']
|
||||
|
||||
arm_asm_files = []
|
||||
if CONFIG['VPX_ARM_ASM']:
|
||||
arm_asm_files += files['ARM_ASM']
|
||||
if CONFIG['MOZ_VP8_ENCODER']:
|
||||
arm_asm_files += files['ARM_ASM_ENCODER']
|
||||
|
||||
if CONFIG['VPX_AS_CONVERSION']:
|
||||
GENERATED_SOURCES += [ "%s.%s" % (f, CONFIG['VPX_ASM_SUFFIX'])
|
||||
@ -70,8 +56,7 @@ if CONFIG['VPX_ARM_ASM']:
|
||||
|
||||
# boolhuff_armv5te.asm defines the same functions as boolhuff.c instead of
|
||||
# using RTCD, so we have to make sure we only add one of the two.
|
||||
if CONFIG['MOZ_VP8_ENCODER'] \
|
||||
and 'vp8/encoder/arm/armv5te/boolhuff_armv5te.asm' not in arm_asm_files:
|
||||
if 'vp8/encoder/arm/armv5te/boolhuff_armv5te.asm' not in arm_asm_files:
|
||||
SOURCES += [
|
||||
'vp8/encoder/boolhuff.c',
|
||||
]
|
||||
|
@ -1,238 +1,242 @@
|
||||
files = {
|
||||
'ARM_ASM': ['vp8/common/arm/armv6/bilinearfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/copymem16x16_v6.asm',
|
||||
'vp8/common/arm/armv6/copymem8x4_v6.asm',
|
||||
'vp8/common/arm/armv6/copymem8x8_v6.asm',
|
||||
'vp8/common/arm/armv6/dc_only_idct_add_v6.asm',
|
||||
'vp8/common/arm/armv6/dequant_idct_v6.asm',
|
||||
'vp8/common/arm/armv6/dequantize_v6.asm',
|
||||
'vp8/common/arm/armv6/filter_v6.asm',
|
||||
'vp8/common/arm/armv6/idct_blk_v6.c',
|
||||
'vp8/common/arm/armv6/idct_v6.asm',
|
||||
'vp8/common/arm/armv6/intra4x4_predict_v6.asm',
|
||||
'vp8/common/arm/armv6/iwalsh_v6.asm',
|
||||
'vp8/common/arm/armv6/loopfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/simpleloopfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/sixtappredict8x4_v6.asm',
|
||||
'vp8/common/arm/armv6/vp8_sad16x16_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance16x16_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance8x8_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_h_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_hv_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_v_armv6.asm',
|
||||
'vp8/common/arm/bilinearfilter_arm.c',
|
||||
'vp8/common/arm/dequantize_arm.c',
|
||||
'vp8/common/arm/filter_arm.c',
|
||||
'vp8/common/arm/loopfilter_arm.c',
|
||||
'vp8/common/arm/neon/bilinearpredict16x16_neon.asm',
|
||||
'vp8/common/arm/neon/bilinearpredict4x4_neon.asm',
|
||||
'vp8/common/arm/neon/bilinearpredict8x4_neon.asm',
|
||||
'vp8/common/arm/neon/bilinearpredict8x8_neon.asm',
|
||||
'vp8/common/arm/neon/buildintrapredictorsmby_neon.asm',
|
||||
'vp8/common/arm/neon/copymem16x16_neon.asm',
|
||||
'vp8/common/arm/neon/copymem8x4_neon.asm',
|
||||
'vp8/common/arm/neon/copymem8x8_neon.asm',
|
||||
'vp8/common/arm/neon/dc_only_idct_add_neon.asm',
|
||||
'vp8/common/arm/neon/dequant_idct_neon.asm',
|
||||
'vp8/common/arm/neon/dequantizeb_neon.asm',
|
||||
'vp8/common/arm/neon/idct_blk_neon.c',
|
||||
'vp8/common/arm/neon/idct_dequant_0_2x_neon.asm',
|
||||
'vp8/common/arm/neon/idct_dequant_full_2x_neon.asm',
|
||||
'vp8/common/arm/neon/iwalsh_neon.asm',
|
||||
'vp8/common/arm/neon/loopfilter_neon.asm',
|
||||
'vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.asm',
|
||||
'vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.asm',
|
||||
'vp8/common/arm/neon/mbloopfilter_neon.asm',
|
||||
'vp8/common/arm/neon/sad16_neon.asm',
|
||||
'vp8/common/arm/neon/sad8_neon.asm',
|
||||
'vp8/common/arm/neon/save_reg_neon.asm',
|
||||
'vp8/common/arm/neon/shortidct4x4llm_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict16x16_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict4x4_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict8x4_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict8x8_neon.asm',
|
||||
'vp8/common/arm/neon/variance_neon.asm',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance16x16_neon.asm',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance16x16s_neon.asm',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance8x8_neon.asm',
|
||||
'vp8/common/arm/reconintra_arm.c',
|
||||
'vp8/common/arm/variance_arm.c',
|
||||
'vp9/common/arm/neon/vp9_avg_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve8_avg_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve8_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve_neon.c',
|
||||
'vp9/common/arm/neon/vp9_copy_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_dc_only_idct_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_idct16x16_neon.c',
|
||||
'vp9/common/arm/neon/vp9_loopfilter_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_mb_lpf_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_save_reg_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct16x16_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct16x16_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct32x32_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct32x32_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct4x4_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct4x4_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct8x8_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct8x8_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_iht4x4_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_iht8x8_add_neon.asm',
|
||||
'vpx_ports/arm_cpudetect.c',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_copy_y_neon.asm',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_copyframe_func_neon.asm',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_copysrcframe_func_neon.asm',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_extendframeborders_neon.asm',
|
||||
'vpx_scale/arm/neon/yv12extend_arm.c'],
|
||||
'ARM_ASM_ENCODER': ['vp8/encoder/arm/armv5te/boolhuff_armv5te.asm',
|
||||
'vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm',
|
||||
'vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm',
|
||||
'vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_fast_quantize_b_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_mse16x16_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_short_fdct4x4_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_subtract_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/walsh_v6.asm',
|
||||
'vp8/encoder/arm/boolhuff_arm.c',
|
||||
'vp8/encoder/arm/dct_arm.c',
|
||||
'vp8/encoder/arm/neon/fastquantizeb_neon.asm',
|
||||
'vp8/encoder/arm/neon/picklpf_arm.c',
|
||||
'vp8/encoder/arm/neon/shortfdct_neon.asm',
|
||||
'vp8/encoder/arm/neon/subtract_neon.asm',
|
||||
'vp8/encoder/arm/neon/vp8_memcpy_neon.asm',
|
||||
'vp8/encoder/arm/neon/vp8_mse16x16_neon.asm',
|
||||
'vp8/encoder/arm/neon/vp8_shortwalsh4x4_neon.asm',
|
||||
'vp8/encoder/arm/quantize_arm.c'],
|
||||
'ARM_ASM': [
|
||||
'vp8/common/arm/armv6/bilinearfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/copymem16x16_v6.asm',
|
||||
'vp8/common/arm/armv6/copymem8x4_v6.asm',
|
||||
'vp8/common/arm/armv6/copymem8x8_v6.asm',
|
||||
'vp8/common/arm/armv6/dc_only_idct_add_v6.asm',
|
||||
'vp8/common/arm/armv6/dequant_idct_v6.asm',
|
||||
'vp8/common/arm/armv6/dequantize_v6.asm',
|
||||
'vp8/common/arm/armv6/filter_v6.asm',
|
||||
'vp8/common/arm/armv6/idct_blk_v6.c',
|
||||
'vp8/common/arm/armv6/idct_v6.asm',
|
||||
'vp8/common/arm/armv6/intra4x4_predict_v6.asm',
|
||||
'vp8/common/arm/armv6/iwalsh_v6.asm',
|
||||
'vp8/common/arm/armv6/loopfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/simpleloopfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/sixtappredict8x4_v6.asm',
|
||||
'vp8/common/arm/armv6/vp8_sad16x16_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance16x16_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance8x8_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_h_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_hv_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_v_armv6.asm',
|
||||
'vp8/common/arm/bilinearfilter_arm.c',
|
||||
'vp8/common/arm/dequantize_arm.c',
|
||||
'vp8/common/arm/filter_arm.c',
|
||||
'vp8/common/arm/loopfilter_arm.c',
|
||||
'vp8/common/arm/neon/bilinearpredict16x16_neon.asm',
|
||||
'vp8/common/arm/neon/bilinearpredict4x4_neon.asm',
|
||||
'vp8/common/arm/neon/bilinearpredict8x4_neon.asm',
|
||||
'vp8/common/arm/neon/bilinearpredict8x8_neon.asm',
|
||||
'vp8/common/arm/neon/buildintrapredictorsmby_neon.asm',
|
||||
'vp8/common/arm/neon/copymem16x16_neon.asm',
|
||||
'vp8/common/arm/neon/copymem8x4_neon.asm',
|
||||
'vp8/common/arm/neon/copymem8x8_neon.asm',
|
||||
'vp8/common/arm/neon/dc_only_idct_add_neon.asm',
|
||||
'vp8/common/arm/neon/dequant_idct_neon.asm',
|
||||
'vp8/common/arm/neon/dequantizeb_neon.asm',
|
||||
'vp8/common/arm/neon/idct_blk_neon.c',
|
||||
'vp8/common/arm/neon/idct_dequant_0_2x_neon.asm',
|
||||
'vp8/common/arm/neon/idct_dequant_full_2x_neon.asm',
|
||||
'vp8/common/arm/neon/iwalsh_neon.asm',
|
||||
'vp8/common/arm/neon/loopfilter_neon.asm',
|
||||
'vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.asm',
|
||||
'vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.asm',
|
||||
'vp8/common/arm/neon/mbloopfilter_neon.asm',
|
||||
'vp8/common/arm/neon/sad16_neon.asm',
|
||||
'vp8/common/arm/neon/sad8_neon.asm',
|
||||
'vp8/common/arm/neon/save_reg_neon.asm',
|
||||
'vp8/common/arm/neon/shortidct4x4llm_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict16x16_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict4x4_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict8x4_neon.asm',
|
||||
'vp8/common/arm/neon/sixtappredict8x8_neon.asm',
|
||||
'vp8/common/arm/neon/variance_neon.asm',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance16x16_neon.asm',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance16x16s_neon.asm',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance8x8_neon.asm',
|
||||
'vp8/common/arm/reconintra_arm.c',
|
||||
'vp8/common/arm/variance_arm.c',
|
||||
'vp8/encoder/arm/armv5te/boolhuff_armv5te.asm',
|
||||
'vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm',
|
||||
'vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm',
|
||||
'vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_fast_quantize_b_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_mse16x16_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_short_fdct4x4_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_subtract_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/walsh_v6.asm',
|
||||
'vp8/encoder/arm/boolhuff_arm.c',
|
||||
'vp8/encoder/arm/dct_arm.c',
|
||||
'vp8/encoder/arm/neon/fastquantizeb_neon.asm',
|
||||
'vp8/encoder/arm/neon/picklpf_arm.c',
|
||||
'vp8/encoder/arm/neon/shortfdct_neon.asm',
|
||||
'vp8/encoder/arm/neon/subtract_neon.asm',
|
||||
'vp8/encoder/arm/neon/vp8_memcpy_neon.asm',
|
||||
'vp8/encoder/arm/neon/vp8_mse16x16_neon.asm',
|
||||
'vp8/encoder/arm/neon/vp8_shortwalsh4x4_neon.asm',
|
||||
'vp8/encoder/arm/quantize_arm.c',
|
||||
'vp9/common/arm/neon/vp9_avg_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve8_avg_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve8_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve_neon.c',
|
||||
'vp9/common/arm/neon/vp9_copy_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_dc_only_idct_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_idct16x16_neon.c',
|
||||
'vp9/common/arm/neon/vp9_loopfilter_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_mb_lpf_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_save_reg_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct16x16_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct16x16_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct32x32_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct32x32_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct4x4_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct4x4_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct8x8_1_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_idct8x8_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_iht4x4_add_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_short_iht8x8_add_neon.asm',
|
||||
'vpx_ports/arm_cpudetect.c',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_copy_y_neon.asm',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_copyframe_func_neon.asm',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_copysrcframe_func_neon.asm',
|
||||
'vpx_scale/arm/neon/vp8_vpxyv12_extendframeborders_neon.asm',
|
||||
'vpx_scale/arm/neon/yv12extend_arm.c'
|
||||
],
|
||||
'AVX2': ['vp9/common/x86/vp9_loopfilter_intrin_avx2.c'],
|
||||
'COMMON': ['vp8/common/alloccommon.c',
|
||||
'vp8/common/blockd.c',
|
||||
'vp8/common/debugmodes.c',
|
||||
'vp8/common/dequantize.c',
|
||||
'vp8/common/entropy.c',
|
||||
'vp8/common/entropymode.c',
|
||||
'vp8/common/entropymv.c',
|
||||
'vp8/common/extend.c',
|
||||
'vp8/common/filter.c',
|
||||
'vp8/common/findnearmv.c',
|
||||
'vp8/common/generic/systemdependent.c',
|
||||
'vp8/common/idct_blk.c',
|
||||
'vp8/common/idctllm.c',
|
||||
'vp8/common/loopfilter.c',
|
||||
'vp8/common/loopfilter_filters.c',
|
||||
'vp8/common/mbpitch.c',
|
||||
'vp8/common/modecont.c',
|
||||
'vp8/common/quant_common.c',
|
||||
'vp8/common/reconinter.c',
|
||||
'vp8/common/reconintra.c',
|
||||
'vp8/common/reconintra4x4.c',
|
||||
'vp8/common/rtcd.c',
|
||||
'vp8/common/sad_c.c',
|
||||
'vp8/common/setupintrarecon.c',
|
||||
'vp8/common/swapyv12buffer.c',
|
||||
'vp8/common/treecoder.c',
|
||||
'vp8/common/variance_c.c',
|
||||
'vp8/decoder/dboolhuff.c',
|
||||
'vp8/decoder/decodemv.c',
|
||||
'vp8/decoder/decodframe.c',
|
||||
'vp8/decoder/detokenize.c',
|
||||
'vp8/decoder/onyxd_if.c',
|
||||
'vp8/decoder/threading.c',
|
||||
'vp8/vp8_dx_iface.c',
|
||||
'vp9/common/generic/vp9_systemdependent.c',
|
||||
'vp9/common/vp9_alloccommon.c',
|
||||
'vp9/common/vp9_common_data.c',
|
||||
'vp9/common/vp9_convolve.c',
|
||||
'vp9/common/vp9_debugmodes.c',
|
||||
'vp9/common/vp9_entropy.c',
|
||||
'vp9/common/vp9_entropymode.c',
|
||||
'vp9/common/vp9_entropymv.c',
|
||||
'vp9/common/vp9_extend.c',
|
||||
'vp9/common/vp9_filter.c',
|
||||
'vp9/common/vp9_findnearmv.c',
|
||||
'vp9/common/vp9_idct.c',
|
||||
'vp9/common/vp9_loopfilter.c',
|
||||
'vp9/common/vp9_loopfilter_filters.c',
|
||||
'vp9/common/vp9_mvref_common.c',
|
||||
'vp9/common/vp9_pred_common.c',
|
||||
'vp9/common/vp9_quant_common.c',
|
||||
'vp9/common/vp9_reconinter.c',
|
||||
'vp9/common/vp9_reconintra.c',
|
||||
'vp9/common/vp9_rtcd.c',
|
||||
'vp9/common/vp9_scale.c',
|
||||
'vp9/common/vp9_scan.c',
|
||||
'vp9/common/vp9_seg_common.c',
|
||||
'vp9/common/vp9_tile_common.c',
|
||||
'vp9/common/vp9_treecoder.c',
|
||||
'vp9/decoder/vp9_dboolhuff.c',
|
||||
'vp9/decoder/vp9_decodemv.c',
|
||||
'vp9/decoder/vp9_decodframe.c',
|
||||
'vp9/decoder/vp9_detokenize.c',
|
||||
'vp9/decoder/vp9_dsubexp.c',
|
||||
'vp9/decoder/vp9_onyxd_if.c',
|
||||
'vp9/decoder/vp9_thread.c',
|
||||
'vp9/vp9_dx_iface.c',
|
||||
'vpx/src/vpx_codec.c',
|
||||
'vpx/src/vpx_decoder.c',
|
||||
'vpx/src/vpx_encoder.c',
|
||||
'vpx/src/vpx_image.c',
|
||||
'vpx_mem/vpx_mem.c',
|
||||
'vpx_scale/generic/gen_scalers.c',
|
||||
'vpx_scale/generic/vpx_scale.c',
|
||||
'vpx_scale/generic/yv12config.c',
|
||||
'vpx_scale/generic/yv12extend.c',
|
||||
'vpx_scale/vpx_scale_rtcd.c'],
|
||||
'ENCODER': ['vp8/encoder/bitstream.c',
|
||||
'vp8/encoder/dct.c',
|
||||
'vp8/encoder/denoising.c',
|
||||
'vp8/encoder/encodeframe.c',
|
||||
'vp8/encoder/encodeintra.c',
|
||||
'vp8/encoder/encodemb.c',
|
||||
'vp8/encoder/encodemv.c',
|
||||
'vp8/encoder/ethreading.c',
|
||||
'vp8/encoder/firstpass.c',
|
||||
'vp8/encoder/lookahead.c',
|
||||
'vp8/encoder/mcomp.c',
|
||||
'vp8/encoder/modecosts.c',
|
||||
'vp8/encoder/mr_dissim.c',
|
||||
'vp8/encoder/onyx_if.c',
|
||||
'vp8/encoder/pickinter.c',
|
||||
'vp8/encoder/picklpf.c',
|
||||
'vp8/encoder/psnr.c',
|
||||
'vp8/encoder/quantize.c',
|
||||
'vp8/encoder/ratectrl.c',
|
||||
'vp8/encoder/rdopt.c',
|
||||
'vp8/encoder/segmentation.c',
|
||||
'vp8/encoder/temporal_filter.c',
|
||||
'vp8/encoder/tokenize.c',
|
||||
'vp8/encoder/treewriter.c',
|
||||
'vp8/vp8_cx_iface.c',
|
||||
'vp9/encoder/vp9_bitstream.c',
|
||||
'vp9/encoder/vp9_boolhuff.c',
|
||||
'vp9/encoder/vp9_dct.c',
|
||||
'vp9/encoder/vp9_encodeframe.c',
|
||||
'vp9/encoder/vp9_encodeintra.c',
|
||||
'vp9/encoder/vp9_encodemb.c',
|
||||
'vp9/encoder/vp9_encodemv.c',
|
||||
'vp9/encoder/vp9_firstpass.c',
|
||||
'vp9/encoder/vp9_lookahead.c',
|
||||
'vp9/encoder/vp9_mbgraph.c',
|
||||
'vp9/encoder/vp9_mcomp.c',
|
||||
'vp9/encoder/vp9_modecosts.c',
|
||||
'vp9/encoder/vp9_onyx_if.c',
|
||||
'vp9/encoder/vp9_picklpf.c',
|
||||
'vp9/encoder/vp9_psnr.c',
|
||||
'vp9/encoder/vp9_quantize.c',
|
||||
'vp9/encoder/vp9_ratectrl.c',
|
||||
'vp9/encoder/vp9_rdopt.c',
|
||||
'vp9/encoder/vp9_sad_c.c',
|
||||
'vp9/encoder/vp9_segmentation.c',
|
||||
'vp9/encoder/vp9_subexp.c',
|
||||
'vp9/encoder/vp9_temporal_filter.c',
|
||||
'vp9/encoder/vp9_tokenize.c',
|
||||
'vp9/encoder/vp9_treewriter.c',
|
||||
'vp9/encoder/vp9_vaq.c',
|
||||
'vp9/encoder/vp9_variance_c.c',
|
||||
'vp9/vp9_cx_iface.c',
|
||||
'vpx/src/svc_encodeframe.c'],
|
||||
'SOURCES': [
|
||||
'vp8/common/alloccommon.c',
|
||||
'vp8/common/blockd.c',
|
||||
'vp8/common/debugmodes.c',
|
||||
'vp8/common/dequantize.c',
|
||||
'vp8/common/entropy.c',
|
||||
'vp8/common/entropymode.c',
|
||||
'vp8/common/entropymv.c',
|
||||
'vp8/common/extend.c',
|
||||
'vp8/common/filter.c',
|
||||
'vp8/common/findnearmv.c',
|
||||
'vp8/common/generic/systemdependent.c',
|
||||
'vp8/common/idct_blk.c',
|
||||
'vp8/common/idctllm.c',
|
||||
'vp8/common/loopfilter.c',
|
||||
'vp8/common/loopfilter_filters.c',
|
||||
'vp8/common/mbpitch.c',
|
||||
'vp8/common/modecont.c',
|
||||
'vp8/common/quant_common.c',
|
||||
'vp8/common/reconinter.c',
|
||||
'vp8/common/reconintra.c',
|
||||
'vp8/common/reconintra4x4.c',
|
||||
'vp8/common/rtcd.c',
|
||||
'vp8/common/sad_c.c',
|
||||
'vp8/common/setupintrarecon.c',
|
||||
'vp8/common/swapyv12buffer.c',
|
||||
'vp8/common/treecoder.c',
|
||||
'vp8/common/variance_c.c',
|
||||
'vp8/decoder/dboolhuff.c',
|
||||
'vp8/decoder/decodemv.c',
|
||||
'vp8/decoder/decodframe.c',
|
||||
'vp8/decoder/detokenize.c',
|
||||
'vp8/decoder/onyxd_if.c',
|
||||
'vp8/decoder/threading.c',
|
||||
'vp8/encoder/bitstream.c',
|
||||
'vp8/encoder/dct.c',
|
||||
'vp8/encoder/denoising.c',
|
||||
'vp8/encoder/encodeframe.c',
|
||||
'vp8/encoder/encodeintra.c',
|
||||
'vp8/encoder/encodemb.c',
|
||||
'vp8/encoder/encodemv.c',
|
||||
'vp8/encoder/ethreading.c',
|
||||
'vp8/encoder/firstpass.c',
|
||||
'vp8/encoder/lookahead.c',
|
||||
'vp8/encoder/mcomp.c',
|
||||
'vp8/encoder/modecosts.c',
|
||||
'vp8/encoder/mr_dissim.c',
|
||||
'vp8/encoder/onyx_if.c',
|
||||
'vp8/encoder/pickinter.c',
|
||||
'vp8/encoder/picklpf.c',
|
||||
'vp8/encoder/psnr.c',
|
||||
'vp8/encoder/quantize.c',
|
||||
'vp8/encoder/ratectrl.c',
|
||||
'vp8/encoder/rdopt.c',
|
||||
'vp8/encoder/segmentation.c',
|
||||
'vp8/encoder/temporal_filter.c',
|
||||
'vp8/encoder/tokenize.c',
|
||||
'vp8/encoder/treewriter.c',
|
||||
'vp8/vp8_cx_iface.c',
|
||||
'vp8/vp8_dx_iface.c',
|
||||
'vp9/common/generic/vp9_systemdependent.c',
|
||||
'vp9/common/vp9_alloccommon.c',
|
||||
'vp9/common/vp9_common_data.c',
|
||||
'vp9/common/vp9_convolve.c',
|
||||
'vp9/common/vp9_debugmodes.c',
|
||||
'vp9/common/vp9_entropy.c',
|
||||
'vp9/common/vp9_entropymode.c',
|
||||
'vp9/common/vp9_entropymv.c',
|
||||
'vp9/common/vp9_extend.c',
|
||||
'vp9/common/vp9_filter.c',
|
||||
'vp9/common/vp9_findnearmv.c',
|
||||
'vp9/common/vp9_idct.c',
|
||||
'vp9/common/vp9_loopfilter.c',
|
||||
'vp9/common/vp9_loopfilter_filters.c',
|
||||
'vp9/common/vp9_mvref_common.c',
|
||||
'vp9/common/vp9_pred_common.c',
|
||||
'vp9/common/vp9_quant_common.c',
|
||||
'vp9/common/vp9_reconinter.c',
|
||||
'vp9/common/vp9_reconintra.c',
|
||||
'vp9/common/vp9_rtcd.c',
|
||||
'vp9/common/vp9_scale.c',
|
||||
'vp9/common/vp9_scan.c',
|
||||
'vp9/common/vp9_seg_common.c',
|
||||
'vp9/common/vp9_tile_common.c',
|
||||
'vp9/common/vp9_treecoder.c',
|
||||
'vp9/decoder/vp9_dboolhuff.c',
|
||||
'vp9/decoder/vp9_decodemv.c',
|
||||
'vp9/decoder/vp9_decodframe.c',
|
||||
'vp9/decoder/vp9_detokenize.c',
|
||||
'vp9/decoder/vp9_dsubexp.c',
|
||||
'vp9/decoder/vp9_onyxd_if.c',
|
||||
'vp9/decoder/vp9_thread.c',
|
||||
'vp9/encoder/vp9_bitstream.c',
|
||||
'vp9/encoder/vp9_boolhuff.c',
|
||||
'vp9/encoder/vp9_dct.c',
|
||||
'vp9/encoder/vp9_encodeframe.c',
|
||||
'vp9/encoder/vp9_encodeintra.c',
|
||||
'vp9/encoder/vp9_encodemb.c',
|
||||
'vp9/encoder/vp9_encodemv.c',
|
||||
'vp9/encoder/vp9_firstpass.c',
|
||||
'vp9/encoder/vp9_lookahead.c',
|
||||
'vp9/encoder/vp9_mbgraph.c',
|
||||
'vp9/encoder/vp9_mcomp.c',
|
||||
'vp9/encoder/vp9_modecosts.c',
|
||||
'vp9/encoder/vp9_onyx_if.c',
|
||||
'vp9/encoder/vp9_picklpf.c',
|
||||
'vp9/encoder/vp9_psnr.c',
|
||||
'vp9/encoder/vp9_quantize.c',
|
||||
'vp9/encoder/vp9_ratectrl.c',
|
||||
'vp9/encoder/vp9_rdopt.c',
|
||||
'vp9/encoder/vp9_sad_c.c',
|
||||
'vp9/encoder/vp9_segmentation.c',
|
||||
'vp9/encoder/vp9_subexp.c',
|
||||
'vp9/encoder/vp9_temporal_filter.c',
|
||||
'vp9/encoder/vp9_tokenize.c',
|
||||
'vp9/encoder/vp9_treewriter.c',
|
||||
'vp9/encoder/vp9_vaq.c',
|
||||
'vp9/encoder/vp9_variance_c.c',
|
||||
'vp9/vp9_cx_iface.c',
|
||||
'vp9/vp9_dx_iface.c',
|
||||
'vpx/src/svc_encodeframe.c',
|
||||
'vpx/src/vpx_codec.c',
|
||||
'vpx/src/vpx_decoder.c',
|
||||
'vpx/src/vpx_encoder.c',
|
||||
'vpx/src/vpx_image.c',
|
||||
'vpx_mem/vpx_mem.c',
|
||||
'vpx_scale/generic/gen_scalers.c',
|
||||
'vpx_scale/generic/vpx_scale.c',
|
||||
'vpx_scale/generic/yv12config.c',
|
||||
'vpx_scale/generic/yv12extend.c',
|
||||
'vpx_scale/vpx_scale_rtcd.c'
|
||||
],
|
||||
'ERROR_CONCEALMENT': ['vp8/decoder/error_concealment.c'],
|
||||
'EXPORTS': ['vpx/vp8.h',
|
||||
'vpx/vp8cx.h',
|
||||
@ -253,81 +257,83 @@ files = {
|
||||
'VP8_POSTPROC': ['vp8/common/mfqe.c', 'vp8/common/postproc.c'],
|
||||
'VP9_POSTPROC': ['vp9/common/vp9_postproc.c'],
|
||||
'X86-64_ASM': ['third_party/x86inc/x86inc.asm',
|
||||
'vp8/common/x86/loopfilter_block_sse2.asm'],
|
||||
'X86-64_ASM_ENCODER': ['vp9/encoder/x86/vp9_quantize_ssse3.asm'],
|
||||
'X86_ASM': ['vp8/common/x86/dequantize_mmx.asm',
|
||||
'vp8/common/x86/filter_x86.c',
|
||||
'vp8/common/x86/idct_blk_mmx.c',
|
||||
'vp8/common/x86/idct_blk_sse2.c',
|
||||
'vp8/common/x86/idctllm_mmx.asm',
|
||||
'vp8/common/x86/idctllm_sse2.asm',
|
||||
'vp8/common/x86/iwalsh_mmx.asm',
|
||||
'vp8/common/x86/iwalsh_sse2.asm',
|
||||
'vp8/common/x86/loopfilter_mmx.asm',
|
||||
'vp8/common/x86/loopfilter_sse2.asm',
|
||||
'vp8/common/x86/loopfilter_x86.c',
|
||||
'vp8/common/x86/mfqe_sse2.asm',
|
||||
'vp8/common/x86/postproc_mmx.asm',
|
||||
'vp8/common/x86/postproc_sse2.asm',
|
||||
'vp8/common/x86/postproc_x86.c',
|
||||
'vp8/common/x86/recon_mmx.asm',
|
||||
'vp8/common/x86/recon_sse2.asm',
|
||||
'vp8/common/x86/recon_wrapper_sse2.c',
|
||||
'vp8/common/x86/sad_mmx.asm',
|
||||
'vp8/common/x86/sad_sse2.asm',
|
||||
'vp8/common/x86/sad_sse3.asm',
|
||||
'vp8/common/x86/sad_sse4.asm',
|
||||
'vp8/common/x86/sad_ssse3.asm',
|
||||
'vp8/common/x86/subpixel_mmx.asm',
|
||||
'vp8/common/x86/subpixel_sse2.asm',
|
||||
'vp8/common/x86/subpixel_ssse3.asm',
|
||||
'vp8/common/x86/variance_impl_mmx.asm',
|
||||
'vp8/common/x86/variance_impl_sse2.asm',
|
||||
'vp8/common/x86/variance_impl_ssse3.asm',
|
||||
'vp8/common/x86/variance_mmx.c',
|
||||
'vp8/common/x86/variance_sse2.c',
|
||||
'vp8/common/x86/variance_ssse3.c',
|
||||
'vp8/common/x86/vp8_asm_stubs.c',
|
||||
'vp9/common/x86/vp9_asm_stubs.c',
|
||||
'vp9/common/x86/vp9_copy_sse2.asm',
|
||||
'vp9/common/x86/vp9_idct_intrin_sse2.c',
|
||||
'vp9/common/x86/vp9_intrapred_sse2.asm',
|
||||
'vp9/common/x86/vp9_intrapred_ssse3.asm',
|
||||
'vp9/common/x86/vp9_loopfilter_intrin_sse2.c',
|
||||
'vp9/common/x86/vp9_loopfilter_mmx.asm',
|
||||
'vp9/common/x86/vp9_subpixel_8t_sse2.asm',
|
||||
'vp9/common/x86/vp9_subpixel_8t_ssse3.asm',
|
||||
'vpx_ports/emms.asm',
|
||||
'vpx_ports/x86_cpuid.c'],
|
||||
'X86_ASM_ENCODER': ['vp8/encoder/x86/dct_mmx.asm',
|
||||
'vp8/encoder/x86/dct_sse2.asm',
|
||||
'vp8/encoder/x86/denoising_sse2.c',
|
||||
'vp8/encoder/x86/encodeopt.asm',
|
||||
'vp8/encoder/x86/fwalsh_sse2.asm',
|
||||
'vp8/encoder/x86/quantize_mmx.asm',
|
||||
'vp8/encoder/x86/quantize_sse2.c',
|
||||
'vp8/encoder/x86/quantize_sse4.asm',
|
||||
'vp8/encoder/x86/quantize_ssse3.asm',
|
||||
'vp8/encoder/x86/subtract_mmx.asm',
|
||||
'vp8/encoder/x86/subtract_sse2.asm',
|
||||
'vp8/encoder/x86/temporal_filter_apply_sse2.asm',
|
||||
'vp8/encoder/x86/vp8_enc_stubs_mmx.c',
|
||||
'vp8/encoder/x86/vp8_enc_stubs_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct32x32_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct_sse2.c',
|
||||
'vp9/encoder/x86/vp9_error_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad4d_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad_mmx.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse3.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse4.asm',
|
||||
'vp9/encoder/x86/vp9_sad_ssse3.asm',
|
||||
'vp9/encoder/x86/vp9_subpel_variance.asm',
|
||||
'vp9/encoder/x86/vp9_subpel_variance_impl_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_subtract_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_temporal_filter_apply_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_variance_impl_mmx.asm',
|
||||
'vp9/encoder/x86/vp9_variance_impl_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_variance_mmx.c',
|
||||
'vp9/encoder/x86/vp9_variance_sse2.c']
|
||||
'vp8/common/x86/loopfilter_block_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_quantize_ssse3.asm'],
|
||||
'X86_ASM': [
|
||||
'vp8/common/x86/dequantize_mmx.asm',
|
||||
'vp8/common/x86/filter_x86.c',
|
||||
'vp8/common/x86/idct_blk_mmx.c',
|
||||
'vp8/common/x86/idct_blk_sse2.c',
|
||||
'vp8/common/x86/idctllm_mmx.asm',
|
||||
'vp8/common/x86/idctllm_sse2.asm',
|
||||
'vp8/common/x86/iwalsh_mmx.asm',
|
||||
'vp8/common/x86/iwalsh_sse2.asm',
|
||||
'vp8/common/x86/loopfilter_mmx.asm',
|
||||
'vp8/common/x86/loopfilter_sse2.asm',
|
||||
'vp8/common/x86/loopfilter_x86.c',
|
||||
'vp8/common/x86/mfqe_sse2.asm',
|
||||
'vp8/common/x86/postproc_mmx.asm',
|
||||
'vp8/common/x86/postproc_sse2.asm',
|
||||
'vp8/common/x86/postproc_x86.c',
|
||||
'vp8/common/x86/recon_mmx.asm',
|
||||
'vp8/common/x86/recon_sse2.asm',
|
||||
'vp8/common/x86/recon_wrapper_sse2.c',
|
||||
'vp8/common/x86/sad_mmx.asm',
|
||||
'vp8/common/x86/sad_sse2.asm',
|
||||
'vp8/common/x86/sad_sse3.asm',
|
||||
'vp8/common/x86/sad_sse4.asm',
|
||||
'vp8/common/x86/sad_ssse3.asm',
|
||||
'vp8/common/x86/subpixel_mmx.asm',
|
||||
'vp8/common/x86/subpixel_sse2.asm',
|
||||
'vp8/common/x86/subpixel_ssse3.asm',
|
||||
'vp8/common/x86/variance_impl_mmx.asm',
|
||||
'vp8/common/x86/variance_impl_sse2.asm',
|
||||
'vp8/common/x86/variance_impl_ssse3.asm',
|
||||
'vp8/common/x86/variance_mmx.c',
|
||||
'vp8/common/x86/variance_sse2.c',
|
||||
'vp8/common/x86/variance_ssse3.c',
|
||||
'vp8/common/x86/vp8_asm_stubs.c',
|
||||
'vp8/encoder/x86/dct_mmx.asm',
|
||||
'vp8/encoder/x86/dct_sse2.asm',
|
||||
'vp8/encoder/x86/denoising_sse2.c',
|
||||
'vp8/encoder/x86/encodeopt.asm',
|
||||
'vp8/encoder/x86/fwalsh_sse2.asm',
|
||||
'vp8/encoder/x86/quantize_mmx.asm',
|
||||
'vp8/encoder/x86/quantize_sse2.c',
|
||||
'vp8/encoder/x86/quantize_sse4.asm',
|
||||
'vp8/encoder/x86/quantize_ssse3.asm',
|
||||
'vp8/encoder/x86/subtract_mmx.asm',
|
||||
'vp8/encoder/x86/subtract_sse2.asm',
|
||||
'vp8/encoder/x86/temporal_filter_apply_sse2.asm',
|
||||
'vp8/encoder/x86/vp8_enc_stubs_mmx.c',
|
||||
'vp8/encoder/x86/vp8_enc_stubs_sse2.c',
|
||||
'vp9/common/x86/vp9_asm_stubs.c',
|
||||
'vp9/common/x86/vp9_copy_sse2.asm',
|
||||
'vp9/common/x86/vp9_idct_intrin_sse2.c',
|
||||
'vp9/common/x86/vp9_intrapred_sse2.asm',
|
||||
'vp9/common/x86/vp9_intrapred_ssse3.asm',
|
||||
'vp9/common/x86/vp9_loopfilter_intrin_sse2.c',
|
||||
'vp9/common/x86/vp9_loopfilter_mmx.asm',
|
||||
'vp9/common/x86/vp9_subpixel_8t_sse2.asm',
|
||||
'vp9/common/x86/vp9_subpixel_8t_ssse3.asm',
|
||||
'vp9/encoder/x86/vp9_dct32x32_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct_sse2.c',
|
||||
'vp9/encoder/x86/vp9_error_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad4d_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad_mmx.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse3.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse4.asm',
|
||||
'vp9/encoder/x86/vp9_sad_ssse3.asm',
|
||||
'vp9/encoder/x86/vp9_subpel_variance.asm',
|
||||
'vp9/encoder/x86/vp9_subpel_variance_impl_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_subtract_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_temporal_filter_apply_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_variance_impl_mmx.asm',
|
||||
'vp9/encoder/x86/vp9_variance_impl_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_variance_mmx.c',
|
||||
'vp9/encoder/x86/vp9_variance_sse2.c',
|
||||
'vpx_ports/emms.asm',
|
||||
'vpx_ports/x86_cpuid.c',
|
||||
]
|
||||
}
|
||||
|
@ -40,50 +40,7 @@ mk_files = [
|
||||
extensions = ['.asm', '.c', '.h']
|
||||
|
||||
MODULES = {
|
||||
'ENCODER': [
|
||||
'API_DOC_SRCS-$(CONFIG_VP8_ENCODER)',
|
||||
'API_SRCS-$(BUILD_LIBVPX)',
|
||||
'API_SRCS-$(CONFIG_VP8_ENCODER)',
|
||||
'API_SRCS-$(CONFIG_VP9_ENCODER)',
|
||||
'VP8_CX_EXPORTS',
|
||||
'VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING)',
|
||||
'VP8_CX_SRCS-$(CONFIG_MULTITHREAD)',
|
||||
'VP8_CX_SRCS-$(CONFIG_TEMPORAL_DENOISING)',
|
||||
'VP8_CX_SRCS-no',
|
||||
'VP8_CX_SRCS_REMOVE-no',
|
||||
'VP8_CX_SRCS_REMOVE-yes',
|
||||
'VP8_CX_SRCS-yes',
|
||||
'VP9_CX_EXPORTS',
|
||||
'VP9_CX_SRCS-no',
|
||||
'VP9_CX_SRCS_REMOVE-no',
|
||||
'VP9_CX_SRCS_REMOVE-yes',
|
||||
'VP9_CX_SRCS-yes',
|
||||
],
|
||||
'X86_ASM_ENCODER': [
|
||||
'VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64)',
|
||||
'VP8_CX_SRCS-$(HAVE_MMX)',
|
||||
'VP8_CX_SRCS-$(HAVE_SSE2)',
|
||||
'VP8_CX_SRCS-$(HAVE_SSE4_1)',
|
||||
'VP8_CX_SRCS-$(HAVE_SSSE3)',
|
||||
'VP8_CX_SRCS_REMOVE-$(HAVE_SSE2)',
|
||||
'VP9_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64)',
|
||||
'VP9_CX_SRCS-$(HAVE_MMX)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSE2)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSE3)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSE4_1)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSSE3)',
|
||||
],
|
||||
'X86-64_ASM_ENCODER': [
|
||||
'VP8_CX_SRCS-$(ARCH_X86_64)',
|
||||
'VP9_CX_SRCS-$(ARCH_X86_64)',
|
||||
],
|
||||
'ARM_ASM_ENCODER': [
|
||||
'VP8_CX_SRCS-$(ARCH_ARM)',
|
||||
'VP8_CX_SRCS-$(HAVE_EDSP)',
|
||||
'VP8_CX_SRCS-$(HAVE_MEDIA)',
|
||||
'VP8_CX_SRCS-$(HAVE_NEON)',
|
||||
],
|
||||
'COMMON': [
|
||||
'SOURCES': [
|
||||
'API_DOC_SRCS-$(CONFIG_VP8_DECODER)',
|
||||
'API_DOC_SRCS-yes',
|
||||
'API_EXPORTS',
|
||||
@ -107,12 +64,23 @@ MODULES = {
|
||||
'VP9_DX_SRCS_REMOVE-no',
|
||||
'VP9_DX_SRCS_REMOVE-yes',
|
||||
'VP9_DX_SRCS-yes',
|
||||
],
|
||||
'ERROR_CONCEALMENT': [
|
||||
'VP8_DX_SRCS-$(CONFIG_ERROR_CONCEALMENT)',
|
||||
],
|
||||
'AVX2': [
|
||||
'VP9_COMMON_SRCS-$(HAVE_AVX2)',
|
||||
'API_DOC_SRCS-$(CONFIG_VP8_ENCODER)',
|
||||
'API_SRCS-$(BUILD_LIBVPX)',
|
||||
'API_SRCS-$(CONFIG_VP8_ENCODER)',
|
||||
'API_SRCS-$(CONFIG_VP9_ENCODER)',
|
||||
'VP8_CX_EXPORTS',
|
||||
'VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING)',
|
||||
'VP8_CX_SRCS-$(CONFIG_MULTITHREAD)',
|
||||
'VP8_CX_SRCS-$(CONFIG_TEMPORAL_DENOISING)',
|
||||
'VP8_CX_SRCS-no',
|
||||
'VP8_CX_SRCS_REMOVE-no',
|
||||
'VP8_CX_SRCS_REMOVE-yes',
|
||||
'VP8_CX_SRCS-yes',
|
||||
'VP9_CX_EXPORTS',
|
||||
'VP9_CX_SRCS-no',
|
||||
'VP9_CX_SRCS_REMOVE-no',
|
||||
'VP9_CX_SRCS_REMOVE-yes',
|
||||
'VP9_CX_SRCS-yes',
|
||||
],
|
||||
'X86_ASM': [
|
||||
'PORTS_SRCS-$(BUILD_LIBVPX)',
|
||||
@ -126,8 +94,22 @@ MODULES = {
|
||||
'VP9_COMMON_SRCS-$(HAVE_MMX)',
|
||||
'VP9_COMMON_SRCS-$(HAVE_SSE2)',
|
||||
'VP9_COMMON_SRCS-$(HAVE_SSSE3)',
|
||||
'VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64)',
|
||||
'VP8_CX_SRCS-$(HAVE_MMX)',
|
||||
'VP8_CX_SRCS-$(HAVE_SSE2)',
|
||||
'VP8_CX_SRCS-$(HAVE_SSE4_1)',
|
||||
'VP8_CX_SRCS-$(HAVE_SSSE3)',
|
||||
'VP8_CX_SRCS_REMOVE-$(HAVE_SSE2)',
|
||||
'VP9_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64)',
|
||||
'VP9_CX_SRCS-$(HAVE_MMX)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSE2)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSE3)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSE4_1)',
|
||||
'VP9_CX_SRCS-$(HAVE_SSSE3)',
|
||||
],
|
||||
'X86-64_ASM': [
|
||||
'VP8_CX_SRCS-$(ARCH_X86_64)',
|
||||
'VP9_CX_SRCS-$(ARCH_X86_64)',
|
||||
],
|
||||
'ARM_ASM': [
|
||||
'PORTS_SRCS-$(ARCH_ARM)',
|
||||
@ -136,6 +118,16 @@ MODULES = {
|
||||
'VP8_COMMON_SRCS-$(HAVE_MEDIA)',
|
||||
'VP8_COMMON_SRCS-$(HAVE_NEON)',
|
||||
'VP9_COMMON_SRCS-$(HAVE_NEON)',
|
||||
'VP8_CX_SRCS-$(ARCH_ARM)',
|
||||
'VP8_CX_SRCS-$(HAVE_EDSP)',
|
||||
'VP8_CX_SRCS-$(HAVE_MEDIA)',
|
||||
'VP8_CX_SRCS-$(HAVE_NEON)',
|
||||
],
|
||||
'ERROR_CONCEALMENT': [
|
||||
'VP8_DX_SRCS-$(CONFIG_ERROR_CONCEALMENT)',
|
||||
],
|
||||
'AVX2': [
|
||||
'VP9_COMMON_SRCS-$(HAVE_AVX2)',
|
||||
],
|
||||
'VP8_POSTPROC': [
|
||||
'VP8_COMMON_SRCS-$(CONFIG_POSTPROC)',
|
||||
@ -253,7 +245,6 @@ platform_files = [
|
||||
'vp8_rtcd.h',
|
||||
'vp9_rtcd.h',
|
||||
'vpx_config.asm',
|
||||
'vpx_config.c',
|
||||
'vpx_config.h',
|
||||
'vpx_scale_rtcd.h',
|
||||
]
|
||||
@ -278,7 +269,10 @@ def prepare_upstream(prefix, commit=None):
|
||||
target_objdir = os.path.join(prefix, 'objdir', target)
|
||||
os.makedirs(target_objdir)
|
||||
os.chdir(target_objdir)
|
||||
configure = ['../../configure', '--target=%s' % target, '--disable-examples', '--disable-install-docs']
|
||||
configure = ['../../configure', '--target=%s' % target,
|
||||
'--disable-examples', '--disable-install-docs',
|
||||
'--enable-multi-res-encoding',
|
||||
]
|
||||
|
||||
if 'darwin9' in target:
|
||||
configure += ['--enable-pic']
|
||||
|
@ -40,17 +40,7 @@
|
||||
|
||||
/* Control error-concealment support using our own #define rather than
|
||||
hard-coding it. */
|
||||
#if defined(MOZ_VP8_ERROR_CONCEALMENT)
|
||||
#if defined(MOZ_VPX_ERROR_CONCEALMENT)
|
||||
#undef CONFIG_ERROR_CONCEALMENT
|
||||
#define CONFIG_ERROR_CONCEALMENT 1
|
||||
#endif
|
||||
|
||||
/* Control encoder support using our own #define rather than hard-coding it. */
|
||||
#if defined(MOZ_VP8_ENCODER)
|
||||
#undef CONFIG_VP8_ENCODER
|
||||
#undef CONFIG_ENCODERS
|
||||
#undef CONFIG_MULTI_RES_ENCODING
|
||||
#define CONFIG_VP8_ENCODER 1
|
||||
#define CONFIG_ENCODERS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#endif
|
||||
|
@ -74,7 +74,7 @@
|
||||
.equ CONFIG_POSTPROC_VISUALIZER , 0
|
||||
.equ CONFIG_OS_SUPPORT , 1
|
||||
.equ CONFIG_UNIT_TESTS , 0
|
||||
.equ CONFIG_MULTI_RES_ENCODING , 0
|
||||
.equ CONFIG_MULTI_RES_ENCODING , 1
|
||||
.equ CONFIG_TEMPORAL_DENOISING , 1
|
||||
.equ CONFIG_EXPERIMENTAL , 0
|
||||
.equ CONFIG_DECRYPT , 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=armv7-android-gcc --disable-examples --disable-install-docs --sdk-path=/opt/android-ndk-r9b/";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -1,43 +0,0 @@
|
||||
#if defined(VPX_X86_ASM)
|
||||
|
||||
#if defined(_WIN64)
|
||||
#include "vpx_config_x86_64-win64-vs8.c"
|
||||
|
||||
#elif defined(WIN32)
|
||||
/* 32 bit Windows, MSVC. */
|
||||
#include "vpx_config_x86-win32-vs8.c"
|
||||
|
||||
#elif defined(__APPLE__) && defined(__x86_64__)
|
||||
/* 64 bit MacOS. */
|
||||
#include "vpx_config_x86_64-darwin9-gcc.c"
|
||||
|
||||
#elif defined(__APPLE__) && defined(__i386__)
|
||||
/* 32 bit MacOS. */
|
||||
#include "vpx_config_x86-darwin9-gcc.c"
|
||||
|
||||
#elif defined(__ELF__) && (defined(__i386) || defined(__i386__))
|
||||
/* 32 bit ELF platforms. */
|
||||
#include "vpx_config_x86-linux-gcc.c"
|
||||
|
||||
#elif defined(__ELF__) && (defined(__x86_64) || defined(__x86_64__))
|
||||
/* 64 bit ELF platforms. */
|
||||
#include "vpx_config_x86_64-linux-gcc.c"
|
||||
|
||||
#else
|
||||
#error VPX_X86_ASM is defined, but assembly not supported on this platform!
|
||||
#endif
|
||||
|
||||
#elif defined(VPX_ARM_ASM)
|
||||
|
||||
#if defined(__linux__) && defined(__GNUC__)
|
||||
#include "vpx_config_arm-linux-gcc.c"
|
||||
|
||||
#else
|
||||
#error VPX_ARM_ASM is defined, but assembly not supported on this platform!
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* Assume generic GNU/GCC configuration. */
|
||||
#include "vpx_config_generic-gnu.c"
|
||||
#endif
|
||||
|
@ -74,7 +74,7 @@
|
||||
.equ CONFIG_POSTPROC_VISUALIZER , 0
|
||||
.equ CONFIG_OS_SUPPORT , 1
|
||||
.equ CONFIG_UNIT_TESTS , 1
|
||||
.equ CONFIG_MULTI_RES_ENCODING , 0
|
||||
.equ CONFIG_MULTI_RES_ENCODING , 1
|
||||
.equ CONFIG_TEMPORAL_DENOISING , 1
|
||||
.equ CONFIG_EXPERIMENTAL , 0
|
||||
.equ CONFIG_DECRYPT , 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=generic-gnu --disable-examples --disable-install-docs";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -71,7 +71,7 @@ CONFIG_SMALL equ 0
|
||||
CONFIG_POSTPROC_VISUALIZER equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_UNIT_TESTS equ 1
|
||||
CONFIG_MULTI_RES_ENCODING equ 0
|
||||
CONFIG_MULTI_RES_ENCODING equ 1
|
||||
CONFIG_TEMPORAL_DENOISING equ 1
|
||||
CONFIG_EXPERIMENTAL equ 0
|
||||
CONFIG_DECRYPT equ 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=x86-darwin9-gcc --disable-examples --disable-install-docs --enable-pic";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -71,7 +71,7 @@ CONFIG_SMALL equ 0
|
||||
CONFIG_POSTPROC_VISUALIZER equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_UNIT_TESTS equ 1
|
||||
CONFIG_MULTI_RES_ENCODING equ 0
|
||||
CONFIG_MULTI_RES_ENCODING equ 1
|
||||
CONFIG_TEMPORAL_DENOISING equ 1
|
||||
CONFIG_EXPERIMENTAL equ 0
|
||||
CONFIG_DECRYPT equ 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=x86-linux-gcc --disable-examples --disable-install-docs --enable-pic --disable-avx2 --disable-use-x86inc";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -71,7 +71,7 @@ CONFIG_SMALL equ 0
|
||||
CONFIG_POSTPROC_VISUALIZER equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_UNIT_TESTS equ 1
|
||||
CONFIG_MULTI_RES_ENCODING equ 0
|
||||
CONFIG_MULTI_RES_ENCODING equ 1
|
||||
CONFIG_TEMPORAL_DENOISING equ 1
|
||||
CONFIG_EXPERIMENTAL equ 0
|
||||
CONFIG_DECRYPT equ 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=x86-win32-vs8 --disable-examples --disable-install-docs";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -71,7 +71,7 @@ CONFIG_SMALL equ 0
|
||||
CONFIG_POSTPROC_VISUALIZER equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_UNIT_TESTS equ 1
|
||||
CONFIG_MULTI_RES_ENCODING equ 0
|
||||
CONFIG_MULTI_RES_ENCODING equ 1
|
||||
CONFIG_TEMPORAL_DENOISING equ 1
|
||||
CONFIG_EXPERIMENTAL equ 0
|
||||
CONFIG_DECRYPT equ 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=x86_64-darwin9-gcc --disable-examples --disable-install-docs --enable-pic";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -71,7 +71,7 @@ CONFIG_SMALL equ 0
|
||||
CONFIG_POSTPROC_VISUALIZER equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_UNIT_TESTS equ 1
|
||||
CONFIG_MULTI_RES_ENCODING equ 0
|
||||
CONFIG_MULTI_RES_ENCODING equ 1
|
||||
CONFIG_TEMPORAL_DENOISING equ 1
|
||||
CONFIG_EXPERIMENTAL equ 0
|
||||
CONFIG_DECRYPT equ 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=x86_64-linux-gcc --disable-examples --disable-install-docs --enable-pic --disable-avx2";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -71,7 +71,7 @@ CONFIG_SMALL equ 0
|
||||
CONFIG_POSTPROC_VISUALIZER equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_UNIT_TESTS equ 1
|
||||
CONFIG_MULTI_RES_ENCODING equ 0
|
||||
CONFIG_MULTI_RES_ENCODING equ 1
|
||||
CONFIG_TEMPORAL_DENOISING equ 1
|
||||
CONFIG_EXPERIMENTAL equ 0
|
||||
CONFIG_DECRYPT equ 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
|
||||
/* */
|
||||
/* Use of this source code is governed by a BSD-style license */
|
||||
/* that can be found in the LICENSE file in the root of the source */
|
||||
/* tree. An additional intellectual property rights grant can be found */
|
||||
/* in the file PATENTS. All contributing project authors may */
|
||||
/* be found in the AUTHORS file in the root of the source tree. */
|
||||
static const char* const cfg = "--target=x86_64-win64-vs8 --disable-examples --disable-install-docs";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
@ -83,7 +83,7 @@
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 1
|
||||
#define CONFIG_MULTI_RES_ENCODING 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_DECRYPT 0
|
||||
|
@ -1,15 +0,0 @@
|
||||
static const char* const cfg =
|
||||
"H4sIAFc23ksAA31WTXPaMBC991eo01sOTQsNzVXIi9FgfVSSHThpaDCpZyjMpOSQ"
|
||||
"f18Z27S21vjkee/tl3a98v0dcb+qP2RfHUqyfTuffm/P1fP2cHgnL+WxfN2eyx35"
|
||||
"+U6eT8d99fL2Wn4myYkcT2dS7qrzR3J3/+HTrtxXx5JwmXEJ5PJcwYUyDFrmChqw"
|
||||
"znDmekpq2NJTI8iXPiS4tkNs/TgjX68QSDrPYAB2Oj/7NrTWmk0nCNhTLmkBdTrF"
|
||||
"gwMMnmHg9yHIn4RYOxydDOG60mmMinVcax+86KyFWNcHO90EFU4Q5RRVTmPliBTR"
|
||||
"0szxAtiwTCUnXivjbOwGo5qwLuHS+SUSOWa64N4ZAJ/Rjcqjxmi3NEATzCNGNUls"
|
||||
"bGgHlWgaGMeUXPDUw9qBkTTz85xnyX+ZtDyX1tEs84lidpydh5c47gg7sM34/Ibt"
|
||||
"gB3YWsNu2A7Y1jaBeZ7GpaTaqAUCM1XEqCmYw7QsTqYPtkphC+Q0NUfs+2CrZCoB"
|
||||
"1tQXebnU15xbxC2odT4P7eaphCQONsp3eYPwYZBoCiZ2XpPOULYaI9kS2ArJSiQP"
|
||||
"yG7pgdfafuQ0fFFOrUBitTNvILzHjISnUSsoaD1ogiM9Nbl0XIBnOg/RHYS+R6ne"
|
||||
"1HS9VdaFCcMaHDMDG5+ChHBTISeXhzXWrATkBFGy820l0qVCP3qQ9XSNkGHsLmQU"
|
||||
"DCf/WaIWyDpqgqNj3TKRI4RpbcIacJzVXxszSG+tDnRoffgRoEKHn4MU2Z23NN2M"
|
||||
"QH2biPqKyDYhzF9rQkWwzggAAA=="
|
||||
;const char *on2_codec_build_config(void) {return cfg;}
|
@ -182,6 +182,7 @@
|
||||
'cflags_mozilla': [
|
||||
'$(NSPR_CFLAGS)',
|
||||
'$(NSS_CFLAGS)',
|
||||
'$(MOZ_PIXMAN_CFLAGS)',
|
||||
],
|
||||
|
||||
#
|
||||
|
@ -169,6 +169,7 @@ public class GeckoEvent {
|
||||
private int mKeyCode;
|
||||
private int mUnicodeChar;
|
||||
private int mBaseUnicodeChar; // mUnicodeChar without meta states applied
|
||||
private int mDOMPrintableKeyValue;
|
||||
private int mRepeatCount;
|
||||
private int mCount;
|
||||
private int mStart;
|
||||
@ -256,6 +257,17 @@ public class GeckoEvent {
|
||||
mBaseUnicodeChar = k.getUnicodeChar(0);
|
||||
mRepeatCount = k.getRepeatCount();
|
||||
mCharacters = k.getCharacters();
|
||||
if (mUnicodeChar >= ' ') {
|
||||
mDOMPrintableKeyValue = mUnicodeChar;
|
||||
} else {
|
||||
int unmodifiedMetaState =
|
||||
mMetaState & ~(KeyEvent.META_ALT_MASK |
|
||||
KeyEvent.META_CTRL_MASK |
|
||||
KeyEvent.META_META_MASK);
|
||||
if (unmodifiedMetaState != mMetaState) {
|
||||
mDOMPrintableKeyValue = k.getUnicodeChar(unmodifiedMetaState);
|
||||
}
|
||||
}
|
||||
mDomKeyLocation = isJoystickButton(mKeyCode) ? DomKeyLocation.DOM_KEY_LOCATION_JOYSTICK
|
||||
: DomKeyLocation.DOM_KEY_LOCATION_MOBILE;
|
||||
}
|
||||
|
@ -106,7 +106,9 @@ function doLoadForEmailCert()
|
||||
function doEmailOK()
|
||||
{
|
||||
var sslTrust = document.getElementById("sslTrustGroup");
|
||||
var trustemail = sslTrust.value ? nsIX509CertDB.TRUSTED_EMAIL : 0;
|
||||
var trustemail = sslTrust.value == "true"
|
||||
? nsIX509CertDB.TRUSTED_EMAIL
|
||||
: nsIX509CertDB.UNTRUSTED;
|
||||
//
|
||||
// Set the cert trust
|
||||
//
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user