From a68ff5713b2dbea11c89939d1ef0b74d70f3cfd7 Mon Sep 17 00:00:00 2001 From: LaurentGom Date: Tue, 27 Oct 2009 11:50:11 +0000 Subject: [PATCH] FS#65 - Add a blocking WaitEvent function git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1247 4e206d99-4929-0410-ac5d-dfc041789085 --- CSFML/build/VC2005/csfml-graphics-d.def | 1 + CSFML/build/VC2005/csfml-graphics.def | 1 + CSFML/build/VC2005/csfml-window-d.def | 1 + CSFML/build/VC2005/csfml-window.def | 1 + CSFML/build/VC2008/csfml-graphics-d.def | 1 + CSFML/build/VC2008/csfml-graphics.def | 1 + CSFML/build/VC2008/csfml-window-d.def | 1 + CSFML/build/VC2008/csfml-window.def | 1 + CSFML/include/SFML/Graphics/RenderWindow.h | 11 ++ CSFML/include/SFML/Graphics/Shape.h | 6 +- CSFML/include/SFML/Window/Window.h | 11 ++ CSFML/src/SFML/ConvertEvent.h | 96 ++++++++++ CSFML/src/SFML/Graphics/RenderWindow.cpp | 68 ++----- CSFML/src/SFML/Internal.h | 6 +- CSFML/src/SFML/Window/Window.cpp | 68 ++----- dotnet/extlibs/csfml-audio.dll | Bin 48640 -> 48640 bytes dotnet/extlibs/csfml-graphics.dll | Bin 1170432 -> 1170432 bytes dotnet/extlibs/csfml-window.dll | Bin 46592 -> 46592 bytes dotnet/src/Graphics/RenderWindow.cs | 15 ++ dotnet/src/Window/Window.cs | 209 ++++++++++++--------- include/SFML/Window/Window.hpp | 27 ++- src/SFML/Window/Linux/WindowImplX11.cpp | 2 +- src/SFML/Window/Linux/WindowImplX11.hpp | 152 +++++++-------- src/SFML/Window/Win32/WindowImplWin32.cpp | 7 +- src/SFML/Window/Win32/WindowImplWin32.hpp | 6 +- src/SFML/Window/Window.cpp | 24 ++- src/SFML/Window/WindowImpl.cpp | 4 +- src/SFML/Window/WindowImpl.hpp | 12 +- 28 files changed, 457 insertions(+), 275 deletions(-) create mode 100644 CSFML/src/SFML/ConvertEvent.h diff --git a/CSFML/build/VC2005/csfml-graphics-d.def b/CSFML/build/VC2005/csfml-graphics-d.def index 701ec03e1..dfbec2074 100644 --- a/CSFML/build/VC2005/csfml-graphics-d.def +++ b/CSFML/build/VC2005/csfml-graphics-d.def @@ -193,6 +193,7 @@ EXPORTS sfRenderWindow_GetHeight sfRenderWindow_GetSettings sfRenderWindow_GetEvent + sfRenderWindow_WaitEvent sfRenderWindow_UseVerticalSync sfRenderWindow_ShowMouseCursor sfRenderWindow_SetCursorPosition diff --git a/CSFML/build/VC2005/csfml-graphics.def b/CSFML/build/VC2005/csfml-graphics.def index 710d629da..29afa47d5 100644 --- a/CSFML/build/VC2005/csfml-graphics.def +++ b/CSFML/build/VC2005/csfml-graphics.def @@ -194,6 +194,7 @@ EXPORTS sfRenderWindow_GetHeight sfRenderWindow_GetSettings sfRenderWindow_GetEvent + sfRenderWindow_WaitEvent sfRenderWindow_UseVerticalSync sfRenderWindow_ShowMouseCursor sfRenderWindow_SetCursorPosition diff --git a/CSFML/build/VC2005/csfml-window-d.def b/CSFML/build/VC2005/csfml-window-d.def index 0003ae98b..8a32efd4d 100644 --- a/CSFML/build/VC2005/csfml-window-d.def +++ b/CSFML/build/VC2005/csfml-window-d.def @@ -19,6 +19,7 @@ EXPORTS sfWindow_GetHeight sfWindow_GetSettings sfWindow_GetEvent + sfWindow_WaitEvent sfWindow_UseVerticalSync sfWindow_ShowMouseCursor sfWindow_SetCursorPosition diff --git a/CSFML/build/VC2005/csfml-window.def b/CSFML/build/VC2005/csfml-window.def index 4e1c05c4d..8b7f0b10b 100644 --- a/CSFML/build/VC2005/csfml-window.def +++ b/CSFML/build/VC2005/csfml-window.def @@ -19,6 +19,7 @@ EXPORTS sfWindow_GetHeight sfWindow_GetSettings sfWindow_GetEvent + sfWindow_WaitEvent sfWindow_UseVerticalSync sfWindow_ShowMouseCursor sfWindow_SetCursorPosition diff --git a/CSFML/build/VC2008/csfml-graphics-d.def b/CSFML/build/VC2008/csfml-graphics-d.def index 701ec03e1..dfbec2074 100644 --- a/CSFML/build/VC2008/csfml-graphics-d.def +++ b/CSFML/build/VC2008/csfml-graphics-d.def @@ -193,6 +193,7 @@ EXPORTS sfRenderWindow_GetHeight sfRenderWindow_GetSettings sfRenderWindow_GetEvent + sfRenderWindow_WaitEvent sfRenderWindow_UseVerticalSync sfRenderWindow_ShowMouseCursor sfRenderWindow_SetCursorPosition diff --git a/CSFML/build/VC2008/csfml-graphics.def b/CSFML/build/VC2008/csfml-graphics.def index 710d629da..29afa47d5 100644 --- a/CSFML/build/VC2008/csfml-graphics.def +++ b/CSFML/build/VC2008/csfml-graphics.def @@ -194,6 +194,7 @@ EXPORTS sfRenderWindow_GetHeight sfRenderWindow_GetSettings sfRenderWindow_GetEvent + sfRenderWindow_WaitEvent sfRenderWindow_UseVerticalSync sfRenderWindow_ShowMouseCursor sfRenderWindow_SetCursorPosition diff --git a/CSFML/build/VC2008/csfml-window-d.def b/CSFML/build/VC2008/csfml-window-d.def index 0003ae98b..8a32efd4d 100644 --- a/CSFML/build/VC2008/csfml-window-d.def +++ b/CSFML/build/VC2008/csfml-window-d.def @@ -19,6 +19,7 @@ EXPORTS sfWindow_GetHeight sfWindow_GetSettings sfWindow_GetEvent + sfWindow_WaitEvent sfWindow_UseVerticalSync sfWindow_ShowMouseCursor sfWindow_SetCursorPosition diff --git a/CSFML/build/VC2008/csfml-window.def b/CSFML/build/VC2008/csfml-window.def index 4e1c05c4d..8b7f0b10b 100644 --- a/CSFML/build/VC2008/csfml-window.def +++ b/CSFML/build/VC2008/csfml-window.def @@ -19,6 +19,7 @@ EXPORTS sfWindow_GetHeight sfWindow_GetSettings sfWindow_GetEvent + sfWindow_WaitEvent sfWindow_UseVerticalSync sfWindow_ShowMouseCursor sfWindow_SetCursorPosition diff --git a/CSFML/include/SFML/Graphics/RenderWindow.h b/CSFML/include/SFML/Graphics/RenderWindow.h index e31a79528..ca6954462 100644 --- a/CSFML/include/SFML/Graphics/RenderWindow.h +++ b/CSFML/include/SFML/Graphics/RenderWindow.h @@ -123,6 +123,17 @@ CSFML_API sfContextSettings sfRenderWindow_GetSettings(sfRenderWindow* renderWin //////////////////////////////////////////////////////////// CSFML_API sfBool sfRenderWindow_GetEvent(sfRenderWindow* renderWindow, sfEvent* event); +//////////////////////////////////////////////////////////// +/// Wait for an event and return it +/// +/// \param renderWindow : Renderwindow object +/// \param event : Event to fill +/// +/// \return sfFalse if an error occured +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfRenderWindow_WaitEvent(sfRenderWindow* renderWindow, sfEvent* event); + //////////////////////////////////////////////////////////// /// Enable / disable vertical synchronization on a window /// diff --git a/CSFML/include/SFML/Graphics/Shape.h b/CSFML/include/SFML/Graphics/Shape.h index 719c26848..12f79944b 100644 --- a/CSFML/include/SFML/Graphics/Shape.h +++ b/CSFML/include/SFML/Graphics/Shape.h @@ -22,8 +22,8 @@ // //////////////////////////////////////////////////////////// -#ifndef SFML_Shape_H -#define SFML_Shape_H +#ifndef SFML_SHAPE_H +#define SFML_SHAPE_H //////////////////////////////////////////////////////////// // Headers @@ -451,4 +451,4 @@ CSFML_API void sfShape_SetPointColor(sfShape* shape, unsigned int index, sfColor CSFML_API void sfShape_SetPointOutlineColor(sfShape* shape, unsigned int index, sfColor color); -#endif // SFML_Shape_H +#endif // SFML_SHAPE_H diff --git a/CSFML/include/SFML/Window/Window.h b/CSFML/include/SFML/Window/Window.h index d39ecf41c..064c94437 100644 --- a/CSFML/include/SFML/Window/Window.h +++ b/CSFML/include/SFML/Window/Window.h @@ -145,6 +145,17 @@ CSFML_API sfContextSettings sfWindow_GetSettings(sfWindow* window); //////////////////////////////////////////////////////////// CSFML_API sfBool sfWindow_GetEvent(sfWindow* window, sfEvent* event); +//////////////////////////////////////////////////////////// +/// Wait for an event and return it +/// +/// \param window : Window object +/// \param event : Event to fill +/// +/// \return sfFalse if an error occured +/// +//////////////////////////////////////////////////////////// +CSFML_API sfBool sfWindow_WaitEvent(sfWindow* window, sfEvent* event); + //////////////////////////////////////////////////////////// /// Enable / disable vertical synchronization on a window /// diff --git a/CSFML/src/SFML/ConvertEvent.h b/CSFML/src/SFML/ConvertEvent.h new file mode 100644 index 000000000..acfb6812a --- /dev/null +++ b/CSFML/src/SFML/ConvertEvent.h @@ -0,0 +1,96 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONVERTEVENT_H +#define SFML_CONVERTEVENT_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +//////////////////////////////////////////////////////////// +// Define a function to convert a sf::Event ot a sfEvent +//////////////////////////////////////////////////////////// +inline void ConvertEvent(const sf::Event& SFMLEvent, sfEvent* event) +{ + // Convert its type + event->Type = static_cast(SFMLEvent.Type); + + // Fill its fields + switch (event->Type) + { + case sfEvtResized : + event->Size.Width = SFMLEvent.Size.Width; + event->Size.Height = SFMLEvent.Size.Height; + break; + + case sfEvtTextEntered : + event->Text.Unicode = SFMLEvent.Text.Unicode; + break; + + case sfEvtKeyReleased : + case sfEvtKeyPressed : + event->Key.Code = static_cast(SFMLEvent.Key.Code); + event->Key.Alt = SFMLEvent.Key.Alt ? sfTrue : sfFalse; + event->Key.Control = SFMLEvent.Key.Control ? sfTrue : sfFalse; + event->Key.Shift = SFMLEvent.Key.Shift ? sfTrue : sfFalse; + break; + + case sfEvtMouseWheelMoved : + event->MouseWheel.Delta = SFMLEvent.MouseWheel.Delta; + break; + + case sfEvtMouseButtonPressed : + case sfEvtMouseButtonReleased : + event->MouseButton.Button = static_cast(SFMLEvent.MouseButton.Button); + event->MouseButton.X = SFMLEvent.MouseButton.X; + event->MouseButton.Y = SFMLEvent.MouseButton.Y; + break; + + case sfEvtMouseMoved : + event->MouseMove.X = SFMLEvent.MouseMove.X; + event->MouseMove.Y = SFMLEvent.MouseMove.Y; + break; + + case sfEvtJoyButtonPressed : + case sfEvtJoyButtonReleased : + event->JoyButton.JoystickId = SFMLEvent.JoyButton.JoystickId; + event->JoyButton.Button = SFMLEvent.JoyButton.Button; + break; + + case sfEvtJoyMoved : + event->JoyMove.JoystickId = SFMLEvent.JoyMove.JoystickId; + event->JoyMove.Axis = static_cast(SFMLEvent.JoyMove.Axis); + event->JoyMove.Position = SFMLEvent.JoyMove.Position; + break; + + default : + break; + } +} + +#endif // SFML_CONVERTEVENT_H diff --git a/CSFML/src/SFML/Graphics/RenderWindow.cpp b/CSFML/src/SFML/Graphics/RenderWindow.cpp index e919c9395..9bc2984ec 100644 --- a/CSFML/src/SFML/Graphics/RenderWindow.cpp +++ b/CSFML/src/SFML/Graphics/RenderWindow.cpp @@ -33,6 +33,7 @@ #include #include #include +#include //////////////////////////////////////////////////////////// @@ -150,60 +151,31 @@ sfBool sfRenderWindow_GetEvent(sfRenderWindow* renderWindow, sfEvent* event) if (!ret) return sfFalse; - // Convert its type - event->Type = static_cast(SFMLEvent.Type); + // Convert the sf::Event event to a sfEvent + ConvertEvent(SFMLEvent, event); - // Fill its fields - switch (event->Type) - { - case sfEvtResized : - event->Size.Width = SFMLEvent.Size.Width; - event->Size.Height = SFMLEvent.Size.Height; - break; + return sfTrue; +} - case sfEvtTextEntered : - event->Text.Unicode = SFMLEvent.Text.Unicode; - break; - case sfEvtKeyReleased : - case sfEvtKeyPressed : - event->Key.Code = static_cast(SFMLEvent.Key.Code); - event->Key.Alt = SFMLEvent.Key.Alt ? sfTrue : sfFalse; - event->Key.Control = SFMLEvent.Key.Control ? sfTrue : sfFalse; - event->Key.Shift = SFMLEvent.Key.Shift ? sfTrue : sfFalse; - break; +//////////////////////////////////////////////////////////// +/// Wait for an event and return it +//////////////////////////////////////////////////////////// +sfBool sfRenderWindow_WaitEvent(sfRenderWindow* renderWindow, sfEvent* event) +{ + CSFML_CHECK_RETURN(renderWindow, sfFalse); + CSFML_CHECK_RETURN(event, sfFalse); - case sfEvtMouseWheelMoved : - event->MouseWheel.Delta = SFMLEvent.MouseWheel.Delta; - break; + // Get the event + sf::Event SFMLEvent; + sfBool ret = renderWindow->This.WaitEvent(SFMLEvent); - case sfEvtMouseButtonPressed : - case sfEvtMouseButtonReleased : - event->MouseButton.Button = static_cast(SFMLEvent.MouseButton.Button); - event->MouseButton.X = SFMLEvent.MouseButton.X; - event->MouseButton.Y = SFMLEvent.MouseButton.Y; - break; + // Error, return + if (!ret) + return sfFalse; - case sfEvtMouseMoved : - event->MouseMove.X = SFMLEvent.MouseMove.X; - event->MouseMove.Y = SFMLEvent.MouseMove.Y; - break; - - case sfEvtJoyButtonPressed : - case sfEvtJoyButtonReleased : - event->JoyButton.JoystickId = SFMLEvent.JoyButton.JoystickId; - event->JoyButton.Button = SFMLEvent.JoyButton.Button; - break; - - case sfEvtJoyMoved : - event->JoyMove.JoystickId = SFMLEvent.JoyMove.JoystickId; - event->JoyMove.Axis = static_cast(SFMLEvent.JoyMove.Axis); - event->JoyMove.Position = SFMLEvent.JoyMove.Position; - break; - - default : - break; - } + // Convert the sf::Event event to a sfEvent + ConvertEvent(SFMLEvent, event); return sfTrue; } diff --git a/CSFML/src/SFML/Internal.h b/CSFML/src/SFML/Internal.h index 7817aa87d..e6dd6cfc6 100644 --- a/CSFML/src/SFML/Internal.h +++ b/CSFML/src/SFML/Internal.h @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////// // // SFML - Simple and Fast Multimedia Library -// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) +// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. @@ -22,6 +22,8 @@ // //////////////////////////////////////////////////////////// +#ifndef SFML_INTERNAL_H +#define SFML_INTERNAL_H //////////////////////////////////////////////////////////// // Define macros to check the validity of CSFML objects @@ -102,3 +104,5 @@ #define CSFML_CALL_PTR_RETURN(Object, Function, Default) (void)Default; return (Object->This->Function); #endif + +#endif // SFML_INTERNAL_H diff --git a/CSFML/src/SFML/Window/Window.cpp b/CSFML/src/SFML/Window/Window.cpp index 55b870a28..d4389fbaa 100644 --- a/CSFML/src/SFML/Window/Window.cpp +++ b/CSFML/src/SFML/Window/Window.cpp @@ -28,6 +28,7 @@ #include #include #include +#include //////////////////////////////////////////////////////////// @@ -139,60 +140,31 @@ sfBool sfWindow_GetEvent(sfWindow* window, sfEvent* event) if (!ret) return sfFalse; - // Convert its type - event->Type = static_cast(SFMLEvent.Type); + // Convert the sf::Event event to a sfEvent + ConvertEvent(SFMLEvent, event); - // Fill its fields - switch (event->Type) - { - case sfEvtResized : - event->Size.Width = SFMLEvent.Size.Width; - event->Size.Height = SFMLEvent.Size.Height; - break; + return sfTrue; +} - case sfEvtTextEntered : - event->Text.Unicode = SFMLEvent.Text.Unicode; - break; - case sfEvtKeyReleased : - case sfEvtKeyPressed : - event->Key.Code = static_cast(SFMLEvent.Key.Code); - event->Key.Alt = SFMLEvent.Key.Alt ? sfTrue : sfFalse; - event->Key.Control = SFMLEvent.Key.Control ? sfTrue : sfFalse; - event->Key.Shift = SFMLEvent.Key.Shift ? sfTrue : sfFalse; - break; +//////////////////////////////////////////////////////////// +/// Wait for an event and return it +//////////////////////////////////////////////////////////// +sfBool sfWindow_WaitEvent(sfWindow* window, sfEvent* event) +{ + CSFML_CHECK_RETURN(window, sfFalse); + CSFML_CHECK_RETURN(event, sfFalse); - case sfEvtMouseWheelMoved : - event->MouseWheel.Delta = SFMLEvent.MouseWheel.Delta; - break; + // Get the event + sf::Event SFMLEvent; + sfBool ret = window->This.WaitEvent(SFMLEvent); - case sfEvtMouseButtonPressed : - case sfEvtMouseButtonReleased : - event->MouseButton.Button = static_cast(SFMLEvent.MouseButton.Button); - event->MouseButton.X = SFMLEvent.MouseButton.X; - event->MouseButton.Y = SFMLEvent.MouseButton.Y; - break; + // Error, return + if (!ret) + return sfFalse; - case sfEvtMouseMoved : - event->MouseMove.X = SFMLEvent.MouseMove.X; - event->MouseMove.Y = SFMLEvent.MouseMove.Y; - break; - - case sfEvtJoyButtonPressed : - case sfEvtJoyButtonReleased : - event->JoyButton.JoystickId = SFMLEvent.JoyButton.JoystickId; - event->JoyButton.Button = SFMLEvent.JoyButton.Button; - break; - - case sfEvtJoyMoved : - event->JoyMove.JoystickId = SFMLEvent.JoyMove.JoystickId; - event->JoyMove.Axis = static_cast(SFMLEvent.JoyMove.Axis); - event->JoyMove.Position = SFMLEvent.JoyMove.Position; - break; - - default : - break; - } + // Convert the sf::Event event to a sfEvent + ConvertEvent(SFMLEvent, event); return sfTrue; } diff --git a/dotnet/extlibs/csfml-audio.dll b/dotnet/extlibs/csfml-audio.dll index 15fbcc8d4edfc3f1955ef0e0e39b378e5a5c204d..502ce538c793e8ea299367126345f4f7143f9a1e 100644 GIT binary patch delta 62 zcmZqp!_@GHX#pdX&Yj6jjDE}le;76gGhQqK@;9rM^|1-Kw_dhdy1>t^GfZXerVY7@ Sn~&6dkY&=ovw7PrFJ%DzR~fGW delta 62 zcmZqp!_@GHX#pdX^v=mljDE}qCopafX1rJethozl{xmLZda7wgp*%tg6;|X QY(7%+K^7#tZI+iZ00{*eI{*Lx diff --git a/dotnet/extlibs/csfml-graphics.dll b/dotnet/extlibs/csfml-graphics.dll index 850d38014a23d562fa6cca149b66f88d17fb6389..c3b9d894e63c7becb4167eb3176e514d5bc2beb1 100644 GIT binary patch delta 73123 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 + /// Internal function to get the next event (blocking) + /// + /// Variable to fill with the raw pointer to the event structure + /// False if any error occured + //////////////////////////////////////////////////////////// + protected override bool WaitEvent(out Event eventToFill) + { + return sfRenderWindow_WaitEvent(This, out eventToFill); + } + //////////////////////////////////////////////////////////// ///

/// Handle the destruction of the object @@ -487,6 +499,9 @@ namespace SFML [DllImport("csfml-graphics"), SuppressUnmanagedCodeSecurity] static extern bool sfRenderWindow_GetEvent(IntPtr This, out Event Evt); + + [DllImport("csfml-graphics"), SuppressUnmanagedCodeSecurity] + static extern bool sfRenderWindow_WaitEvent(IntPtr This, out Event Evt); [DllImport("csfml-graphics"), SuppressUnmanagedCodeSecurity] static extern void sfRenderWindow_Clear(IntPtr This, Color ClearColor); diff --git a/dotnet/src/Window/Window.cs b/dotnet/src/Window/Window.cs index eb1df9bab..7371b7422 100644 --- a/dotnet/src/Window/Window.cs +++ b/dotnet/src/Window/Window.cs @@ -340,97 +340,27 @@ namespace SFML //////////////////////////////////////////////////////////// /// - /// Call the event handlers for each pending event. + /// Wait for a new event and dispatch it to the corresponding + /// event handler + /// + //////////////////////////////////////////////////////////// + public void WaitAndDispatchEvents() + { + Event e; + if (WaitEvent(out e)) + CallEventHandler(e); + } + + //////////////////////////////////////////////////////////// + /// + /// Call the event handlers for each pending event /// //////////////////////////////////////////////////////////// public void DispatchEvents() { Event e; while (GetEvent(out e)) - { - switch (e.Type) - { - case EventType.Closed : - if (Closed != null) - Closed(this, EventArgs.Empty); - break; - - case EventType.GainedFocus : - if (GainedFocus != null) - GainedFocus(this, EventArgs.Empty); - break; - - case EventType.JoyButtonPressed : - if (JoyButtonPressed != null) - JoyButtonPressed(this, new JoyButtonEventArgs(e.JoyButton)); - break; - - case EventType.JoyButtonReleased : - if (JoyButtonReleased != null) - JoyButtonReleased(this, new JoyButtonEventArgs(e.JoyButton)); - break; - - case EventType.JoyMoved : - if (JoyMoved != null) - JoyMoved(this, new JoyMoveEventArgs(e.JoyMove)); - break; - - case EventType.KeyPressed : - if (KeyPressed != null) - KeyPressed(this, new KeyEventArgs(e.Key)); - break; - - case EventType.KeyReleased : - if (KeyReleased != null) - KeyReleased(this, new KeyEventArgs(e.Key)); - break; - - case EventType.LostFocus : - if (LostFocus != null) - LostFocus(this, EventArgs.Empty); - break; - - case EventType.MouseButtonPressed : - if (MouseButtonPressed != null) - MouseButtonPressed(this, new MouseButtonEventArgs(e.MouseButton)); - break; - - case EventType.MouseButtonReleased : - if (MouseButtonReleased != null) - MouseButtonReleased(this, new MouseButtonEventArgs(e.MouseButton)); - break; - - case EventType.MouseEntered : - if (MouseEntered != null) - MouseEntered(this, EventArgs.Empty); - break; - - case EventType.MouseLeft : - if (MouseLeft != null) - MouseLeft(this, EventArgs.Empty); - break; - - case EventType.MouseMoved : - if (MouseMoved != null) - MouseMoved(this, new MouseMoveEventArgs(e.MouseMove)); - break; - - case EventType.MouseWheelMoved : - if (MouseWheelMoved != null) - MouseWheelMoved(this, new MouseWheelEventArgs(e.MouseWheel)); - break; - - case EventType.Resized : - if (Resized != null) - Resized(this, new SizeEventArgs(e.Size)); - break; - - case EventType.TextEntered : - if (TextEntered != null) - TextEntered(this, new TextEventArgs(e.Text)); - break; - } - } + CallEventHandler(e); } //////////////////////////////////////////////////////////// @@ -448,7 +378,7 @@ namespace SFML //////////////////////////////////////////////////////////// /// - /// Internal function to get the next event + /// Internal function to get the next event (non-blocking) /// /// Variable to fill with the raw pointer to the event structure /// True if there was an event, false otherwise @@ -458,6 +388,18 @@ namespace SFML return sfWindow_GetEvent(This, out eventToFill); } + //////////////////////////////////////////////////////////// + /// + /// Internal function to get the next event (blocking) + /// + /// Variable to fill with the raw pointer to the event structure + /// False if any error occured + //////////////////////////////////////////////////////////// + protected virtual bool WaitEvent(out Event eventToFill) + { + return sfWindow_WaitEvent(This, out eventToFill); + } + //////////////////////////////////////////////////////////// /// /// Handle the destruction of the object @@ -469,6 +411,98 @@ namespace SFML sfWindow_Destroy(This); } + //////////////////////////////////////////////////////////// + /// + /// Call the event handler for the given event + /// + /// Event to dispatch + //////////////////////////////////////////////////////////// + private void CallEventHandler(Event e) + { + switch (e.Type) + { + case EventType.Closed : + if (Closed != null) + Closed(this, EventArgs.Empty); + break; + + case EventType.GainedFocus : + if (GainedFocus != null) + GainedFocus(this, EventArgs.Empty); + break; + + case EventType.JoyButtonPressed : + if (JoyButtonPressed != null) + JoyButtonPressed(this, new JoyButtonEventArgs(e.JoyButton)); + break; + + case EventType.JoyButtonReleased : + if (JoyButtonReleased != null) + JoyButtonReleased(this, new JoyButtonEventArgs(e.JoyButton)); + break; + + case EventType.JoyMoved : + if (JoyMoved != null) + JoyMoved(this, new JoyMoveEventArgs(e.JoyMove)); + break; + + case EventType.KeyPressed : + if (KeyPressed != null) + KeyPressed(this, new KeyEventArgs(e.Key)); + break; + + case EventType.KeyReleased : + if (KeyReleased != null) + KeyReleased(this, new KeyEventArgs(e.Key)); + break; + + case EventType.LostFocus : + if (LostFocus != null) + LostFocus(this, EventArgs.Empty); + break; + + case EventType.MouseButtonPressed : + if (MouseButtonPressed != null) + MouseButtonPressed(this, new MouseButtonEventArgs(e.MouseButton)); + break; + + case EventType.MouseButtonReleased : + if (MouseButtonReleased != null) + MouseButtonReleased(this, new MouseButtonEventArgs(e.MouseButton)); + break; + + case EventType.MouseEntered : + if (MouseEntered != null) + MouseEntered(this, EventArgs.Empty); + break; + + case EventType.MouseLeft : + if (MouseLeft != null) + MouseLeft(this, EventArgs.Empty); + break; + + case EventType.MouseMoved : + if (MouseMoved != null) + MouseMoved(this, new MouseMoveEventArgs(e.MouseMove)); + break; + + case EventType.MouseWheelMoved : + if (MouseWheelMoved != null) + MouseWheelMoved(this, new MouseWheelEventArgs(e.MouseWheel)); + break; + + case EventType.Resized : + if (Resized != null) + Resized(this, new SizeEventArgs(e.Size)); + break; + + case EventType.TextEntered : + if (TextEntered != null) + TextEntered(this, new TextEventArgs(e.Text)); + break; + } + } + /// Event handler for the Closed event public event EventHandler Closed = null; @@ -541,6 +575,9 @@ namespace SFML [DllImport("csfml-window"), SuppressUnmanagedCodeSecurity] static extern bool sfWindow_GetEvent(IntPtr This, out Event Evt); + [DllImport("csfml-window"), SuppressUnmanagedCodeSecurity] + static extern bool sfWindow_WaitEvent(IntPtr This, out Event Evt); + [DllImport("csfml-window"), SuppressUnmanagedCodeSecurity] static extern void sfWindow_Display(IntPtr This); diff --git a/include/SFML/Window/Window.hpp b/include/SFML/Window/Window.hpp index 7b3472924..9f2713a0b 100644 --- a/include/SFML/Window/Window.hpp +++ b/include/SFML/Window/Window.hpp @@ -192,7 +192,7 @@ public : //////////////////////////////////////////////////////////// /// \brief Pop the event on top of events stack, if any, and return it /// - /// This function is not blocking, if there's no pending event then + /// This function is not blocking: if there's no pending event then /// it will return false and leave \a event unmodified. /// Note that more than event may be present in the events stack, /// thus you should always call this function in a loop @@ -212,6 +212,31 @@ public : //////////////////////////////////////////////////////////// bool GetEvent(Event& event); + //////////////////////////////////////////////////////////// + /// \brief Wait for an event and return it + /// + /// This function is blocking: if there's no pending event then + /// it will wait until an event is received. + /// After this function returns (and no error occured), + /// the \a event object is always valid and filled properly. + /// This function is typically used when you have a thread that + /// is dedicated to events handling: you want to make this thread + /// sleep as long as no new event is received. + /// \code + /// sf::Event event; + /// if (window.WaitEvent(event)) + /// { + /// // process event... + /// } + /// \endcode + /// + /// \param event Event to be returned + /// + /// \return False if any error occured + /// + //////////////////////////////////////////////////////////// + bool WaitEvent(Event& event); + //////////////////////////////////////////////////////////// /// \brief Enable or disable vertical synchronization /// diff --git a/src/SFML/Window/Linux/WindowImplX11.cpp b/src/SFML/Window/Linux/WindowImplX11.cpp index f0eaeffa9..1f9610a3b 100644 --- a/src/SFML/Window/Linux/WindowImplX11.cpp +++ b/src/SFML/Window/Linux/WindowImplX11.cpp @@ -280,7 +280,7 @@ WindowHandle WindowImplX11::GetHandle() const //////////////////////////////////////////////////////////// -void WindowImplX11::ProcessEvents() +void WindowImplX11::ProcessEvents(bool block) { // This function implements a workaround to properly discard // repeated key events when necessary. The problem is that the diff --git a/src/SFML/Window/Linux/WindowImplX11.hpp b/src/SFML/Window/Linux/WindowImplX11.hpp index 0c8a4ca90..768e2da60 100644 --- a/src/SFML/Window/Linux/WindowImplX11.hpp +++ b/src/SFML/Window/Linux/WindowImplX11.hpp @@ -82,81 +82,83 @@ public : ::Display* GetDisplay() const; private : - - //////////////////////////////////////////////////////////// - /// \brief Get the OS-specific handle of the window - /// - /// \return Handle of the window - /// - //////////////////////////////////////////////////////////// - virtual WindowHandle GetHandle() const; - - //////////////////////////////////////////////////////////// - /// \brief Process incoming events from operating system - /// - //////////////////////////////////////////////////////////// - virtual void ProcessEvents(); - - //////////////////////////////////////////////////////////// - /// \brief Show or hide the mouse cursor - /// - /// \param show True to show, false to hide - /// - //////////////////////////////////////////////////////////// - virtual void ShowMouseCursor(bool show); - - //////////////////////////////////////////////////////////// - /// \brief Change the position of the mouse cursor - /// - /// \param left Left coordinate of the cursor, relative to the window - /// \param top Top coordinate of the cursor, relative to the window - /// - //////////////////////////////////////////////////////////// - virtual void SetCursorPosition(unsigned int left, unsigned int top); - - //////////////////////////////////////////////////////////// - /// \brief Change the position of the window on screen - /// - /// \param left Left position - /// \param top Top position - /// - //////////////////////////////////////////////////////////// - virtual void SetPosition(int left, int top); - - //////////////////////////////////////////////////////////// - /// \brief Change the size of the rendering region of the window - /// - /// \param width New width - /// \param height New height - /// - //////////////////////////////////////////////////////////// - virtual void SetSize(unsigned int width, unsigned int height); - - //////////////////////////////////////////////////////////// - /// \brief Show or hide the window - /// - /// \param show True to show, false to hide - /// - //////////////////////////////////////////////////////////// - virtual void Show(bool show); - - //////////////////////////////////////////////////////////// - /// \brief Enable or disable automatic key-repeat - /// - /// \param enabled True to enable, false to disable - /// - //////////////////////////////////////////////////////////// - virtual void EnableKeyRepeat(bool enabled); - - //////////////////////////////////////////////////////////// - /// \brief Change the window's icon - /// - /// \param width Icon's width, in pixels - /// \param height Icon's height, in pixels - /// \param pixels Pointer to the pixels in memory, format must be RGBA 32 bits - /// - //////////////////////////////////////////////////////////// - virtual void SetIcon(unsigned int width, unsigned int height, const Uint8* pixels); + + //////////////////////////////////////////////////////////// + /// \brief Get the OS-specific handle of the window + /// + /// \return Handle of the window + /// + //////////////////////////////////////////////////////////// + virtual WindowHandle GetHandle() const; + + //////////////////////////////////////////////////////////// + /// \brief Process incoming events from the operating system + /// + /// \param block Use true to block the thread until an event arrives + /// + //////////////////////////////////////////////////////////// + virtual void ProcessEvents(bool block); + + //////////////////////////////////////////////////////////// + /// \brief Show or hide the mouse cursor + /// + /// \param show True to show, false to hide + /// + //////////////////////////////////////////////////////////// + virtual void ShowMouseCursor(bool show); + + //////////////////////////////////////////////////////////// + /// \brief Change the position of the mouse cursor + /// + /// \param left Left coordinate of the cursor, relative to the window + /// \param top Top coordinate of the cursor, relative to the window + /// + //////////////////////////////////////////////////////////// + virtual void SetCursorPosition(unsigned int left, unsigned int top); + + //////////////////////////////////////////////////////////// + /// \brief Change the position of the window on screen + /// + /// \param left Left position + /// \param top Top position + /// + //////////////////////////////////////////////////////////// + virtual void SetPosition(int left, int top); + + //////////////////////////////////////////////////////////// + /// \brief Change the size of the rendering region of the window + /// + /// \param width New width + /// \param height New height + /// + //////////////////////////////////////////////////////////// + virtual void SetSize(unsigned int width, unsigned int height); + + //////////////////////////////////////////////////////////// + /// \brief Show or hide the window + /// + /// \param show True to show, false to hide + /// + //////////////////////////////////////////////////////////// + virtual void Show(bool show); + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable automatic key-repeat + /// + /// \param enabled True to enable, false to disable + /// + //////////////////////////////////////////////////////////// + virtual void EnableKeyRepeat(bool enabled); + + //////////////////////////////////////////////////////////// + /// \brief Change the window's icon + /// + /// \param width Icon's width, in pixels + /// \param height Icon's height, in pixels + /// \param pixels Pointer to the pixels in memory, format must be RGBA 32 bits + /// + //////////////////////////////////////////////////////////// + virtual void SetIcon(unsigned int width, unsigned int height, const Uint8* pixels); //////////////////////////////////////////////////////////// /// \brief Switch to fullscreen mode diff --git a/src/SFML/Window/Win32/WindowImplWin32.cpp b/src/SFML/Window/Win32/WindowImplWin32.cpp index 34a6f19a3..01a0bf483 100644 --- a/src/SFML/Window/Win32/WindowImplWin32.cpp +++ b/src/SFML/Window/Win32/WindowImplWin32.cpp @@ -202,11 +202,14 @@ WindowHandle WindowImplWin32::GetHandle() const //////////////////////////////////////////////////////////// -void WindowImplWin32::ProcessEvents() +void WindowImplWin32::ProcessEvents(bool block) { - // We update the window only if we own it + // We process the window events only if we own it if (!myCallback) { + if (block) + WaitMessage(); + MSG message; while (PeekMessage(&message, myHandle, 0, 0, PM_REMOVE)) { diff --git a/src/SFML/Window/Win32/WindowImplWin32.hpp b/src/SFML/Window/Win32/WindowImplWin32.hpp index f5fcb9e35..232b93e47 100644 --- a/src/SFML/Window/Win32/WindowImplWin32.hpp +++ b/src/SFML/Window/Win32/WindowImplWin32.hpp @@ -81,10 +81,12 @@ private : virtual WindowHandle GetHandle() const; //////////////////////////////////////////////////////////// - /// \brief Process incoming events from operating system + /// \brief Process incoming events from the operating system + /// + /// \param block Use true to block the thread until an event arrives /// //////////////////////////////////////////////////////////// - virtual void ProcessEvents(); + virtual void ProcessEvents(bool block); //////////////////////////////////////////////////////////// /// \brief Show or hide the mouse cursor diff --git a/src/SFML/Window/Window.cpp b/src/SFML/Window/Window.cpp index ac92c142f..e8eedaa7b 100644 --- a/src/SFML/Window/Window.cpp +++ b/src/SFML/Window/Window.cpp @@ -211,9 +211,29 @@ bool Window::GetEvent(Event& event) { // Let the window implementation process incoming events if the events queue is empty if (myWindow && myEvents.empty()) - myWindow->DoEvents(); + myWindow->DoEvents(false); - // Pop first event of queue, if not empty + // Pop the first event of the queue, if it is not empty + if (!myEvents.empty()) + { + event = myEvents.front(); + myEvents.pop(); + + return true; + } + + return false; +} + + +//////////////////////////////////////////////////////////// +bool Window::WaitEvent(Event& event) +{ + // Let the window implementation process incoming events if the events queue is empty + if (myWindow && myEvents.empty()) + myWindow->DoEvents(true); + + // Pop the first event of the queue, if it is not empty if (!myEvents.empty()) { event = myEvents.front(); diff --git a/src/SFML/Window/WindowImpl.cpp b/src/SFML/Window/WindowImpl.cpp index cc754199a..7e411905e 100644 --- a/src/SFML/Window/WindowImpl.cpp +++ b/src/SFML/Window/WindowImpl.cpp @@ -126,13 +126,13 @@ void WindowImpl::SetJoystickThreshold(float threshold) //////////////////////////////////////////////////////////// -void WindowImpl::DoEvents() +void WindowImpl::DoEvents(bool block) { // Read the joysticks state and generate the appropriate events ProcessJoystickEvents(); // Let the derived class process other events - ProcessEvents(); + ProcessEvents(block); } diff --git a/src/SFML/Window/WindowImpl.hpp b/src/SFML/Window/WindowImpl.hpp index 06cfe0b51..82272bd11 100644 --- a/src/SFML/Window/WindowImpl.hpp +++ b/src/SFML/Window/WindowImpl.hpp @@ -124,10 +124,12 @@ public : void SetJoystickThreshold(float threshold); //////////////////////////////////////////////////////////// - /// \brief Process incoming events from operating system + /// \brief Process incoming events from the operating system + /// + /// \param block Use true to block the thread until an event arrives /// //////////////////////////////////////////////////////////// - void DoEvents(); + void DoEvents(bool block); //////////////////////////////////////////////////////////// /// \brief Get the OS-specific handle of the window @@ -229,10 +231,12 @@ private : void ProcessJoystickEvents(); //////////////////////////////////////////////////////////// - /// \brief Process incoming events from operating system + /// \brief Process incoming events from the operating system + /// + /// \param block Use true to block the thread until an event arrives /// //////////////////////////////////////////////////////////// - virtual void ProcessEvents() = 0; + virtual void ProcessEvents(bool block) = 0; //////////////////////////////////////////////////////////// // Total number of joysticks supported