In this file will be listed the changes, especially the breaking ones that one should be careful of when upgrading from a version of rust-sdl2 to another.
PR #1368 Remove unnecessary unsafe in Window interface. Make Window Clone
.
PR #1366 Add Primary Selection bindings.
PR #1270 BREAKING CHANGE Remove &mut self requirement in TimerSubsystem::delay
; Add TimerSubsystem::ticks64
PR #1275 BREAKING CHANGE Update raw-window-handle to 0.5
PR #1225 Update wgpu to 0.12 in examples
PR #1250 Add lib64
to native library search path when using bundled feature
PR #1240 BREAKING CHANGE Take PixelMasks
by refrence
PR #1254 BREAKING CHANGE Make SdlDrop
and SubsystemDrop
safer; forbid external code from constructing SdlDrop
PR #1318 Add NV12, NV21 to PixelFormatEnum
PR #1332 Fix size_hint
implementations for {audio,video,render}::DriverIterator
PR #1333 Implement FusedIterator
, DoubleEndedIterator
, and nth[_back]
for {audio,video,render}::DriverIterator
PR #1337 Fix "Cannot initialize Sdl from more than one thread" for tests / CI
PR #1337 Fix "Cannot initialize Sdl from more than one thread" for tests / CI
PR #1346 Add basic Shaped Window support
PR #1314 Add "ALWAYS ON TOP" support for X11
PR #1173 Fix segfault when using timer callbacks
PR #1183 WinRT support for raw-window-handle
PR #1182 Updated raw-window-handle to 0.4
PR #1189 Added AudioQueue::queue_audio
and deprecated AudioQueue::queue
PR #1164 Added raw-window-handle support for Android
PR #1165 Added binding for SDL_GetDisplayOrientation
and SDL_DISPLAYEVENT
-
BREAKING CHANGE Update
sdl2-sys/sdl_bindings.rs
to use enums instead of consts. If you were usingsdl2-sys
's enum variants directly in your project, you may be affected. If you only used sdl2 calls, there should not be any problems. -
BREAKING CHANGE SDL 2.0.14 or higher is now recommended due to the new binding being added for
SDL_OpenURL
. If you get linking errors, upgrade your SDL2 libraries, or swap to using thebundled
feature.
PR #1138 Added binding for SDL_OpenURL
PR #1150 Do not download SDL2 sources when using bundled feature
PR #1112 Add wrapper functions for SDL_RenderSetIntegerScale
and SDL_RenderGetIntegerScale
PR #1156 Maybe breaking change: new variants to enum GameController
, and prevent panic with unrecognized buttons.
PR #1153 SDL_GL_GetCurrentContext
and SDL_RenderFlush
added.
PR #1131 Added Sensor API.
PR #1100 Added binding for SDL_GetDisplayUsableBounds
PR #1102 Correctly se linux and macSO built libraries when using bundled without static-link.
PR #1098 Fix potential heap corruption when using AudioCVT::convert
PR #1088 Rollback of PR #1081: Broke dynamic linking on Windows
Various fixes to CI.
PR #1086 Update bundled to use SDL2 2.0.14
PR #1033 Changed signature of TimerSubsystem::ticks to accept &self
.
PR #1057: fix memory safety bug in set_error
PR #1081: Allow bundled build to be built in debug mode. Fixes issue when linking binary with mixed debug+release CRT dependencies.
PR #1080: Fix line endings of patches to lf so patching of sources works on Windows.
PR #1031: Add patch to fix metal detection (https://bugzilla.libsdl.org/show_bug.cgi?id=4988)
PR #1027: upgrade "bundled" version of SDL2 to 2.0.12
PR #1020: revert undefined behavior introduction.
Commit: Fix clippy issue
Commit: Temporarily suppress dangerous clippy hints
PR#1014: add load_texture_bytes
interface for load texture from buffer
PR #1012 Fix use after free with AudioDevice::open and AudioDevice::open_queue
PR #1010 Fix compilation with gcc10.
PR #1009
Add support for linking to development libraries from vcpkg, and automatically setting up a vcpkg installation using cargo-vcpkg
.
PR #1004 + PR #1005: Add convenience functions for Window and Event.
PR #996:
Impl From<i32>
for WindowPos
.
PR #988:
Add convenience functions for Texture
.
PR #962:
Added raw-window-handle
support for Windows, Linux (X11 and Wayland) and macOS.
PR #964: Breaking change: Change joystick instance IDs from i32 to u32.
PR #965: Added invert method for Color, and added more Color names as constants.
PR #968
Pass SDL2 include directories to sdl2-sys
's dependant crates through DEP_SDL2_INCLUDE
.
PR #970
Add Chunk::from_buffer
in mixer.
PR #976
Fix compilation with use-bingen
feature.
PR #977
Add cpuinfo::has_avx2
and cpuinfo::has_avx512f
PR #982 Support for loading Opus format in mixer.
PR #980 Fix compilation on Windows.
PR #956 + PR #960 + PR #951: Fix some build targets.
PR #948 + PR #957:
Remove the num
dependency.
PR #947: Upgraded the "bundled" version of SDL2 to 2.0.10
PR #940:
Breaking change Removed the rand
dependency for random colors. You will have to implement your own random colors from now on.
PR #933: Breaking change Removed AudioFormatNum::zero(), use AudioFormatNum::SILENCE constant instead.
PR #907:
Changed the data type to i32 for the which
field for the events ControllerDeviceAdded
and JoyDeviceAdded
.
PR #882:
Ignore unknown bits in SDL_Keysym
's mod
field (key modifiers) when constructing Event::KeyDown
and Event::KeyUp
. Deprecate sdl2::event::Event::unwrap_keymod
, which had been made public accidentally.
PR #898:
Implements TryFrom<PixelFormatEnum>
for PixelFormat
PR #868:
Added inplace operations for rect::Point
.
PR #827: Added 32-bit array pixelformats
PR #824:
Added controller::set_rumble
and joystick::set_rumble
, wrappers for SDL_GameControllerRumble
and SDL_JoystickRumble
respectively.
PR #867:
Added Window::opacity
and Window::set_opacity
, wrappers for SDL_GetWindowOpacity
and SDL_SetWindowOpacity
respectively. This bumps the minimum SDL2
version requirement from 2.0.4
to 2.0.5
.
PR #790: Added missing window_id
field to Event::DropFile
PR #789: Audio Safety Fixes
PR #785: Vulkan Support
- Move ffi of features (mixer, ...) into
sys
- Updated SDL2's default version to 2.0.8
PR #780: Fixed a panic in keyboard::Mod
PR #775: Added get_platform
PR #774: add_timer
is now must_use
PR #764: impl Hash
for Point
and Rect
PR #763: Allow -sys
to build for windows-gnu
target
PR #751:
Breaking change gl_setswap_interval
now returns a Result
instead of a bool
.
PR #759: Expose Joystick power level
- Fix memory leak in
filesystem::base_path()
- Fix memory leak on
ClipboardUtil::clipboard_text()
PR #740: Implement Debug for Event
PR #737:
Fix ClipboardUtil::set_clipboard_text
to return an Ok when it went well.
PR #733:
Add video::border_size -> Result<(u16, u16, u16, u16), String>
equivalent of SDL_GetWindowBorderSize()
PR #732:
Implemented From<(u8, u8, u8)>
and From<(u8, u8, u8, u8)>
for pixels::Color
.
Canvas.set_draw_color
can now be called with tuples or other types which implements Into<pixels::Color>
- Breaking change set_video_minimize_on_focus_lost was renamed to …minimize_on_focus_loss, as it should be. As a bonus, it works now.
- Although this is a breaking change, this function was not working in the first place, so this is hardly a true breaking change
- Adds feature "bundled" as well as "static-link". Entirely compatible wit hthe "use-bindgen" feature. Windows-gnu is not supported yet, any help is needed on that side, but every other major platform should be supported.
- Breaking change Change HatState::Leftdown casing into HatState::LeftDown to be consistent with naming.
- sdl2-sys can now be generated at compile time by bindgen (Opt-in required with "use-bindgen" feature)
- The new sdl2-sys source code is generated by bindgen, hence almost everything that uses sdl2-sys will be broken. The fixes are small but still preset.
- Support Audio Capture in AudioCallbacks.
- Breaking change Make get_swap_interval return an enum instead of i32
- The signature of set_swap_interval has been changed as well, but it shouldn't breaking existing code too much.
- Adds the
unsafe_textures
feature to this crate, allowing to get rid of the lifetimes inTexture
s in therender
module.
- Adds the
Music::from_static_bytes
function, which creates a Music instance with the static lifetime from a buffer that also has a static lifetime.
- Makes the fields of the
sdl2::mixer::Channel(i32)
andsdl::mixer::Group(i32)
structs public so they can be instantiated directly, and deprecatessdl2::mixer::channel(i32)
.
- Breaking change Updates the
which
fields ofsdl2::Event::ControllerDeviceAdded
andsdl2::Event::JoyDeviceAdded
to beu32
s so they can be used withsdl2::GameControllerSubsystem
andsdl::JoystickSubsystem
methods directly. - Breaking change Updates
sdl2::HapticSubsystem::open_from_joystick_id
to correctly advertisejoystick_index
as being au32
. - This should only mean removing type conversions which were previously needed to use these values, or changing incorrect assumptions in existing code.
Re-exported sdl2_sys as sdl2::sys
The path of soundness isn't an easy one; sometimes ease of use has to be sacrificed for soundness and safety! This change is a breaking change, and a huge one at that.
You will probably have to refactor some parts of your code, but this is the price to pay for soundness and runtime safety.
Breaking Changes:
Renderer
has been renamed and split intoCanvas
andTextureCreator
.Canvas
can store aSurface
or aWindow
, and can be used to render into these as well.TextureCreator
createsTexture
s and is used by Texture to make sure they don't live longer than expected.set_render_target
has been removed and has been replaced withCanvas::with_texture_canvas
andCanvas::with_multiple_texture_canvas
- Deleted
WindowRef
, it wasn't useful anymore.
Other Changes:
- Added
PixelFormatEnum::supports_alpha(&self) -> bool
method. - A single Game Of Life example has been added to show the basic capabilities of the new
Canvas
andTextureCreator
structs, as well as adding a very basic game to show how to handle input / game changes in a basic game.
You won't have to worry about what target your Renderer
has at runtime anymore, everything
is done at compile time now !
- Changed signature of
Surface::fill_rects
(old | new) - Changed various
Option<T>
parameters intoInto<Option<T>>
parameters. For instance, it is now possible to do this:
surface.blit(None,Rect::new(5,5,5,5)); // instead of surface.blit(None,Some(Rect::new(5,5,5,5)));
- Added hint-specific functions to
sdl2::hint
sdl2::hint::set_video_minimize_on_focus_lost(bool) -> bool;
sdl2::hint::set_video_minimize_on_focus_lost_with_priority(bool, sdl2::hint::Hint) -> bool;
sdl2::hint::get_video_minimize_on_focus_lost() -> bool;
- Breaking Change: Changed Color to be a struct rather than an enum.
- Takes less space, easier to use, old constructors are still available.
- Matching is no longer necessary to read the component values.
- Struct rather than variant construction is required in static initializers.
let color = Color { r: 255, g: 0, b: 0, a: 255 };
let color = Color::RGBA(255, 0, 0, 255);
let color = Color::RGB(255, 0, 0);
let (r, g, b) = color.rgb();
let (r, g, b, a) = color.rgba();
- VideoSystem::display_name now returns a
Result<String, String>
instead of aString
. - This prevents a segfault when the requested display index is out of bounds
window.surface()
has been changed and is now more intuitive to use.- The example in
examples/no-renderer.rs
shows how to use this feature.
- Deprecated
Rect::contains
, addedRect::contains_point
andRect::contains_rect
.contains
andcontains_point
are close but different ! See here