authorgravatar for vnc5@users.noreply.github.comvnc5 <vnc5@users.noreply.github.com> 2021-10-09 14:04:16+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-02 21:59:47-07:00
log8f89056dc27a77e0e35739db5b4310e68a49d9d3
treeda11a8cf42b904ba1d38c1c184baf8b72925b877
parente8c4fec1b2ea676691aea89cdedd97ea17e26ed6

fix startup procedure for async WinMain


1 files changed, 11 insertions(+), 3 deletions(-)

lib/std/start.zig+11-3
......@@ -511,9 +511,9 @@ inline fn initEventLoopAndCallWinMain() std.os.windows.INT {
511511 };
512512 defer loop.deinit();
513513
514 var result: u8 = undefined;
515 var frame: @Frame(callMainAsync) = undefined;
516 _ = @asyncCall(&frame, &result, callMainAsync, .{loop});
514 var result: std.os.windows.INT = undefined;
515 var frame: @Frame(callWinMainAsync) = undefined;
516 _ = @asyncCall(&frame, &result, callWinMainAsync, .{loop});
517517 loop.run();
518518 return result;
519519 }
......@@ -532,6 +532,14 @@ fn callMainAsync(loop: *std.event.Loop) callconv(.Async) u8 {
532532 return callMain();
533533}
534534
535fn callWinMainAsync(loop: *std.event.Loop) callconv(.Async) std.os.windows.INT {
536 // This prevents the event loop from terminating at least until main() has returned.
537 // TODO This shouldn't be needed here; it should be in the event loop code.
538 loop.beginOneEvent();
539 defer loop.finishOneEvent();
540 return call_wWinMain();
541}
542
535543// This is not marked inline because it is called with @asyncCall when
536544// there is an event loop.
537545pub fn callMain() u8 {