Work-around for serial mouse interrupts arriving too quickly

This commit is contained in:
Jeff Parsons 2015-03-18 14:45:36 -07:00 committed by jeffpar
commit bc153c3016
9 changed files with 96 additions and 41 deletions

View file

@ -559,7 +559,7 @@ za(function(){for(var a=Ra(window.document,"pcjs","video"),b=0;b<a.length;b++){v
function zi(a){this.$k=a.adapter;switch(this.$k){case 1:this.Xj=1016;this.sg=4;break;case 2:this.Xj=760;this.sg=3;break;default:m("Unrecognized serial adapter #"+this.$k);return}this.Pd=null;n.call(this,"SerialPort",a,zi);var b=a.binding,c;a=Ai;b&&(void 0===c&&(c="Panel"),(c=Oa(c,this.id))&&(b=c.la[b])&&this.Ab(null,a,b))}La(n,zi);var Ai="buffer";k=zi.prototype;k.vk=function(a,b){return a==this.yh?(this.Yd=b,this):null};
k.Ab=function(a,b,c){var d=this;switch(b){case Ai:return this.la[b]=this.Pd=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Bi(d,[b]))},c.onkeypress=function(a){a=a||window.event;Bi(d,[a.which||a.keyCode])},!0}return!1};k.wc=function(a,b,c,d){this.ga=b;this.S=c;this.Ta=d;this.aa=bb(a,"ChipSet");Ib(b,this,Ci,this.Xj);Kb(b,this,Di,this.Xj);p(this)};k.Yb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
k.Xb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Wd()};k.save=function(){var a=new Pd(this),b=0,c=[];c[b++]=this.oi;c[b++]=this.Bk;c[b++]=this.Te;c[b++]=this.Wg;c[b++]=this.Kd;c[b++]=this.te;c[b++]=this.ad;c[b++]=this.Bc;c[b++]=this.zk;c[b]=this.Mf;a.set(0,c);return a.data()};k.restore=function(a){return this.Wd(a[0])};
k.Wd=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.oi=a[b++];this.Bk=a[b++];this.Te=a[b++];this.Wg=a[b++];this.Kd=a[b++];this.te=a[b++];this.ad=a[b++];this.Bc=a[b++];this.zk=a[b++];this.Mf=a[b];return!0};function Bi(a,b){a.Mf=a.Mf.concat(b);Ei(a)}function Ei(a){0<a.Mf.length&&!(a.Bc&1)&&(a.oi=a.Mf.shift(),a.Bc|=1);var b=-1;a.Bc&1&&a.Wg&1&&(b=4);0<=b?(a.Kd&=-8,a.Kd|=b,a.aa&&a.sg&&Sg(a.aa,a.sg)):(a.Kd|=1,a.aa&&a.sg&&Tg(a.aa,a.sg))}
k.Wd=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.oi=a[b++];this.Bk=a[b++];this.Te=a[b++];this.Wg=a[b++];this.Kd=a[b++];this.te=a[b++];this.ad=a[b++];this.Bc=a[b++];this.zk=a[b++];this.Mf=a[b];return!0};function Bi(a,b){a.Mf=a.Mf.concat(b);Ei(a)}function Ei(a){0<a.Mf.length&&!(a.Bc&1)&&(a.oi=a.Mf.shift(),a.Bc|=1);var b=-1;a.Bc&1&&a.Wg&1&&(b=4);0<=b?(a.Kd&=-8,a.Kd|=b,a.aa&&a.sg&&Sg(a.aa,a.sg,100)):(a.Kd|=1,a.aa&&a.sg&&Tg(a.aa,a.sg))}
k.io=function(){var a=this.te&128?this.Te&255:this.oi;this.Bc&=-2;Ei(this);return a};k.Sn=function(){return this.te&128?this.Te>>8:this.Wg};k.Tn=function(){return this.Kd};k.Un=function(){return this.te};k.Wn=function(){return this.ad};k.Vn=function(){return this.Bc};k.bo=function(){return this.zk};
k.vp=function(a,b){if(this.te&128)this.Te=this.Te&-256|b;else{this.Bk=b;this.Bc&=-97;var c;this.Pd?(13!=b&&(8==b?this.Pd.value=this.Pd.value.slice(0,-1):(this.Pd.value+=String.fromCharCode(b),this.Pd.scrollTop=this.Pd.scrollHeight)),c=!0):c=!1;c&&(this.Bc|=96)}};k.gp=function(a,b){this.te&128?this.Te=this.Te&255|b<<8:this.Wg=b};k.hp=function(a,b){this.te=b};
k.ip=function(a,b){var c=this.ad;this.ad=b;if(this.Yd&&(c^b)&3){var c=this.Yd,d=this.ad,e=3==(d&3);if(e){if(!c.Vc){var f=!1;c.ad&2||(c.reset(),c.Zb("serial mouse reset"),f=!0);c.ad&1||(c.Zb("serial mouse ID requested"),f=!0);f&&(Bi(c.$f,[77,77]),c.Zb("serial mouse ID sent"));Fi(c,c.za);c.setActive(e)}}else c.Vc&&(c.Zb("serial mouse inactive"),Gi(c.za),c.setActive(e));c.ad=d}};