Use MaybeUninit::zeroed() everywhere possible instead of mem::zeroed()

This commit is contained in:
Sebastian Dröge 2019-07-11 16:02:46 +03:00
parent 3a8d05075d
commit 424a87efbf
19 changed files with 229 additions and 202 deletions

View file

@ -74,9 +74,9 @@ impl<'a> VideoFrameGLExt for VideoFrameRef<&'a gst::BufferRef> {
} }
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map( let res: bool = from_glib(gst_video_sys::gst_video_frame_map(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.to_glib_none().0, buffer.to_glib_none().0,
gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF
@ -87,7 +87,7 @@ impl<'a> VideoFrameGLExt for VideoFrameRef<&'a gst::BufferRef> {
if !res { if !res {
Err(buffer) Err(buffer)
} else { } else {
Ok(VideoFrame::from_glib_full(frame)) Ok(VideoFrame::from_glib_full(frame.assume_init()))
} }
} }
} }
@ -111,9 +111,9 @@ impl<'a> VideoFrameGLExt for VideoFrameRef<&'a gst::BufferRef> {
} }
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map( let res: bool = from_glib(gst_video_sys::gst_video_frame_map(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.as_mut_ptr(), buffer.as_mut_ptr(),
gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF
@ -124,7 +124,7 @@ impl<'a> VideoFrameGLExt for VideoFrameRef<&'a gst::BufferRef> {
if !res { if !res {
None None
} else { } else {
Some(VideoFrameRef::from_glib_borrow(&frame)) Some(VideoFrameRef::from_glib_borrow(&frame.assume_init()))
} }
} }
} }

View file

@ -20,13 +20,13 @@ impl SDPAttribute {
pub fn new(key: &str, value: Option<&str>) -> Self { pub fn new(key: &str, value: Option<&str>) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut attr = mem::zeroed(); let mut attr = mem::MaybeUninit::zeroed();
gst_sdp_sys::gst_sdp_attribute_set( gst_sdp_sys::gst_sdp_attribute_set(
&mut attr, attr.as_mut_ptr(),
key.to_glib_none().0, key.to_glib_none().0,
value.to_glib_none().0, value.to_glib_none().0,
); );
SDPAttribute(attr) SDPAttribute(attr.assume_init())
} }
} }

View file

@ -20,9 +20,9 @@ impl SDPBandwidth {
pub fn new(bwtype: &str, bandwidth: u32) -> Self { pub fn new(bwtype: &str, bandwidth: u32) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut bw = mem::zeroed(); let mut bw = mem::MaybeUninit::zeroed();
gst_sdp_sys::gst_sdp_bandwidth_set(&mut bw, bwtype.to_glib_none().0, bandwidth); gst_sdp_sys::gst_sdp_bandwidth_set(bw.as_mut_ptr(), bwtype.to_glib_none().0, bandwidth);
SDPBandwidth(bw) SDPBandwidth(bw.assume_init())
} }
} }

View file

@ -20,16 +20,16 @@ impl SDPConnection {
pub fn new(nettype: &str, addrtype: &str, address: &str, ttl: u32, addr_number: u32) -> Self { pub fn new(nettype: &str, addrtype: &str, address: &str, ttl: u32, addr_number: u32) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut conn = mem::zeroed(); let mut conn = mem::MaybeUninit::zeroed();
gst_sdp_sys::gst_sdp_connection_set( gst_sdp_sys::gst_sdp_connection_set(
&mut conn, conn.as_mut_ptr(),
nettype.to_glib_none().0, nettype.to_glib_none().0,
addrtype.to_glib_none().0, addrtype.to_glib_none().0,
address.to_glib_none().0, address.to_glib_none().0,
ttl, ttl,
addr_number, addr_number,
); );
SDPConnection(conn) SDPConnection(conn.assume_init())
} }
} }

View file

@ -79,7 +79,7 @@ impl SDPMessage {
pub fn new() -> SDPMessage { pub fn new() -> SDPMessage {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut msg = mem::zeroed(); let mut msg = ptr::null_mut();
gst_sdp_sys::gst_sdp_message_new(&mut msg); gst_sdp_sys::gst_sdp_message_new(&mut msg);
from_glib_full(msg) from_glib_full(msg)
} }
@ -89,7 +89,7 @@ impl SDPMessage {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let size = data.len() as u32; let size = data.len() as u32;
let mut msg = mem::zeroed(); let mut msg = ptr::null_mut();
gst_sdp_sys::gst_sdp_message_new(&mut msg); gst_sdp_sys::gst_sdp_message_new(&mut msg);
let result = let result =
gst_sdp_sys::gst_sdp_message_parse_buffer(data.to_glib_none().0, size, msg); gst_sdp_sys::gst_sdp_message_parse_buffer(data.to_glib_none().0, size, msg);
@ -106,7 +106,7 @@ impl SDPMessage {
pub fn parse_uri(uri: &str) -> Result<Self, ()> { pub fn parse_uri(uri: &str) -> Result<Self, ()> {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut msg = mem::zeroed(); let mut msg = ptr::null_mut();
gst_sdp_sys::gst_sdp_message_new(&mut msg); gst_sdp_sys::gst_sdp_message_new(&mut msg);
let result = gst_sdp_sys::gst_sdp_message_parse_uri(uri.to_glib_none().0, msg); let result = gst_sdp_sys::gst_sdp_message_parse_uri(uri.to_glib_none().0, msg);
match result { match result {

View file

@ -21,14 +21,14 @@ impl SDPTime {
pub fn new(start: &str, stop: &str, repeat: &[&str]) -> Self { pub fn new(start: &str, stop: &str, repeat: &[&str]) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut time = mem::zeroed(); let mut time = mem::MaybeUninit::zeroed();
gst_sdp_sys::gst_sdp_time_set( gst_sdp_sys::gst_sdp_time_set(
&mut time, time.as_mut_ptr(),
start.to_glib_none().0, start.to_glib_none().0,
stop.to_glib_none().0, stop.to_glib_none().0,
repeat.to_glib_none().0, repeat.to_glib_none().0,
); );
SDPTime(time) SDPTime(time.assume_init())
} }
} }

View file

@ -20,13 +20,13 @@ impl SDPZone {
pub fn new(time: &str, typed_time: &str) -> Self { pub fn new(time: &str, typed_time: &str) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut zone = mem::zeroed(); let mut zone = mem::MaybeUninit::zeroed();
gst_sdp_sys::gst_sdp_zone_set( gst_sdp_sys::gst_sdp_zone_set(
&mut zone, zone.as_mut_ptr(),
time.to_glib_none().0, time.to_glib_none().0,
typed_time.to_glib_none().0, typed_time.to_glib_none().0,
); );
SDPZone(zone) SDPZone(zone.assume_init())
} }
} }

View file

@ -89,13 +89,13 @@ pub trait VideoBufferPoolConfig {
impl VideoBufferPoolConfig for gst::BufferPoolConfig { impl VideoBufferPoolConfig for gst::BufferPoolConfig {
fn get_video_alignment(&self) -> Option<VideoAlignment> { fn get_video_alignment(&self) -> Option<VideoAlignment> {
unsafe { unsafe {
let mut alignment: VideoAlignment = mem::zeroed(); let mut alignment = mem::MaybeUninit::zeroed();
let ret = from_glib(gst_video_sys::gst_buffer_pool_config_get_video_alignment( let ret = from_glib(gst_video_sys::gst_buffer_pool_config_get_video_alignment(
self.as_ref().as_mut_ptr(), self.as_ref().as_mut_ptr(),
&mut alignment.0, alignment.as_mut_ptr(),
)); ));
if ret { if ret {
Some(alignment) Some(VideoAlignment(alignment.assume_init()))
} else { } else {
None None
} }

View file

@ -189,9 +189,9 @@ impl VideoFrame<Readable> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map( let res: bool = from_glib(gst_video_sys::gst_video_frame_map(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.to_glib_none().0, buffer.to_glib_none().0,
gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF | gst_sys::GST_MAP_READ, gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF | gst_sys::GST_MAP_READ,
@ -200,6 +200,7 @@ impl VideoFrame<Readable> {
if !res { if !res {
Err(buffer) Err(buffer)
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Ok(VideoFrame(frame, Some(buffer), info, PhantomData)) Ok(VideoFrame(frame, Some(buffer), info, PhantomData))
} }
@ -214,9 +215,9 @@ impl VideoFrame<Readable> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id( let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.to_glib_none().0, buffer.to_glib_none().0,
id, id,
@ -226,6 +227,7 @@ impl VideoFrame<Readable> {
if !res { if !res {
Err(buffer) Err(buffer)
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Ok(VideoFrame(frame, Some(buffer), info, PhantomData)) Ok(VideoFrame(frame, Some(buffer), info, PhantomData))
} }
@ -251,9 +253,9 @@ impl VideoFrame<Writable> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map( let res: bool = from_glib(gst_video_sys::gst_video_frame_map(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.to_glib_none().0, buffer.to_glib_none().0,
gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF
@ -264,6 +266,7 @@ impl VideoFrame<Writable> {
if !res { if !res {
Err(buffer) Err(buffer)
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Ok(VideoFrame(frame, Some(buffer), info, PhantomData)) Ok(VideoFrame(frame, Some(buffer), info, PhantomData))
} }
@ -278,9 +281,9 @@ impl VideoFrame<Writable> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id( let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.to_glib_none().0, buffer.to_glib_none().0,
id, id,
@ -292,6 +295,7 @@ impl VideoFrame<Writable> {
if !res { if !res {
Err(buffer) Err(buffer)
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Ok(VideoFrame(frame, Some(buffer), info, PhantomData)) Ok(VideoFrame(frame, Some(buffer), info, PhantomData))
} }
@ -367,9 +371,9 @@ impl<'a> VideoFrameRef<&'a gst::BufferRef> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map( let res: bool = from_glib(gst_video_sys::gst_video_frame_map(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.as_mut_ptr(), buffer.as_mut_ptr(),
gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF | gst_sys::GST_MAP_READ, gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF | gst_sys::GST_MAP_READ,
@ -378,6 +382,7 @@ impl<'a> VideoFrameRef<&'a gst::BufferRef> {
if !res { if !res {
None None
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Some(VideoFrameRef(frame, Some(buffer), info, false)) Some(VideoFrameRef(frame, Some(buffer), info, false))
} }
@ -392,9 +397,9 @@ impl<'a> VideoFrameRef<&'a gst::BufferRef> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id( let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.as_mut_ptr(), buffer.as_mut_ptr(),
id, id,
@ -404,6 +409,7 @@ impl<'a> VideoFrameRef<&'a gst::BufferRef> {
if !res { if !res {
None None
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Some(VideoFrameRef(frame, Some(buffer), info, false)) Some(VideoFrameRef(frame, Some(buffer), info, false))
} }
@ -558,9 +564,9 @@ impl<'a> VideoFrameRef<&'a mut gst::BufferRef> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map( let res: bool = from_glib(gst_video_sys::gst_video_frame_map(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.as_mut_ptr(), buffer.as_mut_ptr(),
gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF
@ -571,6 +577,7 @@ impl<'a> VideoFrameRef<&'a mut gst::BufferRef> {
if !res { if !res {
None None
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Some(VideoFrameRef(frame, Some(buffer), info, false)) Some(VideoFrameRef(frame, Some(buffer), info, false))
} }
@ -585,9 +592,9 @@ impl<'a> VideoFrameRef<&'a mut gst::BufferRef> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
let mut frame = mem::zeroed(); let mut frame = mem::MaybeUninit::zeroed();
let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id( let res: bool = from_glib(gst_video_sys::gst_video_frame_map_id(
&mut frame, frame.as_mut_ptr(),
info.to_glib_none().0 as *mut _, info.to_glib_none().0 as *mut _,
buffer.as_mut_ptr(), buffer.as_mut_ptr(),
id, id,
@ -599,6 +606,7 @@ impl<'a> VideoFrameRef<&'a mut gst::BufferRef> {
if !res { if !res {
None None
} else { } else {
let frame = frame.assume_init();
let info = ::VideoInfo(ptr::read(&frame.info)); let info = ::VideoInfo(ptr::read(&frame.info));
Some(VideoFrameRef(frame, Some(buffer), info, false)) Some(VideoFrameRef(frame, Some(buffer), info, false))
} }

View file

@ -118,13 +118,13 @@ impl VideoColorimetry {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut colorimetry = mem::zeroed(); let mut colorimetry = mem::MaybeUninit::zeroed();
let valid: bool = from_glib(gst_video_sys::gst_video_colorimetry_from_string( let valid: bool = from_glib(gst_video_sys::gst_video_colorimetry_from_string(
&mut colorimetry, colorimetry.as_mut_ptr(),
s.to_glib_none().0, s.to_glib_none().0,
)); ));
if valid { if valid {
Some(VideoColorimetry(colorimetry)) Some(VideoColorimetry(colorimetry.assume_init()))
} else { } else {
None None
} }

View file

@ -34,9 +34,9 @@ impl VideoTimeCode {
pub fn new_empty() -> VideoTimeCode { pub fn new_empty() -> VideoTimeCode {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut v = mem::zeroed(); let mut v = mem::MaybeUninit::zeroed();
gst_video_sys::gst_video_time_code_clear(&mut v); gst_video_sys::gst_video_time_code_clear(v.as_mut_ptr());
VideoTimeCode(v) VideoTimeCode(v.assume_init())
} }
} }
@ -53,9 +53,9 @@ impl VideoTimeCode {
) -> Self { ) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut v = mem::zeroed(); let mut v = mem::MaybeUninit::zeroed();
gst_video_sys::gst_video_time_code_init( gst_video_sys::gst_video_time_code_init(
&mut v, v.as_mut_ptr(),
*fps.numer() as u32, *fps.numer() as u32,
*fps.denom() as u32, *fps.denom() as u32,
latest_daily_jam.to_glib_none().0, latest_daily_jam.to_glib_none().0,
@ -67,37 +67,37 @@ impl VideoTimeCode {
field_count, field_count,
); );
VideoTimeCode(v) VideoTimeCode(v.assume_init())
} }
} }
// #[cfg(any(feature = "v1_16", feature = "dox"))] #[cfg(any(feature = "v1_16", feature = "dox"))]
// pub fn new_from_date_time( pub fn new_from_date_time(
// fps: gst::Fraction, fps: gst::Fraction,
// dt: &glib::DateTime, dt: &glib::DateTime,
// flags: VideoTimeCodeFlags, flags: VideoTimeCodeFlags,
// field_count: u32, field_count: u32,
// ) -> Option<VideoTimeCode> { ) -> Option<VideoTimeCode> {
// assert_initialized_main_thread!(); assert_initialized_main_thread!();
// assert!(fps_d > 0); assert!(*fps.denom() > 0);
// unsafe { unsafe {
// let mut v = mem::zeroed(); let mut v = mem::MaybeUninit::zeroed();
// let res = gst_video_sys::gst_video_time_code_init_from_date_time_full( let res = gst_video_sys::gst_video_time_code_init_from_date_time_full(
// &mut v, v.as_mut_ptr(),
// *fps.numer() as u32, *fps.numer() as u32,
// *fps.denom() as u32, *fps.denom() as u32,
// dt.to_glib_none().0, dt.to_glib_none().0,
// flags.to_glib(), flags.to_glib(),
// field_count, field_count,
// ); );
//
// if res == glib_sys::GFALSE { if res == glib_sys::GFALSE {
// None None
// } else { } else {
// Some(VideoTimeCode(v)) Some(VideoTimeCode(v.assume_init()))
// } }
// } }
// } }
#[cfg(any(feature = "v1_12", feature = "dox"))] #[cfg(any(feature = "v1_12", feature = "dox"))]
pub fn from_string(tc_str: &str) -> Option<VideoTimeCode> { pub fn from_string(tc_str: &str) -> Option<VideoTimeCode> {

View file

@ -34,11 +34,15 @@ impl VideoTimeCodeInterval {
pub fn new(hours: u32, minutes: u32, seconds: u32, frames: u32) -> Self { pub fn new(hours: u32, minutes: u32, seconds: u32, frames: u32) -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
let mut v = mem::zeroed(); let mut v = mem::MaybeUninit::zeroed();
gst_video_sys::gst_video_time_code_interval_init( gst_video_sys::gst_video_time_code_interval_init(
&mut v, hours, minutes, seconds, frames, v.as_mut_ptr(),
hours,
minutes,
seconds,
frames,
); );
VideoTimeCodeInterval(v) VideoTimeCodeInterval(v.assume_init())
} }
} }

View file

@ -119,42 +119,42 @@ impl Buffer {
} }
pub fn into_mapped_buffer_readable(self) -> Result<MappedBuffer<Readable>, Self> { pub fn into_mapped_buffer_readable(self) -> Result<MappedBuffer<Readable>, Self> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res: bool = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
from_glib(gst_sys::gst_buffer_map( let res: bool = from_glib(gst_sys::gst_buffer_map(
self.as_mut_ptr(), self.as_mut_ptr(),
&mut map_info, map_info.as_mut_ptr(),
gst_sys::GST_MAP_READ, gst_sys::GST_MAP_READ,
)) ));
}; if res {
if res { Ok(MappedBuffer {
Ok(MappedBuffer { buffer: Some(self),
buffer: Some(self), map_info: map_info.assume_init(),
map_info, phantom: PhantomData,
phantom: PhantomData, })
}) } else {
} else { Err(self)
Err(self) }
} }
} }
pub fn into_mapped_buffer_writable(self) -> Result<MappedBuffer<Writable>, Self> { pub fn into_mapped_buffer_writable(self) -> Result<MappedBuffer<Writable>, Self> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res: bool = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
from_glib(gst_sys::gst_buffer_map( let res: bool = from_glib(gst_sys::gst_buffer_map(
self.as_mut_ptr(), self.as_mut_ptr(),
&mut map_info, map_info.as_mut_ptr(),
gst_sys::GST_MAP_READWRITE, gst_sys::GST_MAP_READWRITE,
)) ));
}; if res {
if res { Ok(MappedBuffer {
Ok(MappedBuffer { buffer: Some(self),
buffer: Some(self), map_info: map_info.assume_init(),
map_info, phantom: PhantomData,
phantom: PhantomData, })
}) } else {
} else { Err(self)
Err(self) }
} }
} }
@ -177,34 +177,42 @@ impl Default for Buffer {
impl BufferRef { impl BufferRef {
pub fn map_readable(&self) -> Option<BufferMap<Readable>> { pub fn map_readable(&self) -> Option<BufferMap<Readable>> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
gst_sys::gst_buffer_map(self.as_mut_ptr(), &mut map_info, gst_sys::GST_MAP_READ) let res = gst_sys::gst_buffer_map(
}; self.as_mut_ptr(),
if res == glib_sys::GTRUE { map_info.as_mut_ptr(),
Some(BufferMap { gst_sys::GST_MAP_READ,
buffer: self, );
map_info, if res == glib_sys::GTRUE {
phantom: PhantomData, Some(BufferMap {
}) buffer: self,
} else { map_info: map_info.assume_init(),
None phantom: PhantomData,
})
} else {
None
}
} }
} }
pub fn map_writable(&mut self) -> Option<BufferMap<Writable>> { pub fn map_writable(&mut self) -> Option<BufferMap<Writable>> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
gst_sys::gst_buffer_map(self.as_mut_ptr(), &mut map_info, gst_sys::GST_MAP_READWRITE) let res = gst_sys::gst_buffer_map(
}; self.as_mut_ptr(),
if res == glib_sys::GTRUE { map_info.as_mut_ptr(),
Some(BufferMap { gst_sys::GST_MAP_READWRITE,
buffer: self, );
map_info, if res == glib_sys::GTRUE {
phantom: PhantomData, Some(BufferMap {
}) buffer: self,
} else { map_info: map_info.assume_init(),
None phantom: PhantomData,
})
} else {
None
}
} }
} }

View file

@ -154,14 +154,14 @@ impl BufferPoolConfig {
pub fn get_allocator(&self) -> Option<(Option<Allocator>, AllocationParams)> { pub fn get_allocator(&self) -> Option<(Option<Allocator>, AllocationParams)> {
unsafe { unsafe {
let mut allocator = ptr::null_mut(); let mut allocator = ptr::null_mut();
let mut params = mem::zeroed(); let mut params = mem::MaybeUninit::zeroed();
let ret = from_glib(gst_sys::gst_buffer_pool_config_get_allocator( let ret = from_glib(gst_sys::gst_buffer_pool_config_get_allocator(
self.0.to_glib_none().0, self.0.to_glib_none().0,
&mut allocator, &mut allocator,
&mut params, params.as_mut_ptr(),
)); ));
if ret { if ret {
Some((from_glib_none(allocator), params.into())) Some((from_glib_none(allocator), params.assume_init().into()))
} else { } else {
None None
} }

View file

@ -10,7 +10,6 @@
cfg_if! { cfg_if! {
if #[cfg(unix)] { if #[cfg(unix)] {
use gst_sys; use gst_sys;
use glib_sys;
use glib::translate::ToGlibPtr; use glib::translate::ToGlibPtr;
use std::mem; use std::mem;
@ -36,9 +35,9 @@ impl UnixBusExtManual for Bus {
fn get_pollfd(&self) -> unix::io::RawFd { fn get_pollfd(&self) -> unix::io::RawFd {
#[cfg(unix)] #[cfg(unix)]
unsafe { unsafe {
let mut pollfd: glib_sys::GPollFD = mem::zeroed(); let mut pollfd = mem::MaybeUninit::zeroed();
gst_sys::gst_bus_get_pollfd(self.to_glib_none().0, &mut pollfd); gst_sys::gst_bus_get_pollfd(self.to_glib_none().0, pollfd.as_mut_ptr());
let pollfd = pollfd.assume_init();
pollfd.fd pollfd.fd
} }

View file

@ -36,9 +36,9 @@ impl WindowsBusExtManual for Bus {
fn get_pollfd(&self) -> windows::io::RawHandle { fn get_pollfd(&self) -> windows::io::RawHandle {
#[cfg(windows)] #[cfg(windows)]
unsafe { unsafe {
let mut pollfd: glib_sys::GPollFD = mem::zeroed(); let mut pollfd = mem::MaybeUninit::zeroed();
gst_sys::gst_bus_get_pollfd(self.to_glib_none().0, &mut pollfd); gst_sys::gst_bus_get_pollfd(self.to_glib_none().0, pollfd.assume_init());
let pollfd = pollfd.assume_init();
pollfd.fd as *mut _ pollfd.fd as *mut _
} }

View file

@ -128,42 +128,42 @@ impl Memory {
} }
pub fn into_mapped_memory_readable(self) -> Result<MappedMemory<Readable>, Self> { pub fn into_mapped_memory_readable(self) -> Result<MappedMemory<Readable>, Self> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res: bool = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
from_glib(gst_sys::gst_memory_map( let res: bool = from_glib(gst_sys::gst_memory_map(
self.as_mut_ptr(), self.as_mut_ptr(),
&mut map_info, map_info.as_mut_ptr(),
gst_sys::GST_MAP_READ, gst_sys::GST_MAP_READ,
)) ));
}; if res {
if res { Ok(MappedMemory {
Ok(MappedMemory { memory: Some(self),
memory: Some(self), map_info: map_info.assume_init(),
map_info, phantom: PhantomData,
phantom: PhantomData, })
}) } else {
} else { Err(self)
Err(self) }
} }
} }
pub fn into_mapped_memory_writable(self) -> Result<MappedMemory<Writable>, Self> { pub fn into_mapped_memory_writable(self) -> Result<MappedMemory<Writable>, Self> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res: bool = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
from_glib(gst_sys::gst_memory_map( let res: bool = from_glib(gst_sys::gst_memory_map(
self.as_mut_ptr(), self.as_mut_ptr(),
&mut map_info, map_info.as_mut_ptr(),
gst_sys::GST_MAP_READWRITE, gst_sys::GST_MAP_READWRITE,
)) ));
}; if res {
if res { Ok(MappedMemory {
Ok(MappedMemory { memory: Some(self),
memory: Some(self), map_info: map_info.assume_init(),
map_info, phantom: PhantomData,
phantom: PhantomData, })
}) } else {
} else { Err(self)
Err(self) }
} }
} }
} }
@ -247,34 +247,42 @@ impl MemoryRef {
} }
pub fn map_readable(&self) -> Option<MemoryMap<Readable>> { pub fn map_readable(&self) -> Option<MemoryMap<Readable>> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
gst_sys::gst_memory_map(self.as_mut_ptr(), &mut map_info, gst_sys::GST_MAP_READ) let res = gst_sys::gst_memory_map(
}; self.as_mut_ptr(),
if res == glib_sys::GTRUE { map_info.as_mut_ptr(),
Some(MemoryMap { gst_sys::GST_MAP_READ,
memory: self, );
map_info, if res == glib_sys::GTRUE {
phantom: PhantomData, Some(MemoryMap {
}) memory: self,
} else { map_info: map_info.assume_init(),
None phantom: PhantomData,
})
} else {
None
}
} }
} }
pub fn map_writable(&mut self) -> Option<MemoryMap<Writable>> { pub fn map_writable(&mut self) -> Option<MemoryMap<Writable>> {
let mut map_info: gst_sys::GstMapInfo = unsafe { mem::zeroed() }; unsafe {
let res = unsafe { let mut map_info = mem::MaybeUninit::zeroed();
gst_sys::gst_memory_map(self.as_mut_ptr(), &mut map_info, gst_sys::GST_MAP_READWRITE) let res = gst_sys::gst_memory_map(
}; self.as_mut_ptr(),
if res == glib_sys::GTRUE { map_info.as_mut_ptr(),
Some(MemoryMap { gst_sys::GST_MAP_READWRITE,
memory: self, );
map_info, if res == glib_sys::GTRUE {
phantom: PhantomData, Some(MemoryMap {
}) memory: self,
} else { map_info: map_info.assume_init(),
None phantom: PhantomData,
})
} else {
None
}
} }
} }

View file

@ -77,9 +77,9 @@ impl<T: FormattedValue> FormattedSegment<T> {
pub fn new() -> Self { pub fn new() -> Self {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
let segment = unsafe { let segment = unsafe {
let mut segment = mem::zeroed(); let mut segment = mem::MaybeUninit::zeroed();
gst_sys::gst_segment_init(&mut segment, T::get_default_format().to_glib()); gst_sys::gst_segment_init(segment.as_mut_ptr(), T::get_default_format().to_glib());
segment segment.assume_init()
}; };
FormattedSegment(segment, PhantomData) FormattedSegment(segment, PhantomData)
} }

View file

@ -412,10 +412,10 @@ impl TagListRef {
pub fn get_generic(&self, tag_name: &str) -> Option<SendValue> { pub fn get_generic(&self, tag_name: &str) -> Option<SendValue> {
unsafe { unsafe {
let mut value: SendValue = mem::zeroed(); let mut value: mem::MaybeUninit<SendValue> = mem::MaybeUninit::zeroed();
let found: bool = from_glib(gst_sys::gst_tag_list_copy_value( let found: bool = from_glib(gst_sys::gst_tag_list_copy_value(
value.to_glib_none_mut().0, (*value.as_mut_ptr()).to_glib_none_mut().0,
self.as_ptr(), self.as_ptr(),
tag_name.to_glib_none().0, tag_name.to_glib_none().0,
)); ));
@ -424,7 +424,7 @@ impl TagListRef {
return None; return None;
} }
Some(value) Some(value.assume_init())
} }
} }