gstreamer: Directly use fields for DebugCategory getters

This allows for better optimizations as it doesn't go through an opaque
FFI function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1163>
This commit is contained in:
Sebastian Dröge 2022-12-06 10:06:59 +02:00
parent d5e58d2dd4
commit 7fcd2f0cf6

View file

@ -95,7 +95,7 @@ impl DebugCategory {
#[doc(alias = "gst_debug_category_get_threshold")] #[doc(alias = "gst_debug_category_get_threshold")]
pub fn threshold(self) -> crate::DebugLevel { pub fn threshold(self) -> crate::DebugLevel {
match self.0 { match self.0 {
Some(cat) => unsafe { from_glib(ffi::gst_debug_category_get_threshold(cat.as_ptr())) }, Some(cat) => unsafe { from_glib(cat.as_ref().threshold) },
None => crate::DebugLevel::None, None => crate::DebugLevel::None,
} }
} }
@ -118,7 +118,7 @@ impl DebugCategory {
#[doc(alias = "gst_debug_category_get_color")] #[doc(alias = "gst_debug_category_get_color")]
pub fn color(self) -> crate::DebugColorFlags { pub fn color(self) -> crate::DebugColorFlags {
match self.0 { match self.0 {
Some(cat) => unsafe { from_glib(ffi::gst_debug_category_get_color(cat.as_ptr())) }, Some(cat) => unsafe { from_glib(cat.as_ref().color) },
None => crate::DebugColorFlags::empty(), None => crate::DebugColorFlags::empty(),
} }
} }
@ -127,11 +127,7 @@ impl DebugCategory {
#[doc(alias = "gst_debug_category_get_name")] #[doc(alias = "gst_debug_category_get_name")]
pub fn name<'a>(self) -> &'a str { pub fn name<'a>(self) -> &'a str {
match self.0 { match self.0 {
Some(cat) => unsafe { Some(cat) => unsafe { CStr::from_ptr(cat.as_ref().name).to_str().unwrap() },
CStr::from_ptr(ffi::gst_debug_category_get_name(cat.as_ptr()))
.to_str()
.unwrap()
},
None => "", None => "",
} }
} }
@ -142,7 +138,7 @@ impl DebugCategory {
let cat = self.0?; let cat = self.0?;
unsafe { unsafe {
let ptr = ffi::gst_debug_category_get_description(cat.as_ptr()); let ptr = cat.as_ref().description;
if ptr.is_null() { if ptr.is_null() {
None None