ios: Patch cancelAnimationFrame whenever fakeRequestAnimationFrame is used
The existing implementation of fakeRequestAnimationFrame did not return a timer ID, so the frame could not be cancelled if you wanted to cancel it. But if you do want to cancel it, it needs to be cancelled through clearTimeout instead of cancelAnimationFrame, because the timer IDs are different. Signed-off-by: Jonathan Barnes <jbarnes@pivotal.io>
This commit is contained in:
parent
57d9a64c14
commit
bd70a73d43
@ -643,8 +643,13 @@ PDFJS.compatibilityChecked = true;
|
||||
|
||||
// Support: IE<10, Android<4.0, iOS
|
||||
(function checkRequestAnimationFrame() {
|
||||
function fakeRequestAnimationFrame(callback) {
|
||||
window.setTimeout(callback, 20);
|
||||
function installFakeAnimationFrameFunctions() {
|
||||
window.requestAnimationFrame = function (callback) {
|
||||
return window.setTimeout(callback, 20);
|
||||
};
|
||||
window.cancelAnimationFrame = function (timeoutID) {
|
||||
window.clearTimeout(timeoutID);
|
||||
};
|
||||
}
|
||||
|
||||
if (!hasDOM) {
|
||||
@ -652,7 +657,7 @@ PDFJS.compatibilityChecked = true;
|
||||
}
|
||||
if (isIOS) {
|
||||
// requestAnimationFrame on iOS is broken, replacing with fake one.
|
||||
window.requestAnimationFrame = fakeRequestAnimationFrame;
|
||||
installFakeAnimationFrameFunctions();
|
||||
return;
|
||||
}
|
||||
if ('requestAnimationFrame' in window) {
|
||||
@ -660,8 +665,10 @@ PDFJS.compatibilityChecked = true;
|
||||
}
|
||||
window.requestAnimationFrame =
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
fakeRequestAnimationFrame;
|
||||
window.webkitRequestAnimationFrame;
|
||||
if (!('requestAnimationFrame' in window)) {
|
||||
installFakeAnimationFrameFunctions();
|
||||
}
|
||||
})();
|
||||
|
||||
// Support: Android, iOS
|
||||
|
Loading…
x
Reference in New Issue
Block a user