mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-02-17 05:15:14 +00:00
Update for gobject-subclass API changes
This commit is contained in:
parent
88596f933f
commit
2c0e7a9192
7 changed files with 19 additions and 39 deletions
|
@ -206,6 +206,7 @@ pub type BaseSinkClass = ClassStruct<BaseSink>;
|
|||
// FIXME: Boilerplate
|
||||
unsafe impl BaseSinkClassExt<BaseSink> for BaseSinkClass {}
|
||||
unsafe impl ElementClassExt<BaseSink> for BaseSinkClass {}
|
||||
unsafe impl ObjectClassExt<BaseSink> for BaseSinkClass {}
|
||||
|
||||
unsafe impl Send for BaseSink {}
|
||||
unsafe impl Sync for BaseSink {}
|
||||
|
@ -291,15 +292,10 @@ box_base_sink_impl!(BaseSinkImpl);
|
|||
|
||||
impl ObjectType for BaseSink {
|
||||
const NAME: &'static str = "RsBaseSink";
|
||||
type GlibType = gst_base_ffi::GstBaseSink;
|
||||
type GlibClassType = gst_base_ffi::GstBaseSinkClass;
|
||||
type ParentType = gst_base::BaseSink;
|
||||
type ImplType = Box<BaseSinkImpl<Self>>;
|
||||
type InstanceStructType = ElementInstanceStruct<Self>;
|
||||
|
||||
fn glib_type() -> glib::Type {
|
||||
unsafe { from_glib(gst_base_ffi::gst_base_sink_get_type()) }
|
||||
}
|
||||
|
||||
fn class_init(token: &ClassInitToken, klass: &mut BaseSinkClass) {
|
||||
ElementClassExt::override_vfuncs(klass, token);
|
||||
BaseSinkClassExt::override_vfuncs(klass, token);
|
||||
|
|
|
@ -257,6 +257,7 @@ pub type BaseSrcClass = ClassStruct<BaseSrc>;
|
|||
// FIXME: Boilerplate
|
||||
unsafe impl BaseSrcClassExt<BaseSrc> for BaseSrcClass {}
|
||||
unsafe impl ElementClassExt<BaseSrc> for BaseSrcClass {}
|
||||
unsafe impl ObjectClassExt<BaseSrc> for BaseSrcClass {}
|
||||
|
||||
unsafe impl Send for BaseSrc {}
|
||||
unsafe impl Sync for BaseSrc {}
|
||||
|
@ -362,16 +363,12 @@ box_base_src_impl!(BaseSrcImpl);
|
|||
|
||||
impl ObjectType for BaseSrc {
|
||||
const NAME: &'static str = "RsBaseSrc";
|
||||
type GlibType = gst_base_ffi::GstBaseSrc;
|
||||
type GlibClassType = gst_base_ffi::GstBaseSrcClass;
|
||||
type ParentType = gst_base::BaseSrc;
|
||||
type ImplType = Box<BaseSrcImpl<Self>>;
|
||||
type InstanceStructType = ElementInstanceStruct<Self>;
|
||||
|
||||
fn glib_type() -> glib::Type {
|
||||
unsafe { from_glib(gst_base_ffi::gst_base_src_get_type()) }
|
||||
}
|
||||
|
||||
fn class_init(token: &ClassInitToken, klass: &mut BaseSrcClass) {
|
||||
ObjectClassExt::override_vfuncs(klass, token);
|
||||
ElementClassExt::override_vfuncs(klass, token);
|
||||
BaseSrcClassExt::override_vfuncs(klass, token);
|
||||
}
|
||||
|
|
|
@ -335,6 +335,7 @@ pub type BaseTransformClass = ClassStruct<BaseTransform>;
|
|||
// FIXME: Boilerplate
|
||||
unsafe impl BaseTransformClassExt<BaseTransform> for BaseTransformClass {}
|
||||
unsafe impl ElementClassExt<BaseTransform> for BaseTransformClass {}
|
||||
unsafe impl ObjectClassExt<BaseTransform> for BaseTransformClass {}
|
||||
|
||||
unsafe impl Send for BaseTransform {}
|
||||
unsafe impl Sync for BaseTransform {}
|
||||
|
@ -424,15 +425,10 @@ box_base_transform_impl!(BaseTransformImpl);
|
|||
|
||||
impl ObjectType for BaseTransform {
|
||||
const NAME: &'static str = "RsBaseTransform";
|
||||
type GlibType = gst_base_ffi::GstBaseTransform;
|
||||
type GlibClassType = gst_base_ffi::GstBaseTransformClass;
|
||||
type ParentType = gst_base::BaseTransform;
|
||||
type ImplType = Box<BaseTransformImpl<Self>>;
|
||||
type InstanceStructType = ElementInstanceStruct<Self>;
|
||||
|
||||
fn glib_type() -> glib::Type {
|
||||
unsafe { from_glib(gst_base_ffi::gst_base_transform_get_type()) }
|
||||
}
|
||||
|
||||
fn class_init(token: &ClassInitToken, klass: &mut BaseTransformClass) {
|
||||
ElementClassExt::override_vfuncs(klass, token);
|
||||
BaseTransformClassExt::override_vfuncs(klass, token);
|
||||
|
|
|
@ -111,6 +111,7 @@ pub type BinClass = ClassStruct<Bin>;
|
|||
// FIXME: Boilerplate
|
||||
unsafe impl BinClassExt<Bin> for BinClass {}
|
||||
unsafe impl ElementClassExt<Bin> for BinClass {}
|
||||
unsafe impl ObjectClassExt<Bin> for BinClass {}
|
||||
|
||||
unsafe impl Send for Bin {}
|
||||
unsafe impl Sync for Bin {}
|
||||
|
@ -145,15 +146,10 @@ box_bin_impl!(BinImpl);
|
|||
|
||||
impl ObjectType for Bin {
|
||||
const NAME: &'static str = "RsBin";
|
||||
type GlibType = gst_ffi::GstBin;
|
||||
type GlibClassType = gst_ffi::GstBinClass;
|
||||
type ParentType = gst::Bin;
|
||||
type ImplType = Box<BinImpl<Self>>;
|
||||
type InstanceStructType = ElementInstanceStruct<Self>;
|
||||
|
||||
fn glib_type() -> glib::Type {
|
||||
unsafe { from_glib(gst_ffi::gst_bin_get_type()) }
|
||||
}
|
||||
|
||||
fn class_init(token: &ClassInitToken, klass: &mut BinClass) {
|
||||
ElementClassExt::override_vfuncs(klass, token);
|
||||
BinClassExt::override_vfuncs(klass, token);
|
||||
|
|
|
@ -207,6 +207,7 @@ pub type ElementClass = ClassStruct<Element>;
|
|||
|
||||
// FIXME: Boilerplate
|
||||
unsafe impl ElementClassExt<Element> for ElementClass {}
|
||||
unsafe impl ObjectClassExt<Element> for ElementClass {}
|
||||
|
||||
unsafe impl Send for Element {}
|
||||
unsafe impl Sync for Element {}
|
||||
|
@ -261,17 +262,13 @@ box_element_impl!(ElementImpl);
|
|||
|
||||
impl ObjectType for Element {
|
||||
const NAME: &'static str = "RsElement";
|
||||
type GlibType = gst_ffi::GstElement;
|
||||
type GlibClassType = gst_ffi::GstElementClass;
|
||||
type ParentType = gst::Element;
|
||||
type ImplType = Box<ElementImpl<Self>>;
|
||||
type InstanceStructType = ElementInstanceStruct<Self>;
|
||||
|
||||
fn glib_type() -> glib::Type {
|
||||
unsafe { from_glib(gst_ffi::gst_element_get_type()) }
|
||||
}
|
||||
|
||||
fn class_init(token: &ClassInitToken, klass: &mut ElementClass) {
|
||||
klass.override_vfuncs(token);
|
||||
ObjectClassExt::override_vfuncs(klass, token);
|
||||
ElementClassExt::override_vfuncs(klass, token);
|
||||
}
|
||||
|
||||
object_type_fns!();
|
||||
|
|
|
@ -2,10 +2,11 @@ use std::ptr;
|
|||
use std::sync::atomic::AtomicBool;
|
||||
|
||||
use gobject_subclass::object::*;
|
||||
use glib::wrapper::Wrapper;
|
||||
|
||||
#[repr(C)]
|
||||
pub struct ElementInstanceStruct<T: ObjectType> {
|
||||
_parent: T::GlibType,
|
||||
_parent: <T::ParentType as Wrapper>::GlibType,
|
||||
_imp: ptr::NonNull<T::ImplType>,
|
||||
|
||||
_panicked: AtomicBool,
|
||||
|
@ -16,7 +17,7 @@ pub trait PanicPoison {
|
|||
}
|
||||
|
||||
unsafe impl<T: ObjectType> Instance<T> for ElementInstanceStruct<T> {
|
||||
fn parent(&self) -> &T::GlibType {
|
||||
fn parent(&self) -> &<T::ParentType as Wrapper>::GlibType {
|
||||
&self._parent
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ pub type PipelineClass = ClassStruct<Pipeline>;
|
|||
unsafe impl PipelineClassExt<Pipeline> for PipelineClass {}
|
||||
unsafe impl BinClassExt<Pipeline> for PipelineClass {}
|
||||
unsafe impl ElementClassExt<Pipeline> for PipelineClass {}
|
||||
unsafe impl ObjectClassExt<Pipeline> for PipelineClass {}
|
||||
|
||||
unsafe impl Send for Pipeline {}
|
||||
unsafe impl Sync for Pipeline {}
|
||||
|
@ -90,16 +91,12 @@ box_pipeline_impl!(PipelineImpl);
|
|||
|
||||
impl ObjectType for Pipeline {
|
||||
const NAME: &'static str = "RsPipeline";
|
||||
type GlibType = gst_ffi::GstPipeline;
|
||||
type GlibClassType = gst_ffi::GstPipelineClass;
|
||||
type ParentType = gst::Pipeline;
|
||||
type ImplType = Box<PipelineImpl<Self>>;
|
||||
type InstanceStructType = ElementInstanceStruct<Self>;
|
||||
|
||||
fn glib_type() -> glib::Type {
|
||||
unsafe { from_glib(gst_ffi::gst_pipeline_get_type()) }
|
||||
}
|
||||
|
||||
fn class_init(token: &ClassInitToken, klass: &mut PipelineClass) {
|
||||
ObjectClassExt::override_vfuncs(klass, token);
|
||||
ElementClassExt::override_vfuncs(klass, token);
|
||||
BinClassExt::override_vfuncs(klass, token);
|
||||
PipelineClassExt::override_vfuncs(klass, token);
|
||||
|
|
Loading…
Reference in a new issue