This commit is contained in:
Wes Kocher 2013-12-10 16:42:47 -08:00
Родитель 0871ff32bb 3021b83704
Коммит bc76ab2b98
122 изменённых файлов: 1602 добавлений и 1021 удалений

Просмотреть файл

@ -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]

Просмотреть файл

@ -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 поставляемый
Просмотреть файл

@ -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']:

Просмотреть файл

@ -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_);
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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>

Просмотреть файл

@ -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
//

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше