From 94d4c5b42d369cab7854c9d3741f222cc59d916b Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Thu, 16 May 2019 11:43:53 +0200 Subject: [PATCH] buffer: display metas in Debug Fix #201 --- gstreamer/src/buffer.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gstreamer/src/buffer.rs b/gstreamer/src/buffer.rs index 6a1bb10b4..e878cee00 100644 --- a/gstreamer/src/buffer.rs +++ b/gstreamer/src/buffer.rs @@ -471,6 +471,18 @@ define_iter!( impl fmt::Debug for BufferRef { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use std::cell::RefCell; + + struct DebugIter(RefCell); + impl fmt::Debug for DebugIter + where + I::Item: fmt::Debug, + { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_list().entries(&mut *self.0.borrow_mut()).finish() + } + } + f.debug_struct("Buffer") .field("ptr", unsafe { &self.as_ptr() }) .field("pts", &self.get_pts().to_string()) @@ -480,6 +492,12 @@ impl fmt::Debug for BufferRef { .field("offset", &self.get_offset()) .field("offset_end", &self.get_offset_end()) .field("flags", &self.get_flags()) + .field( + "metas", + &DebugIter(RefCell::new( + self.iter_meta::<::Meta>().map(|m| m.get_api()), + )), + ) .finish() } }