Author: hsaputra
Date: Wed Jan 25 23:08:58 2012
New Revision: 1235983

URL: http://svn.apache.org/viewvc?rev=1235983&view=rev
Log:
SHINDIG-1678 The flash transport to support RPC for IE7 has problem with 
multiple gadgets in a single container. CR: https://reviews.apache.org/r/3566

Modified:
    shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js

Modified: 
shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js?rev=1235983&r1=1235982&r2=1235983&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js 
Wed Jan 25 23:08:58 2012
@@ -41,7 +41,11 @@ if (!gadgets.rpctx.flash) {  // make lib
 
     var LOADER_TIMEOUT_MS = 100;
     var MAX_LOADER_RETRIES = 50;
+
     var pendingHandshakes = [];
+    var flushHandshakesHandle = null;
+    var FLUSH_HANDSHAKES_TIMEOUT_MS = 500;
+
     var setupHandle = null;
     var setupAttempts = 0;
 
@@ -148,6 +152,12 @@ if (!gadgets.rpctx.flash) {  // make lib
           var targetId = shake.targetId;
           relayHandle['setup'](shake.token, getChannelId(targetId), 
getRoleId(targetId));
         }
+        if (flushHandshakesHandle !== null) {
+          window.clearTimeout(flushHandshakesHandle);
+          flushHandshakesHandle = null;
+        }
+      } else if (flushHandshakesHandle === null && pendingHandshakes.length > 
0) {
+        flushHandshakesHandle = window.setTimeout(flushHandshakes, 
FLUSH_HANDSHAKES_TIMEOUT_MS);
       }
     }
 
@@ -238,6 +248,8 @@ if (!gadgets.rpctx.flash) {  // make lib
         if (relayHandle === null && setupHandle === null) {
           setupHandle = window.setTimeout(relayLoader, LOADER_TIMEOUT_MS);
         }
+        // Lets try to flush any registered handshakes
+        flushHandshakes();
         return true;
       },
 


Reply via email to