Browse Source

Backends: Reset running state during event processing

Michael Ragazzon 3 years ago
parent
commit
0b740e8459

+ 3 - 1
Backends/RmlUi_Backend_GLFW_GL2.cpp

@@ -150,7 +150,9 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 	data->context = nullptr;
 	data->key_down_callback = nullptr;
 
-	return !glfwWindowShouldClose(data->window);
+	const bool result = !glfwWindowShouldClose(data->window);
+	glfwSetWindowShouldClose(data->window, GLFW_FALSE);
+	return result;
 }
 
 void Backend::RequestExit()

+ 3 - 1
Backends/RmlUi_Backend_GLFW_GL3.cpp

@@ -162,7 +162,9 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 	data->context = nullptr;
 	data->key_down_callback = nullptr;
 
-	return !glfwWindowShouldClose(data->window);
+	const bool result = !glfwWindowShouldClose(data->window);
+	glfwSetWindowShouldClose(data->window, GLFW_FALSE);
+	return result;
 }
 
 void Backend::RequestExit()

+ 2 - 1
Backends/RmlUi_Backend_SDL_GL2.cpp

@@ -252,8 +252,9 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 	RMLUI_ASSERT(data && context);
 
 	bool result = data->running;
-	SDL_Event ev;
+	data->running = true;
 
+	SDL_Event ev;
 	while (SDL_PollEvent(&ev))
 	{
 		switch (ev.type)

+ 2 - 1
Backends/RmlUi_Backend_SDL_GL3.cpp

@@ -237,8 +237,9 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 #endif
 
 	bool result = data->running;
-	SDL_Event ev;
+	data->running = true;
 
+	SDL_Event ev;
 	while (SDL_PollEvent(&ev))
 	{
 		switch (ev.type)

+ 2 - 1
Backends/RmlUi_Backend_SFML_GL2.cpp

@@ -195,8 +195,9 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 
 	// The contents of this function is intended to be copied directly into your main loop.
 	bool result = data->running;
-	sf::Event ev;
+	data->running = true;
 
+	sf::Event ev;
 	while (data->window.pollEvent(ev))
 	{
 		switch (ev.type)

+ 3 - 1
Backends/RmlUi_Backend_Win32_GL2.cpp

@@ -218,7 +218,9 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 	data->context = nullptr;
 	data->key_down_callback = nullptr;
 
-	return data->running;
+	const bool result = data->running;
+	data->running = true;
+	return result;
 }
 
 void Backend::RequestExit()

+ 1 - 0
Backends/RmlUi_Backend_X11_GL2.cpp

@@ -211,6 +211,7 @@ bool Backend::ProcessEvents(Rml::Context* context, KeyDownCallback key_down_call
 
 	Display* display = data->display;
 	bool result = data->running;
+	data->running = true;
 
 	while (XPending(display) > 0)
 	{