xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.


Ticket #1424: html5-timers-managed-v2.patch

File html5-timers-managed-v2.patch, 1.9 KB (added by Antoine Martin, 4 years ago)

alternative implementation of managed timers

  • html5/js/Protocol.js

     
    122122        this.websocket.onmessage = function (e) {
    123123                // push arraybuffer values onto the end
    124124                me.rQ.push(new Uint8Array(e.data));
     125                setTimeout(function() {
     126                                me.process_receive_queue();
     127                        }, this.process_interval);
    125128        };
    126129        this.start_processing();
    127130}
     
    139142}
    140143
    141144XpraProtocol.prototype.start_processing = function() {
    142         var me = this;
    143         if(this.rQ_interval_id === null){
    144                 this.rQ_interval_id = setInterval(function(){
    145                         if (me.rQ.length > 0) {
    146                                 me.process_receive_queue();
    147                         }
    148                 }, this.process_interval);
    149         }
    150 
    151         if(this.sQ_interval_id === null){
    152                 this.sQ_interval_id = setInterval(function(){
    153                         if(me.sQ.length > 0){
    154                                 me.process_send_queue();
    155                         }
    156                 }, this.process_interval);
    157         }
    158 
    159         if(this.mQ_interval_id === null){
    160                 this.mQ_interval_id = setInterval(function(){
    161                         if(me.mQ.length > 0){
    162                                 me.process_message_queue();
    163                         }
    164                 }, this.process_interval);
    165         }
    166145}
    167146XpraProtocol.prototype.stop_processing = function() {
    168147        clearInterval(this.rQ_interval_id);
     
    349328                        }
    350329                        if (this.is_worker){
    351330                                this.mQ[this.mQ.length] = packet;
     331                                var me = this;
     332                                setTimeout(function() {
     333                                                me.process_message_queue();
     334                                        }, this.process_interval);
    352335                        } else {
    353336                                this.packet_handler(packet, this.packet_ctx);
    354337                        }
     
    358341                        //console.error("packet_data="+packet_data);
    359342                }
    360343        }
    361 
    362         // see if buffer still has unread packets
    363         if (this.rQ.length > 0) {
    364                 this.process_receive_queue();
    365         }
    366344}
    367345
    368346XpraProtocol.prototype.process_send_queue = function() {
     
    426404
    427405XpraProtocol.prototype.send = function(packet) {
    428406        this.sQ[this.sQ.length] = packet;
     407        this.process_send_queue();
    429408}
    430409
    431410XpraProtocol.prototype.set_packet_handler = function(callback, ctx) {