mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-26 03:21:03 +00:00
gstreamer: Use obj = x
instead of obj: x
in debug log macros
And deprecate the old usage. This gives better tooling support, and especially allows rustfmt to format the macro body correctly. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/513 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1477>
This commit is contained in:
parent
426d95bc6a
commit
a871f71515
14 changed files with 491 additions and 179 deletions
|
@ -459,7 +459,7 @@ mod video_filter {
|
||||||
frame: &mut VideoFrameRef<&mut gst::BufferRef>,
|
frame: &mut VideoFrameRef<&mut gst::BufferRef>,
|
||||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||||
self.transform_fd_mem_ip(frame).map_err(|err| {
|
self.transform_fd_mem_ip(frame).map_err(|err| {
|
||||||
gst::error!(CAT, imp: self, "Failed to transform frame`: {}", err);
|
gst::error!(CAT, imp = self, "Failed to transform frame`: {}", err);
|
||||||
gst::FlowError::Error
|
gst::FlowError::Error
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ mod mirror {
|
||||||
|
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
CAT,
|
CAT,
|
||||||
imp: self,
|
imp = self,
|
||||||
"Compiling fragment shader {}",
|
"Compiling fragment shader {}",
|
||||||
FRAGMENT_SHADER
|
FRAGMENT_SHADER
|
||||||
);
|
);
|
||||||
|
@ -99,7 +99,7 @@ mod mirror {
|
||||||
|
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
CAT,
|
CAT,
|
||||||
imp: self,
|
imp = self,
|
||||||
"Successfully compiled and linked {:?}",
|
"Successfully compiled and linked {:?}",
|
||||||
shader
|
shader
|
||||||
);
|
);
|
||||||
|
|
|
@ -142,7 +142,7 @@ mod fir_filter {
|
||||||
// Drop state
|
// Drop state
|
||||||
self.history.lock().unwrap().clear();
|
self.history.lock().unwrap().clear();
|
||||||
|
|
||||||
gst::info!(CAT, imp: self, "Stopped");
|
gst::info!(CAT, imp = self, "Stopped");
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ mod fir_filter {
|
||||||
// Get coefficients and return directly if we have none
|
// Get coefficients and return directly if we have none
|
||||||
let coeffs = self.coeffs.lock().unwrap();
|
let coeffs = self.coeffs.lock().unwrap();
|
||||||
if coeffs.is_empty() {
|
if coeffs.is_empty() {
|
||||||
gst::trace!(CAT, imp: self, "No coefficients set -- passthrough");
|
gst::trace!(CAT, imp = self, "No coefficients set -- passthrough");
|
||||||
return Ok(gst::FlowSuccess::Ok);
|
return Ok(gst::FlowSuccess::Ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ mod fir_filter {
|
||||||
|
|
||||||
gst::trace!(
|
gst::trace!(
|
||||||
CAT,
|
CAT,
|
||||||
imp: self,
|
imp = self,
|
||||||
"Transforming {} samples with filter of length {}",
|
"Transforming {} samples with filter of length {}",
|
||||||
samples.len(),
|
samples.len(),
|
||||||
coeffs.len()
|
coeffs.len()
|
||||||
|
|
|
@ -116,7 +116,7 @@ impl BaseTransformImpl for IirFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut map = buf.map_writable().map_err(|_| {
|
let mut map = buf.map_writable().map_err(|_| {
|
||||||
gst::error!(CAT, imp: self, "Failed to map buffer writable");
|
gst::error!(CAT, imp = self, "Failed to map buffer writable");
|
||||||
gst::FlowError::Error
|
gst::FlowError::Error
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ impl AudioFilterImpl for IirFilter {
|
||||||
fn setup(&self, info: &gst_audio::AudioInfo) -> Result<(), gst::LoggableError> {
|
fn setup(&self, info: &gst_audio::AudioInfo) -> Result<(), gst::LoggableError> {
|
||||||
self.parent_setup(info)?;
|
self.parent_setup(info)?;
|
||||||
|
|
||||||
gst::debug!(CAT, imp: self, "Rate changed to {}", info.rate());
|
gst::debug!(CAT, imp = self, "Rate changed to {}", info.rate());
|
||||||
let obj = self.obj();
|
let obj = self.obj();
|
||||||
(obj.class().as_ref().set_rate)(&obj, info.rate());
|
(obj.class().as_ref().set_rate)(&obj, info.rate());
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ impl AudioFilterImpl for IirFilter {
|
||||||
/// Wrappers for public methods and associated helper functions.
|
/// Wrappers for public methods and associated helper functions.
|
||||||
impl IirFilter {
|
impl IirFilter {
|
||||||
pub(super) fn set_coeffs(&self, a: Vec<f64>, b: Vec<f64>) {
|
pub(super) fn set_coeffs(&self, a: Vec<f64>, b: Vec<f64>) {
|
||||||
gst::debug!(CAT, imp: self, "Setting coefficients a: {a:?}, b: {b:?}");
|
gst::debug!(CAT, imp = self, "Setting coefficients a: {a:?}, b: {b:?}");
|
||||||
*self.coeffs.lock().unwrap() = Some((a, b));
|
*self.coeffs.lock().unwrap() = Some((a, b));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,7 +308,7 @@ pub trait BaseSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
if buffer_ptr.is_null() && pending_buffer_list.is_none() {
|
if buffer_ptr.is_null() && pending_buffer_list.is_none() {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"No buffer and no buffer list returned"
|
"No buffer and no buffer list returned"
|
||||||
);
|
);
|
||||||
return Err(gst::FlowError::Error);
|
return Err(gst::FlowError::Error);
|
||||||
|
@ -317,7 +317,7 @@ pub trait BaseSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
if !buffer_ptr.is_null() && pending_buffer_list.is_some() {
|
if !buffer_ptr.is_null() && pending_buffer_list.is_some() {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Both buffer and buffer list returned"
|
"Both buffer and buffer list returned"
|
||||||
);
|
);
|
||||||
return Err(gst::FlowError::Error);
|
return Err(gst::FlowError::Error);
|
||||||
|
@ -329,7 +329,7 @@ pub trait BaseSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
|
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
gst::CAT_PERFORMANCE,
|
gst::CAT_PERFORMANCE,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Returned new buffer from parent create function, copying into passed buffer"
|
"Returned new buffer from parent create function, copying into passed buffer"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -338,7 +338,7 @@ pub trait BaseSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Failed to map passed buffer writable"
|
"Failed to map passed buffer writable"
|
||||||
);
|
);
|
||||||
return Err(gst::FlowError::Error);
|
return Err(gst::FlowError::Error);
|
||||||
|
@ -357,7 +357,7 @@ pub trait BaseSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Failed to copy buffer metadata"
|
"Failed to copy buffer metadata"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -752,7 +752,7 @@ unsafe extern "C" fn base_src_create<T: BaseSrcImpl>(
|
||||||
if passed_buffer.as_ptr() != new_buffer.as_ptr() {
|
if passed_buffer.as_ptr() != new_buffer.as_ptr() {
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
gst::CAT_PERFORMANCE,
|
gst::CAT_PERFORMANCE,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Returned new buffer from create function, copying into passed buffer"
|
"Returned new buffer from create function, copying into passed buffer"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -761,7 +761,7 @@ unsafe extern "C" fn base_src_create<T: BaseSrcImpl>(
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Failed to map passed buffer writable"
|
"Failed to map passed buffer writable"
|
||||||
);
|
);
|
||||||
return gst::FlowReturn::Error;
|
return gst::FlowReturn::Error;
|
||||||
|
@ -780,7 +780,7 @@ unsafe extern "C" fn base_src_create<T: BaseSrcImpl>(
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Failed to copy buffer metadata"
|
"Failed to copy buffer metadata"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -1215,7 +1215,7 @@ unsafe extern "C" fn base_transform_copy_metadata<T: BaseTransformImpl>(
|
||||||
if gst::ffi::gst_mini_object_is_writable(outbuf as *mut _) == glib::ffi::GFALSE {
|
if gst::ffi::gst_mini_object_is_writable(outbuf as *mut _) == glib::ffi::GFALSE {
|
||||||
let instance = imp.obj();
|
let instance = imp.obj();
|
||||||
let obj = instance.unsafe_cast_ref::<BaseTransform>();
|
let obj = instance.unsafe_cast_ref::<BaseTransform>();
|
||||||
gst::warning!(gst::CAT_RUST, obj: obj, "buffer {:?} not writable", outbuf);
|
gst::warning!(gst::CAT_RUST, obj = obj, "buffer {:?} not writable", outbuf);
|
||||||
return glib::ffi::GFALSE;
|
return glib::ffi::GFALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ pub trait PushSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
if buffer_ptr.is_null() && pending_buffer_list.is_none() {
|
if buffer_ptr.is_null() && pending_buffer_list.is_none() {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"No buffer and no buffer list returned"
|
"No buffer and no buffer list returned"
|
||||||
);
|
);
|
||||||
return Err(gst::FlowError::Error);
|
return Err(gst::FlowError::Error);
|
||||||
|
@ -119,7 +119,7 @@ pub trait PushSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
if !buffer_ptr.is_null() && pending_buffer_list.is_some() {
|
if !buffer_ptr.is_null() && pending_buffer_list.is_some() {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Both buffer and buffer list returned"
|
"Both buffer and buffer list returned"
|
||||||
);
|
);
|
||||||
return Err(gst::FlowError::Error);
|
return Err(gst::FlowError::Error);
|
||||||
|
@ -131,7 +131,7 @@ pub trait PushSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
|
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
gst::CAT_PERFORMANCE,
|
gst::CAT_PERFORMANCE,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Returned new buffer from parent create function, copying into passed buffer"
|
"Returned new buffer from parent create function, copying into passed buffer"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ pub trait PushSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Failed to map passed buffer writable"
|
"Failed to map passed buffer writable"
|
||||||
);
|
);
|
||||||
return Err(gst::FlowError::Error);
|
return Err(gst::FlowError::Error);
|
||||||
|
@ -159,7 +159,7 @@ pub trait PushSrcImplExt: sealed::Sealed + ObjectSubclass {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
obj: instance,
|
obj = instance,
|
||||||
"Failed to copy buffer metadata"
|
"Failed to copy buffer metadata"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -259,7 +259,7 @@ unsafe extern "C" fn push_src_create<T: PushSrcImpl>(
|
||||||
if passed_buffer.as_ptr() != new_buffer.as_ptr() {
|
if passed_buffer.as_ptr() != new_buffer.as_ptr() {
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
gst::CAT_PERFORMANCE,
|
gst::CAT_PERFORMANCE,
|
||||||
imp: imp,
|
imp = imp,
|
||||||
"Returned new buffer from create function, copying into passed buffer"
|
"Returned new buffer from create function, copying into passed buffer"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ unsafe extern "C" fn push_src_create<T: PushSrcImpl>(
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
imp: imp,
|
imp = imp,
|
||||||
"Failed to map passed buffer writable"
|
"Failed to map passed buffer writable"
|
||||||
);
|
);
|
||||||
return gst::FlowReturn::Error;
|
return gst::FlowReturn::Error;
|
||||||
|
@ -287,7 +287,7 @@ unsafe extern "C" fn push_src_create<T: PushSrcImpl>(
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
gst::error!(
|
gst::error!(
|
||||||
gst::CAT_RUST,
|
gst::CAT_RUST,
|
||||||
imp: imp,
|
imp = imp,
|
||||||
"Failed to copy buffer metadata"
|
"Failed to copy buffer metadata"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -181,11 +181,23 @@ impl StreamProducer {
|
||||||
) -> Result<(), AddConsumerError> {
|
) -> Result<(), AddConsumerError> {
|
||||||
let mut consumers = self.consumers.lock().unwrap();
|
let mut consumers = self.consumers.lock().unwrap();
|
||||||
if consumers.consumers.contains_key(consumer) {
|
if consumers.consumers.contains_key(consumer) {
|
||||||
gst::error!(CAT, obj: &self.appsink, "Consumer {} ({:?}) already added", consumer.name(), consumer);
|
gst::error!(
|
||||||
|
CAT,
|
||||||
|
obj = &self.appsink,
|
||||||
|
"Consumer {} ({:?}) already added",
|
||||||
|
consumer.name(),
|
||||||
|
consumer
|
||||||
|
);
|
||||||
return Err(AddConsumerError::AlreadyAdded);
|
return Err(AddConsumerError::AlreadyAdded);
|
||||||
}
|
}
|
||||||
|
|
||||||
gst::debug!(CAT, obj: &self.appsink, "Adding consumer {} ({:?})", consumer.name(), consumer);
|
gst::debug!(
|
||||||
|
CAT,
|
||||||
|
obj = &self.appsink,
|
||||||
|
"Adding consumer {} ({:?})",
|
||||||
|
consumer.name(),
|
||||||
|
consumer
|
||||||
|
);
|
||||||
|
|
||||||
Self::configure_consumer(consumer);
|
Self::configure_consumer(consumer);
|
||||||
|
|
||||||
|
@ -205,7 +217,7 @@ impl StreamProducer {
|
||||||
};
|
};
|
||||||
|
|
||||||
if gst_video::UpstreamForceKeyUnitEvent::parse(event).is_ok() {
|
if gst_video::UpstreamForceKeyUnitEvent::parse(event).is_ok() {
|
||||||
gst::debug!(CAT, obj: &appsink, "Requesting keyframe");
|
gst::debug!(CAT, obj = &appsink, "Requesting keyframe");
|
||||||
// Do not use `gst_element_send_event()` as it takes the state lock which may lead to dead locks.
|
// Do not use `gst_element_send_event()` as it takes the state lock which may lead to dead locks.
|
||||||
let pad = appsink.static_pad("sink").unwrap();
|
let pad = appsink.static_pad("sink").unwrap();
|
||||||
let _ = pad.push_event(event.clone());
|
let _ = pad.push_event(event.clone());
|
||||||
|
@ -232,7 +244,7 @@ impl StreamProducer {
|
||||||
let appsink_pad = self.appsink.static_pad("sink").unwrap();
|
let appsink_pad = self.appsink.static_pad("sink").unwrap();
|
||||||
appsink_pad.sticky_events_foreach(|event| {
|
appsink_pad.sticky_events_foreach(|event| {
|
||||||
if events_to_forward.contains(&event.type_()) {
|
if events_to_forward.contains(&event.type_()) {
|
||||||
gst::debug!(CAT, obj: &self.appsink, "forward sticky event {:?}", event);
|
gst::debug!(CAT, obj = &self.appsink, "forward sticky event {:?}", event);
|
||||||
consumer.send_event(event.clone());
|
consumer.send_event(event.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,7 +270,12 @@ impl StreamProducer {
|
||||||
(false, true)
|
(false, true)
|
||||||
};
|
};
|
||||||
|
|
||||||
gst::trace!(CAT, obj: appsink, "processing sample {:?}", sample.buffer());
|
gst::trace!(
|
||||||
|
CAT,
|
||||||
|
obj = appsink,
|
||||||
|
"processing sample {:?}",
|
||||||
|
sample.buffer()
|
||||||
|
);
|
||||||
|
|
||||||
let latency = consumers.current_latency;
|
let latency = consumers.current_latency;
|
||||||
let latency_updated = mem::replace(&mut consumers.latency_updated, false);
|
let latency_updated = mem::replace(&mut consumers.latency_updated, false);
|
||||||
|
@ -302,7 +319,7 @@ impl StreamProducer {
|
||||||
if !is_keyframe && consumer.needs_keyframe.load(atomic::Ordering::SeqCst) {
|
if !is_keyframe && consumer.needs_keyframe.load(atomic::Ordering::SeqCst) {
|
||||||
// If we need a keyframe (and this one isn't) request a keyframe upstream
|
// If we need a keyframe (and this one isn't) request a keyframe upstream
|
||||||
if !needs_keyframe_request {
|
if !needs_keyframe_request {
|
||||||
gst::debug!(CAT, obj: appsink, "Requesting keyframe for first buffer");
|
gst::debug!(CAT, obj = appsink, "Requesting keyframe for first buffer");
|
||||||
needs_keyframe_request = true;
|
needs_keyframe_request = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +327,7 @@ impl StreamProducer {
|
||||||
|
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
CAT,
|
CAT,
|
||||||
obj: appsink,
|
obj = appsink,
|
||||||
"Ignoring frame for {} while waiting for a keyframe",
|
"Ignoring frame for {} while waiting for a keyframe",
|
||||||
consumer.appsrc.name()
|
consumer.appsrc.name()
|
||||||
);
|
);
|
||||||
|
@ -340,7 +357,7 @@ impl StreamProducer {
|
||||||
|
|
||||||
for consumer in current_consumers {
|
for consumer in current_consumers {
|
||||||
if let Err(err) = consumer.push_sample(&sample) {
|
if let Err(err) = consumer.push_sample(&sample) {
|
||||||
gst::warning!(CAT, obj: appsink, "Failed to push sample: {}", err);
|
gst::warning!(CAT, obj = appsink, "Failed to push sample: {}", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(gst::FlowSuccess::Ok)
|
Ok(gst::FlowSuccess::Ok)
|
||||||
|
@ -357,10 +374,22 @@ impl StreamProducer {
|
||||||
.remove(consumer)
|
.remove(consumer)
|
||||||
.is_some()
|
.is_some()
|
||||||
{
|
{
|
||||||
gst::debug!(CAT, obj: &self.appsink, "Removed consumer {} ({:?})", name, consumer);
|
gst::debug!(
|
||||||
|
CAT,
|
||||||
|
obj = &self.appsink,
|
||||||
|
"Removed consumer {} ({:?})",
|
||||||
|
name,
|
||||||
|
consumer
|
||||||
|
);
|
||||||
consumer.set_callbacks(gst_app::AppSrcCallbacks::builder().build());
|
consumer.set_callbacks(gst_app::AppSrcCallbacks::builder().build());
|
||||||
} else {
|
} else {
|
||||||
gst::debug!(CAT, obj: &self.appsink, "Consumer {} ({:?}) not found", name, consumer);
|
gst::debug!(
|
||||||
|
CAT,
|
||||||
|
obj = &self.appsink,
|
||||||
|
"Consumer {} ({:?}) not found",
|
||||||
|
name,
|
||||||
|
consumer
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,32 +444,40 @@ impl<'a> From<&'a gst_app::AppSink> for StreamProducer {
|
||||||
|
|
||||||
appsink.set_callbacks(
|
appsink.set_callbacks(
|
||||||
gst_app::AppSinkCallbacks::builder()
|
gst_app::AppSinkCallbacks::builder()
|
||||||
.new_sample(glib::clone!(#[strong] consumers, move |appsink| {
|
.new_sample(glib::clone!(
|
||||||
|
#[strong]
|
||||||
|
consumers,
|
||||||
|
move |appsink| {
|
||||||
let mut consumers = consumers.lock().unwrap();
|
let mut consumers = consumers.lock().unwrap();
|
||||||
|
|
||||||
let sample = match appsink.pull_sample() {
|
let sample = match appsink.pull_sample() {
|
||||||
Ok(sample) => sample,
|
Ok(sample) => sample,
|
||||||
Err(_err) => {
|
Err(_err) => {
|
||||||
gst::debug!(CAT, obj: appsink, "Failed to pull sample");
|
gst::debug!(CAT, obj = appsink, "Failed to pull sample");
|
||||||
return Err(gst::FlowError::Flushing);
|
return Err(gst::FlowError::Flushing);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let just_forwarded_preroll = mem::replace(&mut consumers.just_forwarded_preroll, false);
|
let just_forwarded_preroll =
|
||||||
|
mem::replace(&mut consumers.just_forwarded_preroll, false);
|
||||||
|
|
||||||
if just_forwarded_preroll {
|
if just_forwarded_preroll {
|
||||||
return Ok(gst::FlowSuccess::Ok);
|
return Ok(gst::FlowSuccess::Ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
StreamProducer::process_sample(sample, appsink, consumers)
|
StreamProducer::process_sample(sample, appsink, consumers)
|
||||||
}))
|
}
|
||||||
.new_preroll(glib::clone!(#[strong] consumers, move |appsink| {
|
))
|
||||||
|
.new_preroll(glib::clone!(
|
||||||
|
#[strong]
|
||||||
|
consumers,
|
||||||
|
move |appsink| {
|
||||||
let mut consumers = consumers.lock().unwrap();
|
let mut consumers = consumers.lock().unwrap();
|
||||||
|
|
||||||
let sample = match appsink.pull_preroll() {
|
let sample = match appsink.pull_preroll() {
|
||||||
Ok(sample) => sample,
|
Ok(sample) => sample,
|
||||||
Err(_err) => {
|
Err(_err) => {
|
||||||
gst::debug!(CAT, obj: appsink, "Failed to pull preroll");
|
gst::debug!(CAT, obj = appsink, "Failed to pull preroll");
|
||||||
return Err(gst::FlowError::Flushing);
|
return Err(gst::FlowError::Flushing);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -452,37 +489,50 @@ impl<'a> From<&'a gst_app::AppSink> for StreamProducer {
|
||||||
} else {
|
} else {
|
||||||
Ok(gst::FlowSuccess::Ok)
|
Ok(gst::FlowSuccess::Ok)
|
||||||
}
|
}
|
||||||
}))
|
}
|
||||||
.new_event(glib::clone!(#[strong] consumers, move |appsink| {
|
))
|
||||||
match appsink.pull_object().map(|obj| obj.downcast::<gst::Event>()) {
|
.new_event(glib::clone!(
|
||||||
|
#[strong]
|
||||||
|
consumers,
|
||||||
|
move |appsink| {
|
||||||
|
match appsink
|
||||||
|
.pull_object()
|
||||||
|
.map(|obj| obj.downcast::<gst::Event>())
|
||||||
|
{
|
||||||
Ok(Ok(event)) => {
|
Ok(Ok(event)) => {
|
||||||
let (events_to_forward, appsrcs) = {
|
let (events_to_forward, appsrcs) = {
|
||||||
// clone so we don't keep the lock while pushing events
|
// clone so we don't keep the lock while pushing events
|
||||||
let consumers = consumers.lock().unwrap();
|
let consumers = consumers.lock().unwrap();
|
||||||
let events = consumers.events_to_forward.clone();
|
let events = consumers.events_to_forward.clone();
|
||||||
let appsrcs = consumers.consumers.keys().cloned().collect::<Vec<_>>();
|
let appsrcs =
|
||||||
|
consumers.consumers.keys().cloned().collect::<Vec<_>>();
|
||||||
|
|
||||||
(events, appsrcs)
|
(events, appsrcs)
|
||||||
};
|
};
|
||||||
|
|
||||||
if events_to_forward.contains(&event.type_()){
|
if events_to_forward.contains(&event.type_()) {
|
||||||
for appsrc in appsrcs {
|
for appsrc in appsrcs {
|
||||||
appsrc.send_event(event.clone());
|
appsrc.send_event(event.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(Err(_)) => {}, // pulled another unsupported object type, ignore
|
Ok(Err(_)) => {} // pulled another unsupported object type, ignore
|
||||||
Err(_err) => gst::warning!(CAT, obj: appsink, "Failed to pull event"),
|
Err(_err) => gst::warning!(CAT, obj = appsink, "Failed to pull event"),
|
||||||
}
|
}
|
||||||
|
|
||||||
false
|
false
|
||||||
}))
|
}
|
||||||
.eos(glib::clone!(#[strong] consumers, move |appsink| {
|
))
|
||||||
let stream_consumers = consumers
|
.eos(glib::clone!(
|
||||||
.lock()
|
#[strong]
|
||||||
.unwrap();
|
consumers,
|
||||||
|
move |appsink| {
|
||||||
|
let stream_consumers = consumers.lock().unwrap();
|
||||||
|
|
||||||
if stream_consumers.events_to_forward.contains(&gst::EventType::Eos) {
|
if stream_consumers
|
||||||
|
.events_to_forward
|
||||||
|
.contains(&gst::EventType::Eos)
|
||||||
|
{
|
||||||
let current_consumers = stream_consumers
|
let current_consumers = stream_consumers
|
||||||
.consumers
|
.consumers
|
||||||
.values()
|
.values()
|
||||||
|
@ -491,13 +541,19 @@ impl<'a> From<&'a gst_app::AppSink> for StreamProducer {
|
||||||
drop(stream_consumers);
|
drop(stream_consumers);
|
||||||
|
|
||||||
for consumer in current_consumers {
|
for consumer in current_consumers {
|
||||||
gst::debug!(CAT, obj: appsink, "set EOS on consumer {}", consumer.name());
|
gst::debug!(
|
||||||
|
CAT,
|
||||||
|
obj = appsink,
|
||||||
|
"set EOS on consumer {}",
|
||||||
|
consumer.name()
|
||||||
|
);
|
||||||
let _ = consumer.end_of_stream();
|
let _ = consumer.end_of_stream();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
gst::debug!(CAT, obj: appsink, "don't forward EOS to consumers");
|
gst::debug!(CAT, obj = appsink, "don't forward EOS to consumers");
|
||||||
}
|
}
|
||||||
}))
|
}
|
||||||
|
))
|
||||||
.build(),
|
.build(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -591,7 +647,7 @@ impl StreamConsumer {
|
||||||
.enough_data(move |appsrc| {
|
.enough_data(move |appsrc| {
|
||||||
gst::debug!(
|
gst::debug!(
|
||||||
CAT,
|
CAT,
|
||||||
obj: appsrc,
|
obj = appsrc,
|
||||||
"consumer {} ({:?}) is not consuming fast enough, old samples are getting dropped",
|
"consumer {} ({:?}) is not consuming fast enough, old samples are getting dropped",
|
||||||
appsrc.name(),
|
appsrc.name(),
|
||||||
appsrc,
|
appsrc,
|
||||||
|
|
|
@ -304,7 +304,7 @@ impl<'a> ElementBuilder<'a> {
|
||||||
let factory = factory.load().map_err(|_| {
|
let factory = factory.load().map_err(|_| {
|
||||||
crate::warning!(
|
crate::warning!(
|
||||||
crate::CAT_RUST,
|
crate::CAT_RUST,
|
||||||
obj: factory,
|
obj = factory,
|
||||||
"loading element factory '{}' failed",
|
"loading element factory '{}' failed",
|
||||||
factory.name(),
|
factory.name(),
|
||||||
);
|
);
|
||||||
|
@ -318,7 +318,7 @@ impl<'a> ElementBuilder<'a> {
|
||||||
if !element_type.is_valid() {
|
if !element_type.is_valid() {
|
||||||
crate::warning!(
|
crate::warning!(
|
||||||
crate::CAT_RUST,
|
crate::CAT_RUST,
|
||||||
obj: &factory,
|
obj = &factory,
|
||||||
"element factory '{}' has no type",
|
"element factory '{}' has no type",
|
||||||
factory.name()
|
factory.name()
|
||||||
);
|
);
|
||||||
|
@ -422,7 +422,7 @@ impl<'a> ElementBuilder<'a> {
|
||||||
|
|
||||||
crate::log!(
|
crate::log!(
|
||||||
crate::CAT_RUST,
|
crate::CAT_RUST,
|
||||||
obj: &factory,
|
obj = &factory,
|
||||||
"created element \"{}\"",
|
"created element \"{}\"",
|
||||||
factory.name()
|
factory.name()
|
||||||
);
|
);
|
||||||
|
|
|
@ -613,135 +613,383 @@ declare_debug_category_from_name!(CAT_CONTEXT, "GST_CONTEXT");
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! error(
|
macro_rules! error(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Error, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! error(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
error!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Error, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! error(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
error!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Error, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! error(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
error!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Error, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Error, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! warning(
|
macro_rules! warning(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Warning, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! warning(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
warning!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Warning, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! warning(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
warning!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Warning, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! warning(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
warning!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Warning, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Warning, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! fixme(
|
macro_rules! fixme(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Fixme, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! fixme(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
fixme!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Fixme, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! fixme(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
fixme!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Fixme, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! fixme(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
fixme!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Fixme, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Fixme, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! info(
|
macro_rules! info(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Info, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! info(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
info!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Info, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! info(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
info!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Info, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! info(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
info!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Info, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Info, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! debug(
|
macro_rules! debug(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Debug, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! debug(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
debug!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Debug, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! debug(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
debug!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Debug, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! debug(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
debug!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Debug, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Debug, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! log(
|
macro_rules! log(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Log, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! log(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
log!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Log, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! log(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
log!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Log, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! log(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
log!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Log, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Log, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! trace(
|
macro_rules! trace(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Trace, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! trace(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
trace!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Trace, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! trace(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
trace!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Trace, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: `"]
|
||||||
|
macro_rules! trace(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
trace!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Trace, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Trace, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! memdump(
|
macro_rules! memdump(
|
||||||
|
($cat:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, obj = $obj, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, imp = $imp, $($args)*)
|
||||||
|
}};
|
||||||
|
($cat:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, id = $id, $($args)*)
|
||||||
|
}};
|
||||||
|
|
||||||
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, obj: $obj:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Memdump, obj: $obj, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style obj format. Use `obj = ` instead of `obj: ` for better tooling support"]
|
||||||
|
macro_rules! memdump(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
memdump!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, obj = $obj, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, imp: $imp:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Memdump, imp: $imp, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style imp format. Use `imp = ` instead of `imp: ` for better tooling support"]
|
||||||
|
macro_rules! memdump(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
memdump!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, imp = $imp, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, id: $id:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Memdump, id: $id, $($args)*)
|
{
|
||||||
|
#[deprecated = "Using old-style id format. Use `id = ` instead of `id: ` for better tooling support"]
|
||||||
|
macro_rules! memdump(
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
memdump!();
|
||||||
|
}
|
||||||
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, id = $id, $($args)*)
|
||||||
}};
|
}};
|
||||||
($cat:expr, $($args:tt)*) => { {
|
($cat:expr, $($args:tt)*) => { {
|
||||||
$crate::log_with_level!($cat, level: $crate::DebugLevel::Memdump, $($args)*)
|
$crate::log_with_level!($cat, $crate::DebugLevel::Memdump, $($args)*)
|
||||||
}};
|
}};
|
||||||
);
|
);
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! log_with_level(
|
macro_rules! log_with_level(
|
||||||
($cat:expr, level: $level:expr, obj: $obj:expr, $msg:literal) => { {
|
($cat:expr, $level:expr, obj = $obj:expr, $msg:literal) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -785,7 +1033,7 @@ macro_rules! log_with_level(
|
||||||
})(format_args!($msg))
|
})(format_args!($msg))
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, obj: $obj:expr, $($args:tt)*) => { {
|
($cat:expr, $level:expr, obj = $obj:expr, $($args:tt)*) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -809,7 +1057,7 @@ macro_rules! log_with_level(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, imp: $imp:expr, $msg:literal) => { {
|
($cat:expr, $level:expr, imp = $imp:expr, $msg:literal) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -854,7 +1102,7 @@ macro_rules! log_with_level(
|
||||||
})(format_args!($msg))
|
})(format_args!($msg))
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, imp: $imp:expr, $($args:tt)*) => { {
|
($cat:expr, $level:expr, imp = $imp:expr, $($args:tt)*) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -879,7 +1127,7 @@ macro_rules! log_with_level(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, id: $id:literal, $msg:literal) => { {
|
($cat:expr, $level:expr, id = $id:literal, $msg:literal) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -920,7 +1168,7 @@ macro_rules! log_with_level(
|
||||||
})(format_args!($msg))
|
})(format_args!($msg))
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, id: $id:literal, $($args:tt)*) => { {
|
($cat:expr, $level:expr, id = $id:literal, $($args:tt)*) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -941,7 +1189,7 @@ macro_rules! log_with_level(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, id: $id:expr, $msg:literal) => { {
|
($cat:expr, $level:expr, id = $id:expr, $msg:literal) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -982,7 +1230,7 @@ macro_rules! log_with_level(
|
||||||
})(format_args!($msg))
|
})(format_args!($msg))
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, id: $id:expr, $($args:tt)*) => { {
|
($cat:expr, $level:expr, id = $id:expr, $($args:tt)*) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -1003,7 +1251,7 @@ macro_rules! log_with_level(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, $msg:literal) => { {
|
($cat:expr, $level:expr, $msg:literal) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -1044,7 +1292,7 @@ macro_rules! log_with_level(
|
||||||
})(format_args!($msg))
|
})(format_args!($msg))
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
($cat:expr, level: $level:expr, $($args:tt)*) => { {
|
($cat:expr, $level:expr, $($args:tt)*) => { {
|
||||||
let cat = $cat.clone();
|
let cat = $cat.clone();
|
||||||
|
|
||||||
// Check the log level before using `format_args!` otherwise
|
// Check the log level before using `format_args!` otherwise
|
||||||
|
@ -1343,23 +1591,23 @@ mod tests {
|
||||||
|
|
||||||
let obj = crate::Bin::with_name("meh");
|
let obj = crate::Bin::with_name("meh");
|
||||||
|
|
||||||
error!(cat, obj: &obj, "meh");
|
error!(cat, obj = &obj, "meh");
|
||||||
warning!(cat, obj: &obj, "meh");
|
warning!(cat, obj = &obj, "meh");
|
||||||
fixme!(cat, obj: &obj, "meh");
|
fixme!(cat, obj = &obj, "meh");
|
||||||
info!(cat, obj: &obj, "meh");
|
info!(cat, obj = &obj, "meh");
|
||||||
debug!(cat, obj: &obj, "meh");
|
debug!(cat, obj = &obj, "meh");
|
||||||
log!(cat, obj: &obj, "meh");
|
log!(cat, obj = &obj, "meh");
|
||||||
trace!(cat, obj: &obj, "meh");
|
trace!(cat, obj = &obj, "meh");
|
||||||
memdump!(cat, obj: &obj, "meh");
|
memdump!(cat, obj = &obj, "meh");
|
||||||
|
|
||||||
error!(cat, obj: obj, "meh");
|
error!(cat, obj = obj, "meh");
|
||||||
warning!(cat, obj: obj, "meh");
|
warning!(cat, obj = obj, "meh");
|
||||||
fixme!(cat, obj: obj, "meh");
|
fixme!(cat, obj = obj, "meh");
|
||||||
info!(cat, obj: obj, "meh");
|
info!(cat, obj = obj, "meh");
|
||||||
debug!(cat, obj: obj, "meh");
|
debug!(cat, obj = obj, "meh");
|
||||||
log!(cat, obj: obj, "meh");
|
log!(cat, obj = obj, "meh");
|
||||||
trace!(cat, obj: obj, "meh");
|
trace!(cat, obj = obj, "meh");
|
||||||
memdump!(cat, obj: obj, "meh");
|
memdump!(cat, obj = obj, "meh");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "log")]
|
#[cfg(feature = "log")]
|
||||||
|
@ -1459,13 +1707,13 @@ mod tests {
|
||||||
|
|
||||||
remove_default_log_function();
|
remove_default_log_function();
|
||||||
let log_fn = add_log_function(handler);
|
let log_fn = add_log_function(handler);
|
||||||
info!(cat, obj: &obj, "meh");
|
info!(cat, obj = &obj, "meh");
|
||||||
|
|
||||||
receiver.recv().unwrap();
|
receiver.recv().unwrap();
|
||||||
|
|
||||||
remove_log_function(log_fn);
|
remove_log_function(log_fn);
|
||||||
|
|
||||||
info!(cat, obj: &obj, "meh2");
|
info!(cat, obj = &obj, "meh2");
|
||||||
assert!(receiver.recv().is_err());
|
assert!(receiver.recv().is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1501,12 +1749,12 @@ mod tests {
|
||||||
|
|
||||||
cat.set_threshold(crate::DebugLevel::Trace);
|
cat.set_threshold(crate::DebugLevel::Trace);
|
||||||
|
|
||||||
trace!(cat, id: "123", "test");
|
trace!(cat, id = "123", "test");
|
||||||
trace!(cat, id: glib::GString::from("123"), "test");
|
trace!(cat, id = glib::GString::from("123"), "test");
|
||||||
trace!(cat, id: &glib::GString::from("123"), "test");
|
trace!(cat, id = &glib::GString::from("123"), "test");
|
||||||
|
|
||||||
// Try with a formatted string too (which is a different code path in the bindings)
|
// Try with a formatted string too (which is a different code path in the bindings)
|
||||||
let log_id = glib::GString::from("456");
|
let log_id = glib::GString::from("456");
|
||||||
trace!(cat, id: &log_id , "{log_id:?}");
|
trace!(cat, id = &log_id, "{log_id:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1277,7 +1277,7 @@ where
|
||||||
if let Some(passed_buffer) = passed_buffer {
|
if let Some(passed_buffer) = passed_buffer {
|
||||||
crate::debug!(
|
crate::debug!(
|
||||||
crate::CAT_PERFORMANCE,
|
crate::CAT_PERFORMANCE,
|
||||||
obj: pad.unsafe_cast_ref::<glib::Object>(),
|
obj = pad.unsafe_cast_ref::<glib::Object>(),
|
||||||
"Returned new buffer from getrange function, copying into passed buffer"
|
"Returned new buffer from getrange function, copying into passed buffer"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1286,7 +1286,7 @@ where
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
crate::error!(
|
crate::error!(
|
||||||
crate::CAT_RUST,
|
crate::CAT_RUST,
|
||||||
obj: pad.unsafe_cast_ref::<glib::Object>(),
|
obj = pad.unsafe_cast_ref::<glib::Object>(),
|
||||||
"Failed to map passed buffer writable"
|
"Failed to map passed buffer writable"
|
||||||
);
|
);
|
||||||
return ffi::GST_FLOW_ERROR;
|
return ffi::GST_FLOW_ERROR;
|
||||||
|
@ -1305,7 +1305,7 @@ where
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
crate::error!(
|
crate::error!(
|
||||||
crate::CAT_RUST,
|
crate::CAT_RUST,
|
||||||
obj: pad.unsafe_cast_ref::<glib::Object>(),
|
obj = pad.unsafe_cast_ref::<glib::Object>(),
|
||||||
"Failed to copy buffer metadata"
|
"Failed to copy buffer metadata"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ unsafe extern "C" fn alloc<T: AllocatorImpl>(
|
||||||
imp.alloc(size, params)
|
imp.alloc(size, params)
|
||||||
.map(|memory| memory.into_glib_ptr())
|
.map(|memory| memory.into_glib_ptr())
|
||||||
.unwrap_or_else(|error| {
|
.unwrap_or_else(|error| {
|
||||||
error!(crate::CAT_RUST, obj: instance, "{:?}", error);
|
error!(crate::CAT_RUST, obj = instance, "{:?}", error);
|
||||||
|
|
||||||
ptr::null_mut()
|
ptr::null_mut()
|
||||||
})
|
})
|
||||||
|
|
|
@ -111,7 +111,11 @@ unsafe extern "C" fn task_pool_push<T: TaskPoolImpl>(
|
||||||
unsafe extern "C" fn task_pool_join<T: TaskPoolImpl>(ptr: *mut ffi::GstTaskPool, id: gpointer) {
|
unsafe extern "C" fn task_pool_join<T: TaskPoolImpl>(ptr: *mut ffi::GstTaskPool, id: gpointer) {
|
||||||
if id.is_null() {
|
if id.is_null() {
|
||||||
let wrap: Borrowed<TaskPool> = from_glib_borrow(ptr);
|
let wrap: Borrowed<TaskPool> = from_glib_borrow(ptr);
|
||||||
crate::warning!(crate::CAT_RUST, obj: wrap.as_ref(), "Tried to join null handle");
|
crate::warning!(
|
||||||
|
crate::CAT_RUST,
|
||||||
|
obj = wrap.as_ref(),
|
||||||
|
"Tried to join null handle"
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +131,11 @@ unsafe extern "C" fn task_pool_dispose_handle<T: TaskPoolImpl>(
|
||||||
) {
|
) {
|
||||||
if id.is_null() {
|
if id.is_null() {
|
||||||
let wrap: Borrowed<TaskPool> = from_glib_borrow(ptr);
|
let wrap: Borrowed<TaskPool> = from_glib_borrow(ptr);
|
||||||
crate::warning!(crate::CAT_RUST, obj: wrap.as_ref(), "Tried to dispose null handle");
|
crate::warning!(
|
||||||
|
crate::CAT_RUST,
|
||||||
|
obj = wrap.as_ref(),
|
||||||
|
"Tried to dispose null handle"
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ impl Drop for TaskPoolTaskHandle {
|
||||||
if #[cfg(feature = "v1_20")] {
|
if #[cfg(feature = "v1_20")] {
|
||||||
unsafe { task_pool.dispose_handle(self.handle) }
|
unsafe { task_pool.dispose_handle(self.handle) }
|
||||||
} else {
|
} else {
|
||||||
crate::warning!(crate::CAT_RUST, obj: &task_pool, "Leaked task handle");
|
crate::warning!(crate::CAT_RUST, obj = &task_pool, "Leaked task handle");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue