mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-02-18 12:05:35 +00:00
gstreamer: Add bindings for DebugCategory::all() to list all available debug categories
This commit is contained in:
parent
1480c65c32
commit
f27a2bddd6
2 changed files with 45 additions and 0 deletions
|
@ -65,6 +65,8 @@ manual = [
|
||||||
"GObject.Value",
|
"GObject.Value",
|
||||||
"Gst.AllocationParams",
|
"Gst.AllocationParams",
|
||||||
"Gst.CapsFeatures",
|
"Gst.CapsFeatures",
|
||||||
|
"Gst.DebugCategory",
|
||||||
|
"Gst.DebugMessage",
|
||||||
"Gst.Segment",
|
"Gst.Segment",
|
||||||
"Gst.StaticCaps",
|
"Gst.StaticCaps",
|
||||||
"Gst.StaticPadTemplate",
|
"Gst.StaticPadTemplate",
|
||||||
|
|
|
@ -44,6 +44,9 @@ impl DebugMessage {
|
||||||
pub struct DebugCategory(Option<ptr::NonNull<ffi::GstDebugCategory>>);
|
pub struct DebugCategory(Option<ptr::NonNull<ffi::GstDebugCategory>>);
|
||||||
|
|
||||||
impl DebugCategory {
|
impl DebugCategory {
|
||||||
|
#[doc(alias = "gst_debug_category_new")]
|
||||||
|
#[doc(alias = "GST_DEBUG_CATEGORY")]
|
||||||
|
#[doc(alias = "GST_DEBUG_CATEGORY_INIT")]
|
||||||
pub fn new(
|
pub fn new(
|
||||||
name: &str,
|
name: &str,
|
||||||
color: crate::DebugColorFlags,
|
color: crate::DebugColorFlags,
|
||||||
|
@ -70,6 +73,7 @@ impl DebugCategory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[doc(alias = "gst_debug_get_category")]
|
||||||
pub fn get(name: &str) -> Option<DebugCategory> {
|
pub fn get(name: &str) -> Option<DebugCategory> {
|
||||||
skip_assert_initialized!();
|
skip_assert_initialized!();
|
||||||
unsafe {
|
unsafe {
|
||||||
|
@ -188,11 +192,43 @@ impl DebugCategory {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[doc(alias = "get_all_categories")]
|
||||||
|
#[doc(alias = "gst_debug_get_all_categories")]
|
||||||
|
pub fn all_categories() -> DebugCategoryList {
|
||||||
|
unsafe { DebugCategoryList(ptr::NonNull::new(ffi::gst_debug_get_all_categories())) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Sync for DebugCategory {}
|
unsafe impl Sync for DebugCategory {}
|
||||||
unsafe impl Send for DebugCategory {}
|
unsafe impl Send for DebugCategory {}
|
||||||
|
|
||||||
|
// checker-ignore-item
|
||||||
|
pub struct DebugCategoryList(Option<ptr::NonNull<glib::ffi::GSList>>);
|
||||||
|
|
||||||
|
unsafe impl Sync for DebugCategoryList {}
|
||||||
|
unsafe impl Send for DebugCategoryList {}
|
||||||
|
|
||||||
|
impl Iterator for DebugCategoryList {
|
||||||
|
type Item = DebugCategory;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<DebugCategory> {
|
||||||
|
match self.0 {
|
||||||
|
None => None,
|
||||||
|
Some(cur) => unsafe {
|
||||||
|
let next = cur.as_ref().next;
|
||||||
|
self.0 = ptr::NonNull::new(next);
|
||||||
|
let cat = DebugCategory(Some(
|
||||||
|
ptr::NonNull::new(cur.as_ref().data as *mut ffi::GstDebugCategory).unwrap(),
|
||||||
|
));
|
||||||
|
glib::ffi::g_slist_free_1(cur.as_ptr());
|
||||||
|
|
||||||
|
Some(cat)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl fmt::Debug for DebugCategory {
|
impl fmt::Debug for DebugCategory {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
f.debug_tuple("DebugCategory").field(&self.name()).finish()
|
f.debug_tuple("DebugCategory").field(&self.name()).finish()
|
||||||
|
@ -519,6 +555,13 @@ mod tests {
|
||||||
assert_eq!(perf_cat.name(), CAT_PERFORMANCE.name());
|
assert_eq!(perf_cat.name(), CAT_PERFORMANCE.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn all() {
|
||||||
|
crate::init().unwrap();
|
||||||
|
|
||||||
|
assert!(DebugCategory::all_categories().any(|c| c.name() == "GST_PERFORMANCE"));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn new_and_log() {
|
fn new_and_log() {
|
||||||
crate::init().unwrap();
|
crate::init().unwrap();
|
||||||
|
|
Loading…
Reference in a new issue