From ae7b15de10be579ca6add2e4078e48b9dfdfb7f3 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Fri, 24 Nov 2023 23:01:19 +0100 Subject: [PATCH] container: handle open/close events on rendering thread Windows does not allow changing the gl cursor mode on non main thread (or at least it behaves undefined). Both events may be called from any thread (e.g. the network thread when opening a chest). Thread safety was not guaranteed anymore and thus breaking. Fixes #118 --- .../gui/gui/screen/container/ContainerGUIManager.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt index 96538606e..cb6f6edc1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt @@ -72,7 +72,8 @@ object ContainerGUIManager { registerLocalContainerEvent(guiRenderer) - guiRenderer.connection.events.listen { open(guiRenderer, it.container) } - guiRenderer.connection.events.listen { close(guiRenderer, it.container) } + val queue = guiRenderer.context.queue + guiRenderer.connection.events.listen { queue += { open(guiRenderer, it.container) } } + guiRenderer.connection.events.listen { queue += { close(guiRenderer, it.container) } } } }