From 0803dd411eb24c5c1a625c92cd75b7c3bbe1fbd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 8 Mar 2021 12:06:56 +0200 Subject: [PATCH] Update for glib subclass API cleanup --- gstreamer-audio/src/subclass/audio_decoder.rs | 4 +-- gstreamer-audio/src/subclass/audio_encoder.rs | 4 +-- gstreamer-audio/src/subclass/audio_sink.rs | 4 +-- gstreamer-audio/src/subclass/audio_src.rs | 4 +-- gstreamer-base/src/subclass/aggregator.rs | 4 +-- gstreamer-base/src/subclass/aggregator_pad.rs | 4 +-- gstreamer-base/src/subclass/base_parse.rs | 4 +-- gstreamer-base/src/subclass/base_sink.rs | 4 +-- gstreamer-base/src/subclass/base_src.rs | 4 +-- gstreamer-base/src/subclass/base_transform.rs | 4 +-- gstreamer-base/src/subclass/push_src.rs | 4 +-- .../src/subclass/player_video_renderer.rs | 9 +++---- .../src/subclass/rtsp_client.rs | 4 +-- .../src/subclass/rtsp_media.rs | 4 +-- .../src/subclass/rtsp_media_factory.rs | 4 +-- .../src/subclass/rtsp_server.rs | 4 +-- gstreamer-video/src/subclass/video_decoder.rs | 4 +-- gstreamer-video/src/subclass/video_encoder.rs | 4 +-- gstreamer-video/src/subclass/video_sink.rs | 4 +-- gstreamer/src/subclass/bin.rs | 4 +-- gstreamer/src/subclass/child_proxy.rs | 17 +++++------- gstreamer/src/subclass/clock.rs | 4 +-- gstreamer/src/subclass/device.rs | 4 +-- gstreamer/src/subclass/device_provider.rs | 4 +-- gstreamer/src/subclass/element.rs | 4 +-- gstreamer/src/subclass/ghost_pad.rs | 4 +-- gstreamer/src/subclass/pad.rs | 4 +-- gstreamer/src/subclass/pipeline.rs | 4 +-- gstreamer/src/subclass/preset.rs | 6 +---- gstreamer/src/subclass/system_clock.rs | 4 +-- gstreamer/src/subclass/tag_setter.rs | 6 +---- gstreamer/src/subclass/uri_handler.rs | 27 +++++++++---------- 32 files changed, 79 insertions(+), 94 deletions(-) diff --git a/gstreamer-audio/src/subclass/audio_decoder.rs b/gstreamer-audio/src/subclass/audio_decoder.rs index 797bdba72..65fbe91d9 100644 --- a/gstreamer-audio/src/subclass/audio_decoder.rs +++ b/gstreamer-audio/src/subclass/audio_decoder.rs @@ -534,8 +534,8 @@ unsafe impl IsSubclassable for AudioDecoder where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.open = Some(audio_decoder_open::); klass.close = Some(audio_decoder_close::); diff --git a/gstreamer-audio/src/subclass/audio_encoder.rs b/gstreamer-audio/src/subclass/audio_encoder.rs index fe80a7f54..d73daa2d5 100644 --- a/gstreamer-audio/src/subclass/audio_encoder.rs +++ b/gstreamer-audio/src/subclass/audio_encoder.rs @@ -480,8 +480,8 @@ unsafe impl IsSubclassable for AudioEncoder where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.open = Some(audio_encoder_open::); klass.close = Some(audio_encoder_close::); diff --git a/gstreamer-audio/src/subclass/audio_sink.rs b/gstreamer-audio/src/subclass/audio_sink.rs index 74b3a368d..7d6941cbd 100644 --- a/gstreamer-audio/src/subclass/audio_sink.rs +++ b/gstreamer-audio/src/subclass/audio_sink.rs @@ -188,8 +188,8 @@ unsafe impl IsSubclassable for AudioSink where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.close = Some(audiosink_close::); klass.delay = Some(audiosink_delay::); diff --git a/gstreamer-audio/src/subclass/audio_src.rs b/gstreamer-audio/src/subclass/audio_src.rs index 3637da2dc..375793394 100644 --- a/gstreamer-audio/src/subclass/audio_src.rs +++ b/gstreamer-audio/src/subclass/audio_src.rs @@ -204,8 +204,8 @@ unsafe impl IsSubclassable for AudioSrc where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.close = Some(audiosrc_close::); klass.delay = Some(audiosrc_delay::); diff --git a/gstreamer-base/src/subclass/aggregator.rs b/gstreamer-base/src/subclass/aggregator.rs index 08a4f09bc..fbba5b1d8 100644 --- a/gstreamer-base/src/subclass/aggregator.rs +++ b/gstreamer-base/src/subclass/aggregator.rs @@ -707,8 +707,8 @@ unsafe impl IsSubclassable for Aggregator where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.flush = Some(aggregator_flush::); klass.clip = Some(aggregator_clip::); diff --git a/gstreamer-base/src/subclass/aggregator_pad.rs b/gstreamer-base/src/subclass/aggregator_pad.rs index f467c24aa..246b21b3e 100644 --- a/gstreamer-base/src/subclass/aggregator_pad.rs +++ b/gstreamer-base/src/subclass/aggregator_pad.rs @@ -94,8 +94,8 @@ impl AggregatorPadImplExt for T { } } unsafe impl IsSubclassable for AggregatorPad { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.flush = Some(aggregator_pad_flush::); klass.skip_buffer = Some(aggregator_pad_skip_buffer::); diff --git a/gstreamer-base/src/subclass/base_parse.rs b/gstreamer-base/src/subclass/base_parse.rs index e41d16912..a7587ded5 100644 --- a/gstreamer-base/src/subclass/base_parse.rs +++ b/gstreamer-base/src/subclass/base_parse.rs @@ -207,8 +207,8 @@ unsafe impl IsSubclassable for BaseParse where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.start = Some(base_parse_start::); klass.stop = Some(base_parse_stop::); diff --git a/gstreamer-base/src/subclass/base_sink.rs b/gstreamer-base/src/subclass/base_sink.rs index 1e83d4ed9..56b8fee30 100644 --- a/gstreamer-base/src/subclass/base_sink.rs +++ b/gstreamer-base/src/subclass/base_sink.rs @@ -404,8 +404,8 @@ unsafe impl IsSubclassable for BaseSink where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.start = Some(base_sink_start::); klass.stop = Some(base_sink_stop::); diff --git a/gstreamer-base/src/subclass/base_src.rs b/gstreamer-base/src/subclass/base_src.rs index 4140e74a4..1ea917e72 100644 --- a/gstreamer-base/src/subclass/base_src.rs +++ b/gstreamer-base/src/subclass/base_src.rs @@ -584,8 +584,8 @@ unsafe impl IsSubclassable for BaseSrc where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.start = Some(base_src_start::); klass.stop = Some(base_src_stop::); diff --git a/gstreamer-base/src/subclass/base_transform.rs b/gstreamer-base/src/subclass/base_transform.rs index f7461e439..50b2c165e 100644 --- a/gstreamer-base/src/subclass/base_transform.rs +++ b/gstreamer-base/src/subclass/base_transform.rs @@ -838,8 +838,8 @@ unsafe impl IsSubclassable for BaseTransform where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.start = Some(base_transform_start::); klass.stop = Some(base_transform_stop::); diff --git a/gstreamer-base/src/subclass/push_src.rs b/gstreamer-base/src/subclass/push_src.rs index b52a898e7..744cef6c8 100644 --- a/gstreamer-base/src/subclass/push_src.rs +++ b/gstreamer-base/src/subclass/push_src.rs @@ -114,8 +114,8 @@ unsafe impl IsSubclassable for PushSrc where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.fill = Some(push_src_fill::); klass.alloc = Some(push_src_alloc::); diff --git a/gstreamer-player/src/subclass/player_video_renderer.rs b/gstreamer-player/src/subclass/player_video_renderer.rs index 45c12074c..112e9a22e 100644 --- a/gstreamer-player/src/subclass/player_video_renderer.rs +++ b/gstreamer-player/src/subclass/player_video_renderer.rs @@ -11,13 +11,10 @@ pub trait PlayerVideoRendererImpl: ObjectImpl { } unsafe impl IsImplementable for PlayerVideoRenderer { - unsafe extern "C" fn interface_init( - iface: glib::ffi::gpointer, - _iface_data: glib::ffi::gpointer, - ) { - let video_renderer_iface = &mut *(iface as *mut ffi::GstPlayerVideoRendererInterface); + fn interface_init(iface: &mut glib::Class) { + let iface = iface.as_mut(); - video_renderer_iface.create_video_sink = Some(video_renderer_create_video_sink::); + iface.create_video_sink = Some(video_renderer_create_video_sink::); } } diff --git a/gstreamer-rtsp-server/src/subclass/rtsp_client.rs b/gstreamer-rtsp-server/src/subclass/rtsp_client.rs index 72f274fd1..419a7aa09 100644 --- a/gstreamer-rtsp-server/src/subclass/rtsp_client.rs +++ b/gstreamer-rtsp-server/src/subclass/rtsp_client.rs @@ -854,8 +854,8 @@ impl RTSPClientImplExt for T { } } unsafe impl IsSubclassable for RTSPClient { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.create_sdp = Some(client_create_sdp::); klass.configure_client_media = Some(client_configure_client_media::); diff --git a/gstreamer-rtsp-server/src/subclass/rtsp_media.rs b/gstreamer-rtsp-server/src/subclass/rtsp_media.rs index 493f6cebb..f9b50de7e 100644 --- a/gstreamer-rtsp-server/src/subclass/rtsp_media.rs +++ b/gstreamer-rtsp-server/src/subclass/rtsp_media.rs @@ -451,8 +451,8 @@ impl RTSPMediaImplExt for T { } } unsafe impl IsSubclassable for RTSPMedia { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.handle_message = Some(media_handle_message::); klass.prepare = Some(media_prepare::); diff --git a/gstreamer-rtsp-server/src/subclass/rtsp_media_factory.rs b/gstreamer-rtsp-server/src/subclass/rtsp_media_factory.rs index e9dbce425..56d86976a 100644 --- a/gstreamer-rtsp-server/src/subclass/rtsp_media_factory.rs +++ b/gstreamer-rtsp-server/src/subclass/rtsp_media_factory.rs @@ -232,8 +232,8 @@ impl RTSPMediaFactoryImplExt for T { } } unsafe impl IsSubclassable for RTSPMediaFactory { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.gen_key = Some(factory_gen_key::); klass.create_element = Some(factory_create_element::); diff --git a/gstreamer-rtsp-server/src/subclass/rtsp_server.rs b/gstreamer-rtsp-server/src/subclass/rtsp_server.rs index e4d0510d5..027740f43 100644 --- a/gstreamer-rtsp-server/src/subclass/rtsp_server.rs +++ b/gstreamer-rtsp-server/src/subclass/rtsp_server.rs @@ -48,8 +48,8 @@ impl RTSPServerImplExt for T { } } unsafe impl IsSubclassable for RTSPServer { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.create_client = Some(server_create_client::); klass.client_connected = Some(server_client_connected::); diff --git a/gstreamer-video/src/subclass/video_decoder.rs b/gstreamer-video/src/subclass/video_decoder.rs index b429d325c..011b88229 100644 --- a/gstreamer-video/src/subclass/video_decoder.rs +++ b/gstreamer-video/src/subclass/video_decoder.rs @@ -536,8 +536,8 @@ unsafe impl IsSubclassable for VideoDecoder where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.open = Some(video_decoder_open::); klass.close = Some(video_decoder_close::); diff --git a/gstreamer-video/src/subclass/video_encoder.rs b/gstreamer-video/src/subclass/video_encoder.rs index aa65ecc48..370b6bdda 100644 --- a/gstreamer-video/src/subclass/video_encoder.rs +++ b/gstreamer-video/src/subclass/video_encoder.rs @@ -470,8 +470,8 @@ unsafe impl IsSubclassable for VideoEncoder where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.open = Some(video_encoder_open::); klass.close = Some(video_encoder_close::); diff --git a/gstreamer-video/src/subclass/video_sink.rs b/gstreamer-video/src/subclass/video_sink.rs index fa1dbe637..ea14786f6 100644 --- a/gstreamer-video/src/subclass/video_sink.rs +++ b/gstreamer-video/src/subclass/video_sink.rs @@ -54,8 +54,8 @@ unsafe impl IsSubclassable for VideoSink where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.show_frame = Some(video_sink_show_frame::); } diff --git a/gstreamer/src/subclass/bin.rs b/gstreamer/src/subclass/bin.rs index d01404fa3..2b8b51b10 100644 --- a/gstreamer/src/subclass/bin.rs +++ b/gstreamer/src/subclass/bin.rs @@ -102,8 +102,8 @@ unsafe impl IsSubclassable for Bin where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.add_element = Some(bin_add_element::); klass.remove_element = Some(bin_remove_element::); diff --git a/gstreamer/src/subclass/child_proxy.rs b/gstreamer/src/subclass/child_proxy.rs index f44506827..22381dfb4 100644 --- a/gstreamer/src/subclass/child_proxy.rs +++ b/gstreamer/src/subclass/child_proxy.rs @@ -33,17 +33,14 @@ pub trait ChildProxyImpl: ObjectImpl + Send + Sync { } unsafe impl IsImplementable for ChildProxy { - unsafe extern "C" fn interface_init( - iface: glib::ffi::gpointer, - _iface_data: glib::ffi::gpointer, - ) { - let child_proxy_iface = &mut *(iface as *mut ffi::GstChildProxyInterface); + fn interface_init(iface: &mut glib::Class) { + let iface = iface.as_mut(); - child_proxy_iface.get_child_by_name = Some(child_proxy_get_child_by_name::); - child_proxy_iface.get_child_by_index = Some(child_proxy_get_child_by_index::); - child_proxy_iface.get_children_count = Some(child_proxy_get_children_count::); - child_proxy_iface.child_added = Some(child_proxy_child_added::); - child_proxy_iface.child_removed = Some(child_proxy_child_removed::); + iface.get_child_by_name = Some(child_proxy_get_child_by_name::); + iface.get_child_by_index = Some(child_proxy_get_child_by_index::); + iface.get_children_count = Some(child_proxy_get_children_count::); + iface.child_added = Some(child_proxy_child_added::); + iface.child_removed = Some(child_proxy_child_removed::); } } diff --git a/gstreamer/src/subclass/clock.rs b/gstreamer/src/subclass/clock.rs index 2fad54a4f..a2736728d 100644 --- a/gstreamer/src/subclass/clock.rs +++ b/gstreamer/src/subclass/clock.rs @@ -231,8 +231,8 @@ impl ClockImplExt for T { } unsafe impl IsSubclassable for Clock { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.change_resolution = Some(clock_change_resolution::); klass.get_resolution = Some(clock_get_resolution::); diff --git a/gstreamer/src/subclass/device.rs b/gstreamer/src/subclass/device.rs index e39affa90..25f8e96b0 100644 --- a/gstreamer/src/subclass/device.rs +++ b/gstreamer/src/subclass/device.rs @@ -100,8 +100,8 @@ impl DeviceImplExt for T { } unsafe impl IsSubclassable for Device { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.create_element = Some(device_create_element::); klass.reconfigure_element = Some(device_reconfigure_element::); diff --git a/gstreamer/src/subclass/device_provider.rs b/gstreamer/src/subclass/device_provider.rs index 8253fed28..8dcda87db 100644 --- a/gstreamer/src/subclass/device_provider.rs +++ b/gstreamer/src/subclass/device_provider.rs @@ -92,8 +92,8 @@ impl DeviceProviderImplExt for T { } unsafe impl IsSubclassable for DeviceProvider { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.probe = Some(device_provider_probe::); klass.start = Some(device_provider_start::); diff --git a/gstreamer/src/subclass/element.rs b/gstreamer/src/subclass/element.rs index 81994c6c5..22534a2bb 100644 --- a/gstreamer/src/subclass/element.rs +++ b/gstreamer/src/subclass/element.rs @@ -355,8 +355,8 @@ unsafe impl IsSubclassable for Element where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.change_state = Some(element_change_state::); diff --git a/gstreamer/src/subclass/ghost_pad.rs b/gstreamer/src/subclass/ghost_pad.rs index 9b24c4aa2..c13c4e82b 100644 --- a/gstreamer/src/subclass/ghost_pad.rs +++ b/gstreamer/src/subclass/ghost_pad.rs @@ -8,8 +8,8 @@ use crate::GhostPad; pub trait GhostPadImpl: PadImpl {} unsafe impl IsSubclassable for GhostPad { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let _klass = klass.as_mut(); // Nothing to do here } diff --git a/gstreamer/src/subclass/pad.rs b/gstreamer/src/subclass/pad.rs index 495c08d5b..2602653fd 100644 --- a/gstreamer/src/subclass/pad.rs +++ b/gstreamer/src/subclass/pad.rs @@ -59,8 +59,8 @@ impl PadImplExt for T { } unsafe impl IsSubclassable for Pad { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let klass = klass.as_mut(); klass.linked = Some(pad_linked::); klass.unlinked = Some(pad_unlinked::); diff --git a/gstreamer/src/subclass/pipeline.rs b/gstreamer/src/subclass/pipeline.rs index 0b30ee149..ce8428384 100644 --- a/gstreamer/src/subclass/pipeline.rs +++ b/gstreamer/src/subclass/pipeline.rs @@ -11,8 +11,8 @@ unsafe impl IsSubclassable for Pipeline where ::Instance: PanicPoison, { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let _klass = klass.as_mut(); // Nothing to do here } diff --git a/gstreamer/src/subclass/preset.rs b/gstreamer/src/subclass/preset.rs index 1b5b07d15..bdd2383c5 100644 --- a/gstreamer/src/subclass/preset.rs +++ b/gstreamer/src/subclass/preset.rs @@ -7,9 +7,5 @@ use crate::Preset; pub trait PresetImpl: super::element::ElementImpl {} unsafe impl IsImplementable for Preset { - unsafe extern "C" fn interface_init( - _iface: glib::ffi::gpointer, - _iface_data: glib::ffi::gpointer, - ) { - } + fn interface_init(_iface: &mut glib::Class) {} } diff --git a/gstreamer/src/subclass/system_clock.rs b/gstreamer/src/subclass/system_clock.rs index ffc44954c..b18d029ba 100644 --- a/gstreamer/src/subclass/system_clock.rs +++ b/gstreamer/src/subclass/system_clock.rs @@ -8,8 +8,8 @@ use crate::SystemClock; pub trait SystemClockImpl: ClockImpl {} unsafe impl IsSubclassable for SystemClock { - fn override_vfuncs(klass: &mut glib::Class) { - >::override_vfuncs(klass); + fn class_init(klass: &mut glib::Class) { + >::class_init(klass); let _klass = klass.as_mut(); // Nothing to do here } diff --git a/gstreamer/src/subclass/tag_setter.rs b/gstreamer/src/subclass/tag_setter.rs index ab827bde4..af735ba6f 100644 --- a/gstreamer/src/subclass/tag_setter.rs +++ b/gstreamer/src/subclass/tag_setter.rs @@ -7,9 +7,5 @@ use crate::TagSetter; pub trait TagSetterImpl: super::element::ElementImpl {} unsafe impl IsImplementable for TagSetter { - unsafe extern "C" fn interface_init( - _iface: glib::ffi::gpointer, - _iface_data: glib::ffi::gpointer, - ) { - } + fn interface_init(_iface: &mut glib::Class) {} } diff --git a/gstreamer/src/subclass/uri_handler.rs b/gstreamer/src/subclass/uri_handler.rs index ee459aa83..099f18dea 100644 --- a/gstreamer/src/subclass/uri_handler.rs +++ b/gstreamer/src/subclass/uri_handler.rs @@ -21,24 +21,23 @@ unsafe impl Send for CStrV {} unsafe impl Sync for CStrV {} unsafe impl IsImplementable for URIHandler { - unsafe extern "C" fn interface_init( - iface: glib::ffi::gpointer, - _iface_data: glib::ffi::gpointer, - ) { - let uri_handler_iface = &mut *(iface as *mut ffi::GstURIHandlerInterface); + fn interface_init(iface: &mut glib::Class) { + let iface = iface.as_mut(); // Store the protocols in the interface data for later use - let mut data = T::type_data(); - let protocols = T::get_protocols(); - let protocols = protocols.to_glib_full(); - let data = data.as_mut(); + unsafe { + let mut data = T::type_data(); + let protocols = T::get_protocols(); + let protocols = protocols.to_glib_full(); + let data = data.as_mut(); - data.set_class_data(URIHandler::static_type(), CStrV(protocols)); + data.set_class_data(URIHandler::static_type(), CStrV(protocols)); + } - uri_handler_iface.get_type = Some(uri_handler_get_type::); - uri_handler_iface.get_protocols = Some(uri_handler_get_protocols::); - uri_handler_iface.get_uri = Some(uri_handler_get_uri::); - uri_handler_iface.set_uri = Some(uri_handler_set_uri::); + iface.get_type = Some(uri_handler_get_type::); + iface.get_protocols = Some(uri_handler_get_protocols::); + iface.get_uri = Some(uri_handler_get_uri::); + iface.set_uri = Some(uri_handler_set_uri::); } }