зеркало из https://github.com/mozilla/gecko-dev.git
Revert to 176fae7de173 which was fine.
Sorry for breaking the history, won't trust TBPL, ever again. :(
This commit is contained in:
Родитель
7065ecc47c
Коммит
624cdf4412
|
@ -1,8 +1,7 @@
|
|||
pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/");
|
||||
pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/");
|
||||
// The time interval between checks for a new version (in seconds)
|
||||
// nightly=8 hours, official=24 hours
|
||||
pref("app.update.interval", 28800);
|
||||
pref("app.update.interval", 7200); // 2 hours
|
||||
// The time interval between the downloading of mar file chunks in the
|
||||
// background (in seconds)
|
||||
pref("app.update.download.backgroundInterval", 60);
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/");
|
||||
pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/");
|
||||
// The time interval between checks for a new version (in seconds)
|
||||
// nightly=8 hours, official=24 hours
|
||||
pref("app.update.interval", 28800);
|
||||
pref("app.update.interval", 86400); // 24 hours
|
||||
// The time interval between the downloading of mar file chunks in the
|
||||
// background (in seconds)
|
||||
pref("app.update.download.backgroundInterval", 60);
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<animate id="a" end="a.end+6s" />
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 82 B |
|
@ -0,0 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" class="reftest-wait">
|
||||
<script>
|
||||
window.addEventListener("load", function() {
|
||||
setTimeout(function() {
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.documentElement.removeAttribute("class");
|
||||
}, 0);
|
||||
}, false);
|
||||
</script>
|
||||
<set id="c"/><set id="b" begin="c.begin; b.begin"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 346 B |
|
@ -37,6 +37,8 @@ load 615872-1.svg
|
|||
load 650732-1.svg
|
||||
load 665334-1.svg
|
||||
load 669225-1.svg
|
||||
load 670313-1.svg
|
||||
load 669225-2.svg
|
||||
load 670313-1.svg
|
||||
load 678822-1.svg
|
||||
load 678847-1.svg
|
||||
load 678938-1.svg
|
||||
|
|
|
@ -478,6 +478,21 @@ nsSMILAnimationFunction::InterpolateResult(const nsSMILValueArray& aValues,
|
|||
if (calcMode == CALC_DISCRETE || NS_FAILED(rv)) {
|
||||
double scaledSimpleProgress =
|
||||
ScaleSimpleProgress(simpleProgress, CALC_DISCRETE);
|
||||
|
||||
// Floating-point errors can mean that, for example, a sample time of 29s in
|
||||
// a 100s duration animation gives us a simple progress of 0.28999999999
|
||||
// instead of the 0.29 we'd expect. Normally this isn't a noticeable
|
||||
// problem, but when we have sudden jumps in animation values (such as is
|
||||
// the case here with discrete animation) we can get unexpected results.
|
||||
//
|
||||
// To counteract this, before we perform a floor() on the animation
|
||||
// progress, we add a tiny fudge factor to push us into the correct interval
|
||||
// in cases where floating-point errors might cause us to fall short.
|
||||
static const double kFloatingPointFudgeFactor = 1.0e-16;
|
||||
if (scaledSimpleProgress + kFloatingPointFudgeFactor <= 1.0) {
|
||||
scaledSimpleProgress += kFloatingPointFudgeFactor;
|
||||
}
|
||||
|
||||
if (IsToAnimation()) {
|
||||
// We don't follow SMIL 3, 12.6.4, where discrete to animations
|
||||
// are the same as <set> animations. Instead, we treat it as a
|
||||
|
|
|
@ -758,10 +758,10 @@ nsSMILTimedElement::Rewind()
|
|||
mSeekState == SEEK_BACKWARD_FROM_ACTIVE,
|
||||
"Rewind in the middle of a forwards seek?");
|
||||
|
||||
ClearIntervals();
|
||||
// ClearIntervals puts us in to the POSTACTIVE state but we're doing a full
|
||||
// rewind so go back to the startup state
|
||||
// Putting us in the startup state will ensure we skip doing any interval
|
||||
// updates
|
||||
mElementState = STATE_STARTUP;
|
||||
ClearIntervals();
|
||||
|
||||
UnsetBeginSpec(RemoveNonDynamic);
|
||||
UnsetEndSpec(RemoveNonDynamic);
|
||||
|
@ -784,6 +784,8 @@ nsSMILTimedElement::Rewind()
|
|||
|
||||
mPrevRegisteredMilestone = sMaxMilestone;
|
||||
RegisterMilestone();
|
||||
NS_ABORT_IF_FALSE(!mCurrentInterval,
|
||||
"Current interval is set at end of rewind");
|
||||
}
|
||||
|
||||
namespace
|
||||
|
@ -1332,7 +1334,9 @@ nsSMILTimedElement::ClearSpecs(TimeValueSpecList& aSpecs,
|
|||
void
|
||||
nsSMILTimedElement::ClearIntervals()
|
||||
{
|
||||
mElementState = STATE_POSTACTIVE;
|
||||
if (mElementState != STATE_STARTUP) {
|
||||
mElementState = STATE_POSTACTIVE;
|
||||
}
|
||||
mCurrentRepeatIteration = 0;
|
||||
ResetCurrentInterval();
|
||||
|
||||
|
@ -1684,14 +1688,15 @@ nsSMILTimedElement::GetNextInterval(const nsSMILInterval* aPrevInterval,
|
|||
// a) We never had any end attribute to begin with (and hence we should
|
||||
// just use the active duration after allowing for the possibility of
|
||||
// an end instance provided by a DOM call), OR
|
||||
// b) We have an end attribute but no end instances--this is a special
|
||||
// case that is needed for syncbase timing so that animations of the
|
||||
// following sort: <animate id="a" end="a.begin+1s" ... /> can be
|
||||
// resolved (see SVGT 1.2 Test Suite animate-elem-221-t.svg) by first
|
||||
// establishing an interval of unresolved duration, OR
|
||||
// b) We have no resolved (not incl. indefinite) end instances
|
||||
// (SMIL only says "if the instance list is empty"--but if we have
|
||||
// indefinite/unresolved instance times then there must be a good
|
||||
// reason we haven't used them (since they'll be >= tempBegin) such as
|
||||
// avoiding creating a self-referential loop. In any case, the interval
|
||||
// should be allowed to be open.), OR
|
||||
// c) We have end events which leave the interval open-ended.
|
||||
PRBool openEndedIntervalOk = mEndSpecs.IsEmpty() ||
|
||||
mEndInstances.IsEmpty() ||
|
||||
!HaveResolvedEndTimes() ||
|
||||
EndHasEventConditions();
|
||||
if (!tempEnd && !openEndedIntervalOk)
|
||||
return PR_FALSE; // Bad interval
|
||||
|
@ -2248,6 +2253,17 @@ nsSMILTimedElement::GetPreviousInterval() const
|
|||
: mOldIntervals[mOldIntervals.Length()-1].get();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsSMILTimedElement::HaveResolvedEndTimes() const
|
||||
{
|
||||
if (mEndInstances.IsEmpty())
|
||||
return PR_FALSE;
|
||||
|
||||
// mEndInstances is sorted so if the first time is not resolved then none of
|
||||
// them are
|
||||
return mEndInstances[0]->Time().IsResolved();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsSMILTimedElement::EndHasEventConditions() const
|
||||
{
|
||||
|
|
|
@ -525,6 +525,7 @@ protected:
|
|||
const nsSMILInstanceTime* GetEffectiveBeginInstance() const;
|
||||
const nsSMILInterval* GetPreviousInterval() const;
|
||||
PRBool HasPlayed() const { return !mOldIntervals.IsEmpty(); }
|
||||
PRBool HaveResolvedEndTimes() const;
|
||||
PRBool EndHasEventConditions() const;
|
||||
|
||||
// Reset the current interval by first passing ownership to a temporary
|
||||
|
|
|
@ -172,6 +172,8 @@ fixup-unbounded.patch: Hack to work around bad assumption.
|
|||
|
||||
quartz-get-image-performance: Make cairo_quartz_get_image faster in the failure case by not flushing unless we are going to succeed.
|
||||
|
||||
lround-c99-only.patch: Only use lround in C99 programs.
|
||||
|
||||
==== pixman patches ====
|
||||
|
||||
pixman-android-cpu-detect.patch: Add CPU detection support for Android, where we can't reliably access /proc/self/auxv.
|
||||
|
|
|
@ -483,7 +483,7 @@ _cairo_operator_bounded_by_either (cairo_operator_t op)
|
|||
|
||||
}
|
||||
|
||||
#if DISABLE_SOME_FLOATING_POINT
|
||||
#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
|
||||
/* This function is identical to the C99 function lround(), except that it
|
||||
* performs arithmetic rounding (floor(d + .5) instead of away-from-zero rounding) and
|
||||
* has a valid input range of (INT_MIN, INT_MAX] instead of
|
||||
|
|
|
@ -974,7 +974,7 @@ _cairo_round (double r)
|
|||
return floor (r + .5);
|
||||
}
|
||||
|
||||
#if DISABLE_SOME_FLOATING_POINT
|
||||
#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
|
||||
cairo_private int
|
||||
_cairo_lround (double d) cairo_const;
|
||||
#else
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
Only use lround in C99 programs.
|
||||
|
||||
diff --git a/gfx/cairo/cairo/src/cairo-misc.c b/gfx/cairo/cairo/src/cairo-misc.c
|
||||
--- a/gfx/cairo/cairo/src/cairo-misc.c
|
||||
+++ b/gfx/cairo/cairo/src/cairo-misc.c
|
||||
@@ -478,17 +478,17 @@ _cairo_operator_bounded_by_either (cairo
|
||||
case CAIRO_OPERATOR_IN:
|
||||
case CAIRO_OPERATOR_DEST_IN:
|
||||
case CAIRO_OPERATOR_DEST_ATOP:
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-#if DISABLE_SOME_FLOATING_POINT
|
||||
+#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
|
||||
/* This function is identical to the C99 function lround(), except that it
|
||||
* performs arithmetic rounding (floor(d + .5) instead of away-from-zero rounding) and
|
||||
* has a valid input range of (INT_MIN, INT_MAX] instead of
|
||||
* [INT_MIN, INT_MAX]. It is much faster on both x86 and FPU-less systems
|
||||
* than other commonly used methods for rounding (lround, round, rint, lrint
|
||||
* or float (d + 0.5)).
|
||||
*
|
||||
* The reason why this function is much faster on x86 than other
|
||||
diff --git a/gfx/cairo/cairo/src/cairoint.h b/gfx/cairo/cairo/src/cairoint.h
|
||||
--- a/gfx/cairo/cairo/src/cairoint.h
|
||||
+++ b/gfx/cairo/cairo/src/cairoint.h
|
||||
@@ -969,17 +969,17 @@ _cairo_restrict_value (double value, dou
|
||||
* away from 0. _cairo_round rounds halfway cases toward negative infinity.
|
||||
* This matches the rounding behaviour of _cairo_lround. */
|
||||
static inline double cairo_const
|
||||
_cairo_round (double r)
|
||||
{
|
||||
return floor (r + .5);
|
||||
}
|
||||
|
||||
-#if DISABLE_SOME_FLOATING_POINT
|
||||
+#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
|
||||
cairo_private int
|
||||
_cairo_lround (double d) cairo_const;
|
||||
#else
|
||||
#define _cairo_lround lround
|
||||
#endif
|
||||
|
||||
cairo_private uint16_t
|
||||
_cairo_half_from_float (float f) cairo_const;
|
|
@ -17171,7 +17171,6 @@ LoopProfile::profileOperation(JSContext* cx, JSOp op)
|
|||
stackPush(StackValue(v1.isConst && v2.isConst));
|
||||
} else if (op == JSOP_AND) {
|
||||
bool b = !!js_ValueToBoolean(cx->regs().sp[-1]);
|
||||
StackValue v = stackAt(-1);
|
||||
if (b)
|
||||
stackPop();
|
||||
} else {
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(29, true)">
|
||||
<script xlink:href="smil-util.js" type="text/javascript"/>
|
||||
<title>Test discrete keyTimes are scaled correctly (Bug 681645)</title>
|
||||
<rect x="15" y="15" width="200" height="200" fill="blue">
|
||||
<animate attributeName="fill" begin="0" dur="100s"
|
||||
calcMode="discrete"
|
||||
values="red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;blue;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red"
|
||||
keyTimes="0.00;0.01;0.02;0.03;0.04;0.05;0.06;0.07;0.08;0.09;
|
||||
0.10;0.11;0.12;0.13;0.14;0.15;0.16;0.17;0.18;0.19;
|
||||
0.20;0.21;0.22;0.23;0.24;0.25;0.26;0.27;0.28;0.29;
|
||||
0.30;0.31;0.32;0.33;0.34;0.35;0.36;0.37;0.38;0.39;
|
||||
0.40;0.41;0.42;0.43;0.44;0.45;0.46;0.47;0.48;0.49;
|
||||
0.50;0.51;0.52;0.53;0.54;0.55;0.56;0.57;0.58;0.59;
|
||||
0.60;0.61;0.62;0.63;0.64;0.65;0.66;0.67;0.68;0.69;
|
||||
0.70;0.71;0.72;0.73;0.74;0.75;0.76;0.77;0.78;0.79;
|
||||
0.80;0.81;0.82;0.83;0.84;0.85;0.86;0.87;0.88;0.89;
|
||||
0.90;0.91;0.92;0.93;0.94;0.95;0.96;0.97;0.98;0.99"/>
|
||||
</rect>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 1.8 KiB |
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(29, true)">
|
||||
<script xlink:href="smil-util.js" type="text/javascript"/>
|
||||
<title>Test discrete keyTimes are scaled correctly (Bug 681645)</title>
|
||||
<rect x="15" y="15" width="200" height="200" fill="blue">
|
||||
<animate attributeName="fill" begin="0" dur="100s"
|
||||
calcMode="discrete"
|
||||
values="red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;blue;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red;
|
||||
red;red;red;red;red;red;red;red;red;red"/>
|
||||
</rect>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 1.1 KiB |
|
@ -55,6 +55,8 @@ include event/reftest.list
|
|||
|
||||
# General tests
|
||||
== anim-discrete-values-1.svg anim-standard-ref.svg
|
||||
== anim-discrete-values-2.svg anim-standard-ref.svg
|
||||
== anim-discrete-values-3.svg anim-standard-ref.svg
|
||||
== anim-discrete-replace-sum-1.svg anim-standard-ref.svg
|
||||
== anim-discrete-sum-none-1.svg anim-standard-ref.svg
|
||||
== anim-discrete-sum-sum-1.svg anim-standard-ref.svg
|
||||
|
|
|
@ -76,6 +76,8 @@ nsresult nsDeflateConverter::Init()
|
|||
case WRAP_GZIP:
|
||||
window += 16;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
zerr = deflateInit2(&mZstream, mLevel, Z_DEFLATED, window, 8,
|
||||
|
|
|
@ -171,12 +171,11 @@ Java_org_mozilla_gecko_GeckoAppShell_onChangeNetworkLinkStatus(JNIEnv *jenv, jcl
|
|||
}
|
||||
|
||||
NS_EXPORT void JNICALL
|
||||
Java_org_mozilla_gecko_GeckoAppShell_reportJavaCrash(JNIEnv *, jclass, jstring stack)
|
||||
Java_org_mozilla_gecko_GeckoAppShell_reportJavaCrash(JNIEnv *jenv, jclass, jstring stack)
|
||||
{
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
nsJNIString javaStack(stack);
|
||||
CrashReporter::AppendAppNotesToCrashReport(
|
||||
NS_ConvertUTF16toUTF8(javaStack));
|
||||
nsJNIString javaStack(stack, jenv);
|
||||
CrashReporter::AppendAppNotesToCrashReport(NS_ConvertUTF16toUTF8(javaStack));
|
||||
#endif
|
||||
abort();
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче