Index: remoting/webapp/client_session.js |
diff --git a/remoting/webapp/client_session.js b/remoting/webapp/client_session.js |
index 8fab461c185aec3896682f7a1a32d7021f6c24a6..d7dc798109e5e9439188e82ecd1a81c34f19411a 100644 |
--- a/remoting/webapp/client_session.js |
+++ b/remoting/webapp/client_session.js |
@@ -58,6 +58,10 @@ remoting.ClientSession = function(hostJid, hostPublicKey, sharedSecret, |
this.scaleToFit = false; |
this.logToServer = new remoting.LogToServer(); |
this.onStateChange = onStateChange; |
+ |
+ /** @type {number?} */ |
+ this.notifyClientDimensionsTimer_ = null; |
+ |
/** @type {remoting.ClientSession} */ |
var that = this; |
/** @type {function():void} @private */ |
@@ -71,20 +75,22 @@ remoting.ClientSession = function(hostJid, hostPublicKey, sharedSecret, |
/** @type {function():void} @private */ |
this.callToggleFullScreen_ = function() { that.toggleFullScreen_(); }; |
/** @type {remoting.MenuButton} @private */ |
- this.sendKeysMenu_ = new remoting.MenuButton( |
- document.getElementById('send-keys-menu') |
- ); |
- /** @type {remoting.MenuButton} @private */ |
this.screenOptionsMenu_ = new remoting.MenuButton( |
document.getElementById('screen-options-menu'), |
function() { that.onShowOptionsMenu_(); } |
); |
+ /** @type {remoting.MenuButton} @private */ |
+ this.sendKeysMenu_ = new remoting.MenuButton( |
+ document.getElementById('send-keys-menu') |
+ ); |
+ |
/** @type {HTMLElement} @private */ |
this.shrinkToFit_ = document.getElementById('enable-shrink-to-fit'); |
/** @type {HTMLElement} @private */ |
this.originalSize_ = document.getElementById('disable-shrink-to-fit'); |
/** @type {HTMLElement} @private */ |
this.fullScreen_ = document.getElementById('toggle-full-screen'); |
+ |
this.shrinkToFit_.addEventListener('click', this.callEnableShrink_, false); |
this.originalSize_.addEventListener('click', this.callDisableShrink_, false); |
this.fullScreen_.addEventListener('click', this.callToggleFullScreen_, false); |
@@ -504,6 +510,21 @@ remoting.ClientSession.prototype.setState_ = function(newState) { |
*/ |
remoting.ClientSession.prototype.onResize = function() { |
this.updateDimensions(); |
+ |
+ if (this.notifyClientDimensionsTimer_) { |
+ window.clearTimeout(this.notifyClientDimensionsTimer_); |
+ this.notifyClientDimensionsTimer_ = null; |
+ } |
+ |
+ // Defer notifying the host of the change until the window stops resizing, to |
+ // avoid overloading the control channel with notifications. |
+ /** @type {remoting.ClientSession} */ |
+ var that = this; |
+ var notifyClientDimensions = function() { |
+ that.plugin.notifyClientDimensions(window.innerWidth, window.innerHeight); |
+ } |
+ this.notifyClientDimensionsTimer_ = |
+ window.setTimeout(notifyClientDimensions, 1000); |
}; |
/** |