|
@@ -28,6 +28,7 @@ class EventLoop {
|
|
final waitLock = new Lock();
|
|
final waitLock = new Lock();
|
|
var promisedEventsCount = 0;
|
|
var promisedEventsCount = 0;
|
|
var regularEvents:Null<RegularEvent>;
|
|
var regularEvents:Null<RegularEvent>;
|
|
|
|
+ var lastRegularEvent:Null<RegularEvent>;
|
|
var isMainThread:Bool;
|
|
var isMainThread:Bool;
|
|
static var CREATED : Bool;
|
|
static var CREATED : Bool;
|
|
|
|
|
|
@@ -53,12 +54,20 @@ class EventLoop {
|
|
switch regularEvents {
|
|
switch regularEvents {
|
|
case null:
|
|
case null:
|
|
regularEvents = event;
|
|
regularEvents = event;
|
|
|
|
+ lastRegularEvent = null;
|
|
case current:
|
|
case current:
|
|
var previous = null;
|
|
var previous = null;
|
|
|
|
+ if (lastRegularEvent != null && lastRegularEvent.nextRunTime <= event.nextRunTime) {
|
|
|
|
+ lastRegularEvent.next = event;
|
|
|
|
+ event.previous = lastRegularEvent;
|
|
|
|
+ lastRegularEvent = event;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
while(true) {
|
|
while(true) {
|
|
if(current == null) {
|
|
if(current == null) {
|
|
previous.next = event;
|
|
previous.next = event;
|
|
event.previous = previous;
|
|
event.previous = previous;
|
|
|
|
+ lastRegularEvent = event;
|
|
break;
|
|
break;
|
|
} else if(event.nextRunTime < current.nextRunTime) {
|
|
} else if(event.nextRunTime < current.nextRunTime) {
|
|
event.next = current;
|
|
event.next = current;
|
|
@@ -66,7 +75,7 @@ class EventLoop {
|
|
switch previous {
|
|
switch previous {
|
|
case null:
|
|
case null:
|
|
regularEvents = event;
|
|
regularEvents = event;
|
|
- case _:
|
|
|
|
|
|
+ case _:
|
|
event.previous = previous;
|
|
event.previous = previous;
|
|
previous.next = event;
|
|
previous.next = event;
|
|
current.previous = event;
|
|
current.previous = event;
|