Ver código fonte

Corrected empty check of OsEventQueue in WindowsDevice.process_events

Dexter89 12 anos atrás
pai
commit
c0519d0a91
1 arquivos alterados com 40 adições e 37 exclusões
  1. 40 37
      engine/os/win/main.cpp

+ 40 - 37
engine/os/win/main.cpp

@@ -427,53 +427,56 @@ public:
 	bool process_events()
 	{
 		OsEvent event;
-		do
+		bool exit = false;
+
+		while(m_queue.pop_event(event))
 		{
-			m_queue.pop_event(event);
+			if (event.type == OsEvent::NONE) continue;
 
-			if (event.type != OsEvent::NONE)
+			switch (event.type)
 			{
-				switch (event.type)
+				case OsEvent::MOUSE:
 				{
-					case OsEvent::MOUSE:
-					{
-						const OsMouseEvent& ev = event.mouse;
-						switch (ev.type)
-						{
-							case OsMouseEvent::BUTTON: m_mouse->set_button_state(ev.x, ev.y, ev.button, ev.pressed); break;
-							case OsMouseEvent::MOVE: m_mouse->set_position(ev.x, ev.y); break;
-							default: CE_FATAL("Oops, unknown mouse event type"); break;
-						}
-
-						break;
-					}
-					case OsEvent::KEYBOARD:
-					{
-						const OsKeyboardEvent& ev = event.keyboard;
-						m_keyboard->set_button_state(ev.button, ev.pressed);
-						break;
-					}
-					case OsEvent::METRICS:
-					{
-						const OsMetricsEvent& ev = event.metrics;
-						m_mouse->set_metrics(ev.width, ev.height);
-						break;
-					}
-					case OsEvent::EXIT:
-					{
-						return true;
-					}
-					default:
+					const OsMouseEvent& ev = event.mouse;
+					switch (ev.type)
 					{
-						Log::d("Unmanaged");
-						break;
+						case OsMouseEvent::BUTTON: m_mouse->set_button_state(ev.x, ev.y, ev.button, ev.pressed); break;
+						case OsMouseEvent::MOVE: m_mouse->set_position(ev.x, ev.y); break;
+						default: CE_FATAL("Oops, unknown mouse event type"); break;
 					}
+
+					break;
+				}
+				case OsEvent::KEYBOARD:
+				{
+					const OsKeyboardEvent& ev = event.keyboard;
+					m_keyboard->set_button_state(ev.button, ev.pressed);
+					break;
+				}
+				case OsEvent::METRICS:
+				{
+					const OsMetricsEvent& ev = event.metrics;
+					m_mouse->set_metrics(ev.width, ev.height);
+					//m_window->m_x = ev.x;
+					//m_window->m_y = ev.y;
+					//m_window->m_width = ev.width;
+					//m_window->m_height = ev.height;
+					break;
+				}
+				case OsEvent::EXIT:
+				{
+					exit = true;
+					break;
+				}
+				default:
+				{
+					CE_FATAL("Unknown Os Event");
+					break;
 				}
 			}
 		}
-		while (event.type != OsEvent::NONE);
 
-		return false;
+		return exit;
 	}
 
 	//-----------------------------------------------------------------------------