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.
- Fix
ClipboardUtil::set_clipboard_text
to return an Ok when it went well.
- Add
video::border_size -> Result<(u16, u16, u16, u16), String>
equivalent ofSDL_GetWindowBorderSize()
- Implemented
From<(u8, u8, u8)>
andFrom<(u8, u8, u8, u8)>
forpixels::Color
.Canvas.set_draw_color
can now be called with tuples or other types which implementsInto<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