SFML Changelog

What's new in SFML 2.3.2

Nov 12, 2015
  • GENERAL:
  • Fixed an issue where FindSFML.cmake couldn't find older versions of SFML (#903)
  • Robust alCheck and glCheck macros (#917)
  • Fixed FindSFML.cmake to use the uppercase FLAC name (#923)
  • Added a CONTRIBUTING file so GitHub shows a message when creating a new issue (#932)
  • GRAPHICS:
  • Bug fixes:
  • Fixed clear bug on RenderTextures (#915)
  • Fixed image file extension detection (#929, #930, #931)
  • Secure function against random data return (#935, #942)

New in SFML 2.3 (May 11, 2015)

  • GENERAL:
  • Examples only link against sfml-main in release mode (#610, #766)
  • Replaced unsigned int with std::size_t for array indices and sizes (#739)
  • Fixed some issues with the Doxygen documentation (#750)
  • Added support for EditorConfig (#751)
  • Hide success message for CMake in quiet mode (#753)
  • Improved documentation for statuses with sf::Ftp (#763)
  • Moved stb_image into the extlibs directory (#795)
  • Changed the SOVERSION to major.minor (#812)
  • Fixed warnings about switch-statements (#863)
  • Added missing includes in the general headers (#851)
  • [Android] Updated toolchain file and dependencies (#791)
  • [Linux] Fixed missing pthread dependency (#794)
  • [OS X] Relaxed CMake installation rules regarding framework dependencies (#767)
  • WINDOW:
  • Features:
  • Added new events for handling high-precision scrolling (#95, #810, #837)
  • Switched from Xlib to XCB (#200, #319, #694, #780, #813, #825)
  • Added support for OpenGL 3 core context creation (#654, #779)
  • Bug fixes:
  • Fixed glXSwapIntervalSGI being broken for some driver implementations (#727, #779)
  • Fixed simultaneous context operations causing crashes on some AMD hardware (#778, #779)
  • Fixed joystick identification (#809, #811)
  • [iOS] Fixed various issues including stencil bits, device orientation and retina support (#748)
  • [iOS] Fixed inconsistency between sf::Touch::getPosition and touch events (#875)
  • [Linux] Fixed Alt+F4 not getting triggered in window mode (#274)
  • [Linux] Fixed Unix joystick stuff (#838)
  • [OS X] Fixed typo in JoystickImpl.cpp to prevent a crash (#762, #765)
  • [OS X] Fixed an issue in InputImpl::getSFOpenGLViewFromSFMLWindow (#782, #792)
  • GRAPHICS:
  • Features:
  • Replaced GLEW with loader generated by glLoadGen (#779)
  • Added a new constructor to sf::Color that takes an sf::Uint32 (#722)
  • Updated stb_image to v2.02 (#777)
  • Updated FreeType to v2.5.5 (#799, #804)
  • Added checks for software OpenGL (#870)
  • Bug fixes:
  • Fixed GL_ARB_compatibility not being detected (#859)
  • Fixed pixel format selection (#862)
  • Bumped back the OpenGL version requirement to 1.1 (#858)
  • AUDIO:
  • Features:
  • Dropped libsndfile and started using Vorbis, FLAC and OGG directly (#604, #757)
  • Added a FLAC file to the sound example (#815)
  • Bug fixes:
  • Fixed access violation error in the destructor of sf::AudioDevice (#30, #602)
  • [OS X] Fixed threading issue with sf::SoundStream and OpenAL (#541, #831)
  • NETWORK:
  • Bug fixes:
  • Fixed sf::TcpSocket not handling partial sends properly (#749, #796)

New in SFML 2.2 (Dec 17, 2014)

  • GENERAL:
  • Support for iOS and Android platform (#410, #440)
  • Various documentation corrections (#438, #496, #497, #714)
  • Fixed support for compilers on Debian FreeBSD (#380, #578)
  • Added support for Visual Studio 2013 and proper support for the TDM builds (#482)
  • Fixed CMake problems related to FindSFML and cached variables (#637, #684)
  • Switched and enforced LF line endings (#708, #712)
  • Updated OpenAL to version 1.15.1 (d077210)
  • Made compiler and OS variable names much clearer in CMake files (9b0ed30)
  • Re-enabled RPATH feature (e157e7a)
  • Slight adjustments to the examples (#737)
  • [OS X] Fixed incorrect symlink in freetype.framework (#519)
  • [OS X] CMake module for correct dependencies (#548)
  • [OS X] Fixed SFML target for Xcode (#595, #596)
  • [OS X] Updated implementation, mainly reverting to non-ARC (#601)
  • [OS X] Fixed memory leaks and dead store (#615)
  • [OS X] Improved event handling and performance (#617)
  • [OS X] Reduced memory usage (#672, #698)
  • [OS X] OS X 10.10 support (#691, #699)
  • [OS X] Improve flexibility of dependencies' locations (#713)
  • SYSTEM:
  • Features:
  • Added substring and replace functions to sf::String (#21, #355)
  • Added toUtfX to sf::String (#501)
  • Added fromUtfX functions to set the internal data to a string by converting from another string in a fixed encoding (#196)
  • Added modulo operator for sf::Time (#429, #430)
  • Added division operator for sf::Time (#453)
  • Bug fixes:
  • Ensured a high resolution for sf::sleep (#439, #475)
  • [Windows] Fixed stack unalignment by two internal functions (#412)
  • WINDOW:
  • Features:
  • Added window methods to request and to check focus (#518, #525, #613, #723, #735)
  • Provide name, manufacturer ID and product ID via sf::Joystick (#152, #528)
  • [FreeBDS] Joystick support (#477)
  • [OS X] Improved integration with menus and dock actions (#11)
  • [OS X] Support for OpenGL 3.2 (#84)
  • [OS X] Improved fullscreen support (#343)
  • [OS X] Added support for retina displays (#353, #388)
  • Bug fixes:
  • sf::Window::create() now also resets framerate limit (#371)
  • Fixed OpenGL context leak (#635, #705)
  • Fixed various joystick problems (memory leak, accelerometer detected, code refactoring) (#660, #686, #742, #743)
  • Optimized sf::Window::waitEvent a bit, no sleep if events are available at first try (ff555d6)
  • [OS X] Fixes KeyReleased not being fired in fullscreen mode (#465)
  • [OS X] Fixed an issue where disconnecting the keyboard would cause a crash (#467)
  • [OS X] Fixed unexpected resizing behavior (#468)
  • [OS X] Improved resizing windows (#474)
  • [OS X] Fixed memory leak with sf::Window::create() (#484)
  • [OS X] Fixed menu shortcuts in fullscreen on OS X (#527)
  • [OS X] Improved cursor hiding (#703)
  • [OS X] Fixed right click not detected with trackpads (#716, #730)
  • GRAPHICS:
  • Features:
  • Provide more information about the loaded font in sf::Font (#164)
  • Implemented a more flexible blending system (#298)
  • Added strikethrough text style (#243, #362, #682)
  • Slight optimization for sf::Text::setString (#413)
  • Added subtraction operator for sf::Color (#114, #145)
  • Optimized sf::Image::flipVertically/flipHorizontally (#555)
  • Changed sf::Font measurements from int to float to allow better underline drawing (#693)
  • Bug fixes:
  • Improved text quality for small and pixelated fonts (#228)
  • Yet another fix for Intel GPUs with sf::RenderTexture (#418)
  • Removed VTab since it cause issues and doesn't have a use nowadays (#442, #445, #460, #588)
  • Fixed broken BDF and PCF font formats (#448)
  • Fixed compilation issue with newer versions of GCC for sf::Rect (#458)
  • Fixed resetGLStates() not explicitly setting the default polygon mode (#480)
  • Fixed division-by-zero in sf::RectangleShape (#499)
  • Fixed potential memory leak in sf::Font (#509)
  • Updated glext and removed glxext (#511, #583)
  • Make sure texture unit 0 is active when resetting sf::RenderTarget states (#523, #591)
  • Fixed texture rect computation in fonts (#669)
  • Improved rendering of underlined text (#593)
  • Avoided repeated output of error messages (#566)
  • Fixed text rendered with vertical offset on ascent and font size mismatch (#576)
  • Fixed rounding problem for viewports (#598)
  • Fixed sf::Shader::isAvailable() possibly breaking context management (#211, #603, #608, #603)
  • Fixed sf::Texture::getMaximumSize() possibly breaking context management (#666)
  • Fixed various sf::Text rendering issues (#692, #699)
  • The texture matrix is now reset in sf::Texture::bind(NULL) (7c4b058)
  • AUDIO:
  • Features:
  • Added support for selecting the audio capture device (#220, #470)
  • Make sf::SoundRecorder processing frequency configurable (#333)
  • Added up vector to sf::Listener (#545)
  • Bug fixes:
  • Prevented sf::SoundStream::setPlayingOffset() from restarting playing even when paused (#203, #592)
  • Fixed sf::SoundBuffer contents not being able to be updated when still attached to sounds (#354, 367, #390, #589)
  • Catch audio format error and prevent division by zero (#529)
  • Fixed sf::SoundBuffer returning wrong duration for sounds containing more than ~4.3 million samples (2ff58ed)
  • Optimized sf::Listener with a cache (d97e524)
  • NETWORK:
  • Features:
  • Added support for PUT and DELETE in sf::Http (#257, #312, #607)
  • Added support for chunked HTTP transfers (#296, #337)
  • Added support for 64-bit integers in sf::Packet (#710)
  • Made sf::Ftp::sendCommand() public (2c5cab5)
  • Bug fixes:
  • Checked socket descriptor limit (#153, #628, #683)
  • Fixed sf::TcpSocket::connect()'s switching from blocking to non-blocking mode on immediate connection success (#221)
  • Fixed FTP download and upload file sizes being limited by available RAM (#565, #590)
  • Fixes C++11 compiler warnings for sf::Uint8 (#731, #732)

New in SFML 2.1 (Jul 29, 2013)

  • sfml-window:
  • Fixed MouseMove event sometimes not generated when holding left button on Windows (#225)
  • Fixed ContextSettings ignored when creating a 3.x/4.x OpenGL context on Linux (#258)
  • Fixed ContextSettings ignored on Linux when creating a window (#35)
  • Fixed windows bigger than the desktop not appearing on Windows (#215)
  • Fixed KeyRelease events sometimes not reported on Linux (#404)
  • Now using inotify on Linux to avoid constantly polling joystick connections (#96)
  • Add keypad return, equal and period keys support for OS X
  • Improved mouse events on OS X regarding fullscreen mode
  • Improved mouse events on OS X (#213, #277)
  • Improved reactivity of setMousePosition on OS X (#290)
  • Fixed mouse moved event on OS X when dragging the cursor (#277)
  • Added support for right control key on OS X
  • Fixed KeyRelease event with CMD key pressed (#381)
  • Improved TextEntered for OS X (#377)
  • Fixed taskbar bugs on Windows (#328, #69)
  • Improved the performances of Window::getSize() (the size is now cached)
  • Added the WM_CLASS property to SFML windows on Linux
  • Fixed Window::getPosition() on Linux (#346)
  • Fake resize events are no longer sent when the window is moved, on Linux
  • Unicode characters outside the BMP (> 0xFFFF) are now correctly handled on Windows (#366)
  • Pressing ALT or F10 on Windows no longer steals the focus
  • sfml-graphics:
  • Fixed bounding rect of sf::Text ignoring whitespaces (#216)
  • Checking errors in RenderTarget::pushGLStates() to avoid generating false error messages when user leaves unchecked OpenGL errors (#340)
  • Solved graphics resources not updated or corrupted when loaded in a thread (#411)
  • Fixed white pixel showing on first character of sf::Text (#414)
  • Optimized Shader::setParameter functions, by using a cache internally (#316, #358)
  • sf::Rect::contains and sf::Rect::intersects now handle rectangles with negative dimensions correctly (#219)
  • Fixed Shape::setTextureRect not working when called before setTexture
  • sfml-audio:
  • Added a workaround for a bug in the OS X implementation of OpenAL (unsupported channel count no properly detected) (#201)
  • loadFromStream functions now explicitly reset the stream (seek(0)) before starting to read (#349)
  • Fixed SoundBuffer::loadFromStream reading past the end of the stream (#214)
  • sfml-network:
  • Replaced the deprecated gethostbyname with getaddrinfo (#47)
  • Fixed non-blocking connection with a sf::TcpSocket on Windows
  • Minor improvements to sf::Packet operators (now using strlen and wcslen instead of explicit loops) (#118)
  • Fixed TCP packet data corruption in non-blocking mode (#402, #119)
  • On Unix systems, a socket disconnection no longer stops the program with signal SIGPIPE (#72)
  • Examples:
  • Updated the Window and OpenGL examples (got rid of GLU and immediate mode)

New in SFML 2.0 RC (May 18, 2012)

  • SYSTEM:
  • OS-specific implementations (threads, mutexes) no longer appear in the public headers
  • Added thread-local storage classes
  • Made sf::Thread more flexible, it can now be constructed from various function types (member, non-member, with or without argument)
  • Improved string handling: added the sf::String and sf::Utf classes
  • Errors are now written to a SFML specific stream (sf::err()) rather than std::cerr
  • Removed the sf::Randomizer class
  • sf::Mutex is now recursive on all platforms (was not on Linux and Mac OS X)
  • Added the sf::InputStream interface, to write your own custom data streams
  • Improved the reliability of the sf::Clock implementation: it is now monotonic, and uses the best resolution available
  • Added the sf::Time class to represent time values
  • Renamed sf::Clock::Reset to Restart, and it now returns the elapsed time
  • WINDOW:
  • Renamed sf::WindowSettings to sf::ContextSettings, changed default values (24, 8, 0) -> (0, 0, 0)
  • Added the context version to sf::ContextSettings (to be allow creating OpenGL 3.x or 4.x contexts)
  • OpenGL headers are no longer included by default in sfml-window, it is now in a dedicated header: SFML/OpenGL.hpp
  • Added sf::Style::Default for sf::Window
  • Merged sf::VideoMode::GetModesCount and sf::VideoMode::GetMode into a single function sf::VideoMode::GetFullscreenModes
  • Added a blocking WaitEvent function in sf::Window
  • Added sf::Window::GetSystemHandle() to retrieve the internal, OS specific handle of the window
  • Added SetTitle and GetPosition functions to sf::Window
  • Added mouse position to the Event::MouseWheelMoved event
  • Added support for OpenGL 3 (and above) contexts
  • sf::Input has been replaced with sf::Joystick, sf::Keyboard, sf::Mouse, which are directly connected to the OS rather than relying on events
  • Renamed accessors in sf::Window to be more consistent (UseVerticalSync -> SetVerticalSyncEnabled, Show -> SetVisible, etc.)
  • Added JoystickConnected and JoystickDisconnected events
  • GRAPHICS:
  • Added the sf::RenderTexture class, to draw to a texture rather than to a window
  • Added the sf::Texture class, sf::Image is now a simple pixel storage
  • Slightly changed the interface of sf::View
  • Added viewport to sf::View
  • Added rotation to sf::View
  • Improved rendering performances
  • Removed RenderTarget::PreserveOpenGLStates, replaced with PushGlStates/PopGlStates
  • Added Texture::GetMaximumSize()
  • Views are now handled by value (copied), not by reference
  • Renamed membres in sf::Glyph: Rectangle -> Bounds, TexCoords -> TextureRect
  • Renamed sf::PostFx to sf::Shader, which now uses pure GLSL and is more flexible (can be applied to individual drawables)
  • Added support for vertex shaders in sf::Shader
  • Inverted angles in drawable classes
  • Textures are not smooth anymore by default
  • Added sf::Texture::SetRepeated/IsRepeated
  • Renamed sf::String to sf::Text
  • Added Texture::UpdatePixels for fast pixel updates from various sources (a pixel array, a sf::Image, a sf::Window)
  • sf::Rect is now defined as [left, top, width, height]
  • Added a parameter to Sprite::SetTexture, to allow auto-adjustment of the subrect to the size of the new texture
  • Fixed tab character not properly rendered in sf::Text
  • Renamed the Center property of drawables to Origin
  • sf::Font now dynamically adapts to the rendered text, there's no more fixed size and character set
  • Added sf::Font::LoadFromStream, sf::Image::LoadFromStream, sf::Texture::LoadFromStream, sf::Shader::LoadFromStream
  • Added Image::FlipHorizontally and Image::FlipVertically
  • Added low-level graphics classes: sf::Vertex and sf::VertexArray, to allow creating more optimized drawable entities
  • Removed blending mode, shader, etc. from drawable classes, they are now in a sf::RenderStates class that you can pass to the Draw function
  • sf::Shape is now an abstract base class, added the sf::CircleShape, sf::RectangleShape and sf::ConvexShape derived classes
  • sf::Shape can now be textured
  • Added the sf::Transform and sf::Transformable classes
  • AUDIO:
  • Removed dependency to stb_vorbis
  • Renamed SoundRecorder::CanCapture to SoundRecorder::IsAvailable
  • Fixed sf::Listener's target that was a relative direction instead of an absolute position
  • Added support for saving audio files as ogg/vorbis
  • Added the ability to seek in sound streams and musics
  • Added sf::SoundBuffer::LoadFromStream, sf::Music::OpenFromStream
  • NETWORK:
  • Reorganized and renamed the socket classes, however the features remain the same
  • Socket classes instances now have entity semantics, they cannot be copied anymore
  • Removed dependencies to system specific libraries in the public headers
  • Made packet handling with UDP sockets more robust
  • Added support for Unicode strings in sf::Packet
  • Got rid of whatismyip.org as the default server for public IP retrieval
  • Changed sf::Packet::operator bool() to something similar that avoids inappropriate implicit conversions
  • Added support for the UDP broadcast address
  • Added functions to retrieve the local and peer port/address in socket classes
  • GENERAL:
  • Important improvements to the API documentation, it contains more details and code examples
  • Changed const char* to const void* in functions that deal with raw bytes
  • The external libraries used by sfml-graphics are now linked instead of being integrated into the source code
  • Removed the Qt and wxWidgets samples
  • Switched to the CMake meta-build system, dropped individual support for compilers/IDEs
  • New naming conventions for binaries (major version number appears in Windows DLLs -not import libraries)
  • You now need to define SFML_STATIC for static libraries (was previously SFML_DYNAMIC for dynamic libraries)
  • Added the SFML_VERSION_MAJOR and SFML_VERSION_MINOR macros
  • Added support for 64-bits builds
  • Changed the naming convention for public members and free functions (lowerCase instead of UpperCase)

New in SFML 1.6 (Apr 21, 2010)

  • System
  • Fixed the initial seed of sf::Randomizer which is always the same on some configurations
  • Window
  • Fixed inconsistencies with the state of the left/right shift keys on Windows
  • Increased the number of supported joysticks to 4
  • Fixed joystick axes being sometimes ignored
  • Fixed Event::TextEntered ignoring the key repeat state
  • Fixed KeyEvent.Alt/Control/Shift members not working, in SFML.Net
  • Graphics
  • Disabled implicit conversion from sf::Image to sf::Sprite
  • Fixed crash with the default font at global exit on Windows
  • Made image loading thread-safe
  • Improved accuracy of rendering
  • Fixed current OpenGL matrix mode not properly saved when PreserveOpenGLStates is activated
  • Network
  • Fixed crashes in Ftp::Download and Ftp::Upload with empty files
  • Fixed SocketTCP::Connect with timeout returning success when connection failed
  • Http::Response::GetField is now case insensitive
  • Added "Connection: close" by default for HTTP 1.1 requests
  • Fixed POST requests not working with sf::Http
  • Audio
  • Copied Attenuation and MinDistance members in sf::Sound's copy constructor
  • Fixed crash when destroying a SoundBuffer used by a Sound
  • Fixed tiny musics ignoring the "loop" flag
  • Fixed musics sometimes being stuck after looping twice
  • General
  • SFML libraries are now be compiled with gcc 4.4.0 on Windows (MinGW)
  • Updated the Qt sample

New in SFML 1.5 (Jun 7, 2009)

  • Fixed application frozen if a USB joystick was plugged, on Windows
  • Fixed joysticks sometimes not working at all on Vista
  • Updated the Qt sample and tutorial to work with Qt 4.5
  • Added missing VideoMode functions to SFML.Net
  • Properly detect supported depths for video modes on Linux
  • Fixed undefined behaviour when creating two fullscreen windows
  • Fixed Window::SetSize not resizing to the requested size, on Windows
  • Fixed KeyPressed event sometimes returning a null key code on Windows
  • Fixed EnableKeyRepeat not working anymore after a second window has been created on Linux
  • Fixed bug when destroying / recreating a window on Mac OS X
  • Added support for creating a sf::Window from a Cocoa window on Mac OS X
  • Desktop resolution is properly restored when hiding the application on Mac OS X
  • Fixed accentuated characters not properly retrieved on Mac OS X
  • Added support for composed characters on Mac OS X

New in SFML 1.4 (Jan 21, 2009)

  • SYSTEM : Improved unicode support
  • WINDOW : Now using signed integers for mouse coordinates to allow negative values
  • WINDOW : Fixed sf::Window::EnableKeyRepeat under Linux
  • WINDOW : Added cursor position in mouse events
  • WINDOW : Added sf::Window::SetIcon function
  • WINDOW : Added mouse enter / mouse leave window events
  • WINDOW : Added sf::Window::SetSize
  • WINDOW : Fixed X11 sample (broken rendering on the first window)
  • GRAPHICS : Added functions to copy images onto other images
  • GRAPHICS : Added an option to have sf::Image instances not storing their pixels in memory
  • GRAPHICS : Made SFML classes completely thread-safe regarding OpenGL calls
  • GRAPHICS : Added sf::String::GetCharacterPos to get visual position of a string's character
  • GRAPHICS : Added functions to convert from and to drawables' local coordinates
  • GRAPHICS : Added more functions to access sf::Font's contents
  • GRAPHICS : Fixed sf::Sprite::GetPixel not taking flip x/y in account
  • GRAPHICS : Added more accessors for sf::Shape points' attributes
  • GRAPHICS : Optimized font's textures
  • GRAPHICS : Fixed sf::Matrix3 calculations
  • AUDIO : Added GetLoop, SetLoop and GetPlayingPosition to sounds streams
  • AUDIO : Removed dependency to the Visual C++ CRT in OpenAL32.dll
  • AUDIO : Fixed sf::SoundBufferRecorder which couldn't be reused several times
  • AUDIO : Added seeking function to sf::Sound
  • AUDIO : Fixed music clics under Linux
  • NETWORK : Fixed sf::Packet::OnSend called multiple times if packet was sent more than once
  • NETWORK : Added a function to check end of packet
  • NETWORK : Fixed inconsistent socket initialization
  • NETWORK : Fixed crash when using empty strings with packets
  • NETWORK : Disabled Naggle algorithm (buffering) in TCP sockets
  • NETWORK : Added HTTP and FTP classes
  • NETWORK : Added conversions from and to integer for IP address
  • GENERAL : Added debug symbols to debug builds in Code::Blocks
  • GENERAL : Added .Net binding
  • GENERAL : Improved management of dependant resources
  • GENERAL : Now using full unicode instead of UCS-2 for all text-related events and strings
  • GENERAL : Added minor version number to libraries names under Linux
  • GENERAL : Added install path to Linux makefiles
  • WEBSITE : Added a list of the SFML makefiles options to the Linux tutorial