Update for gobject-subclass API changes

This commit is contained in:
Sebastian Dröge 2018-05-04 13:58:02 +02:00
parent 88596f933f
commit 2c0e7a9192
7 changed files with 19 additions and 39 deletions

View file

@ -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);

View file

@ -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);
}

View file

@ -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);

View file

@ -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);

View file

@ -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!();

View file

@ -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
}

View file

@ -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);