{"push_id":575345624,"size":1,"distinct_size":1,"ref":"refs/heads/ui","head":"ff56cd68b50989c26b381de02287c8326c868400","before":"97b66a3d2ffe24be54f9b62f2fc7dd218b47c75b","commits":[{"sha":"ff56cd68b50989c26b381de02287c8326c868400","author":{"email":"5f07da4ef91df47ce86140c1a88295b5c75f0741@gmail.com","name":"Ethan Burns"},"message":"Fix a deadlock between sdl2UI.do and window.event.\n\nThere was a deadlock between sdl2UI.run and the main event loop\nif the main event loop both send to sdl2UI.do (Window.Draw)\nand also received from Window.Events().\nThe sdl2UI.run go routine would block sending on Window.Events()\nand the main loop go routine would block sending on sdl2UI.do.\nThis is the classic dining philosophers problem.\n\nTo break the deadlock, I introduced a new go routine\nthat proxies events from sdl2UI.run\nto the window's output event channel.\nThis way, the events are received in the order that they are sent\nand sdl2UI.run never blocks sending an event—the proxy go routine\nis always able to receive an event from sdl2UI.run.\n\nFixes #58.","distinct":true,"url":"https://api.github.com/repos/eaburns/T/commits/ff56cd68b50989c26b381de02287c8326c868400"}]}