diff --git a/core.d b/core.d index 922ccb2..3eca15c 100644 --- a/core.d +++ b/core.d @@ -2041,7 +2041,8 @@ interface ICoreEventLoop { enum Possibilities { CarryOn, LocalExit, - GlobalExit + GlobalExit, + Interrupted } Possibilities result; @@ -4829,7 +4830,7 @@ version(HasThread) struct ArsdCoreApplication { private class CoreEventLoopImplementation : ICoreEventLoop { - version(EmptyEventLoop) RunOnceResult runOnce(Duration timeout = Duration.max) { return RunOnceResult.Possibilities.LocalExit; } + version(EmptyEventLoop) RunOnceResult runOnce(Duration timeout = Duration.max) { return RunOnceResult(RunOnceResult.Possibilities.LocalExit); } version(EmptyCoreEvent) { UnregisterToken addCallbackOnFdReadable(int fd, CallbackHelper cb){return typeof(return).init;} @@ -4885,7 +4886,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop { runLoopIterationDelegates(); - return RunOnceResult.Possibilities.CarryOn; + return RunOnceResult(RunOnceResult.Possibilities.CarryOn); } // FIXME: idk how to make one event that multiple kqueues can listen to w/o being shared @@ -5081,7 +5082,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop { runLoopIterationDelegates(); - return RunOnceResult.Possibilities.CarryOn; + return RunOnceResult(RunOnceResult.Possibilities.CarryOn); } } @@ -5369,7 +5370,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop { if(ret == -1) { import core.stdc.errno; if(errno == EINTR) { - return; + return RunOnceResult(RunOnceResult.Possibilities.Interrupted); } throw new ErrnoApiException("epoll_wait", errno); } else if(ret == 0) { @@ -5389,7 +5390,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop { runLoopIterationDelegates(); - return RunOnceResult.Possibilities.CarryOn; + return RunOnceResult(RunOnceResult.Possibilities.CarryOn); } // building blocks for low-level integration with the loop diff --git a/gamehelpers.d b/gamehelpers.d index 9740792..83b6cb0 100644 --- a/gamehelpers.d +++ b/gamehelpers.d @@ -271,7 +271,7 @@ DirFlag dirFlag(Dir dir) { // this is public but like i don't want do document it since it can so easily fail the asserts. DirFlag dirFlag(Point dir) { - return dirFlag(cast(Dir) dir); + return dirFlag(*cast(Dir*) &dir); } /++