mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 22:01:30 +00:00
Bug 604215 - Stop Panorama's tab canvas drawing heartbeat during zoom animations; r=ian a=blocking-final+
This makes sure that we don't waste time running the heartbeat JS code and also possibly calling drawWindow when a zoom animation is in progress. It should improve the performance of zoom animations.
This commit is contained in:
parent
4037d5cf89
commit
b0de9c6e9e
@ -785,7 +785,7 @@ let TabItems = {
|
||||
cachedDataCounter: 0, // total number of cached data being displayed.
|
||||
tabsProgressListener: null,
|
||||
_tabsWaitingForUpdate: [],
|
||||
_heartbeatOn: false, // see explanation at startHeartbeat() below
|
||||
_heartbeat: null, // see explanation at startHeartbeat() below
|
||||
_heartbeatTiming: 100, // milliseconds between _checkHeartbeat() calls
|
||||
_lastUpdateTime: Date.now(),
|
||||
_eventListeners: [],
|
||||
@ -1053,13 +1053,12 @@ let TabItems = {
|
||||
// Start a new heartbeat if there isn't one already started.
|
||||
// The heartbeat is a chain of setTimeout calls that allows us to spread
|
||||
// out update calls over a period of time.
|
||||
// _heartbeatOn is used to make sure that we don't add multiple
|
||||
// _heartbeat is used to make sure that we don't add multiple
|
||||
// setTimeout chains.
|
||||
startHeartbeat: function TabItems_startHeartbeat() {
|
||||
if (!this._heartbeatOn) {
|
||||
this._heartbeatOn = true;
|
||||
if (!this._heartbeat) {
|
||||
let self = this;
|
||||
setTimeout(function() {
|
||||
this._heartbeat = setTimeout(function() {
|
||||
self._checkHeartbeat();
|
||||
}, this._heartbeatTiming);
|
||||
}
|
||||
@ -1071,7 +1070,7 @@ let TabItems = {
|
||||
// _update on them.
|
||||
// Should only be called by startHeartbeat and resumePainting.
|
||||
_checkHeartbeat: function TabItems__checkHeartbeat() {
|
||||
this._heartbeatOn = false;
|
||||
this._heartbeat = null;
|
||||
|
||||
if (this.isPaintingPaused())
|
||||
return;
|
||||
@ -1094,6 +1093,10 @@ let TabItems = {
|
||||
// pausePainting needs to be mirrored with a call to <resumePainting>.
|
||||
pausePainting: function TabItems_pausePainting() {
|
||||
this.paintingPaused++;
|
||||
if (this._heartbeat) {
|
||||
clearTimeout(this._heartbeat);
|
||||
this._heartbeat = null;
|
||||
}
|
||||
},
|
||||
|
||||
// ----------
|
||||
|
Loading…
Reference in New Issue
Block a user