rust-sdl2 v0.30 Release Notes
-
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