Commit f5112e821e54b2f71409ef6ade5036ae34cfaa03

Authored by Daniel Ruoso
1 parent 573abfd8
Exists in master

evita race condition

;
Showing 1 changed file with 18 additions and 6 deletions   Show diff stats
Fila-Web/root/header.tt
... ... @@ -26,13 +26,14 @@ var page_loaded = 0;
26 26 var waiting_for = '';
27 27 var timeout = 0;
28 28 var timeout_callback;
  29 +var timeout_key;
29 30 function disconnected_so_move_away() {
30 31 if (page_loaded) {
31 32 window.location='about:blank';
32 33 }
33 34 }
34 35  
35   -function check_timeout() {
  36 +function check_timeout(tk) {
36 37 if (timeout == 0) {
37 38 if (waiting_for) {
38 39 timeout_callback();
... ... @@ -42,16 +43,27 @@ function check_timeout() {
42 43 $('aviso_timeout').replace('<DIV id="aviso_timeout" class="aviso_timeout">' +
43 44 timeout + ' segundos para ' + waiting_for +'</DIV>');
44 45  
45   - window.setTimeout(function() { check_timeout() }, 1000);
  46 + window.setTimeout(function() {
  47 + if (tk == timeout_key) { check_timeout(tk) }
  48 + }, 1000);
46 49 timeout--;
47 50 }
48 51 }
49 52  
50 53 function set_timeout(tempo, motivo, callback) {
51   - waiting_for = motivo;
52   - timeout = tempo;
53   - timeout_callback = callback;
54   - check_timeout();
  54 + if (motivo && waiting_for == motivo) {
  55 + return
  56 + } else if (motivo && waiting_for) {
  57 + waiting_for = motivo;
  58 + timeout = tempo;
  59 + timeout_callback = callback;
  60 + } else {
  61 + waiting_for = motivo;
  62 + timeout = tempo;
  63 + timeout_callback = callback;
  64 + timeout_key = Math.random();
  65 + check_timeout(timeout_key);
  66 + }
55 67 }
56 68  
57 69 </script>
... ...