diff options
author | Bilal Elmoussaoui <belmouss@redhat.com> | 2022-10-20 10:11:10 +0200 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2022-10-25 13:59:05 +0000 |
commit | 8b42157c157600fdcabbbf3e39808cd027141fbf (patch) | |
tree | 0919f462e1462bdb45fc10f6f5de834244d02b74 | |
parent | 274e3a510ab0f4854ebe836c629a1128532869f2 (diff) | |
download | librsvg-8b42157c157600fdcabbbf3e39808cd027141fbf.tar.gz |
gdk-pixbuf-loader: Use ffi crates from safe ones directly
Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/760>
-rw-r--r-- | gdk-pixbuf-loader/Cargo.lock | 3 | ||||
-rw-r--r-- | gdk-pixbuf-loader/Cargo.toml | 3 | ||||
-rw-r--r-- | gdk-pixbuf-loader/src/lib.rs | 41 |
3 files changed, 20 insertions, 27 deletions
diff --git a/gdk-pixbuf-loader/Cargo.lock b/gdk-pixbuf-loader/Cargo.lock index 4de83d62..1279026c 100644 --- a/gdk-pixbuf-loader/Cargo.lock +++ b/gdk-pixbuf-loader/Cargo.lock @@ -1234,11 +1234,8 @@ dependencies = [ "cairo-rs", "cstr", "gdk-pixbuf", - "gdk-pixbuf-sys", "gio", "glib", - "glib-sys", - "gobject-sys", "libc", "librsvg", ] diff --git a/gdk-pixbuf-loader/Cargo.toml b/gdk-pixbuf-loader/Cargo.toml index 5c3a0c30..524b11a2 100644 --- a/gdk-pixbuf-loader/Cargo.toml +++ b/gdk-pixbuf-loader/Cargo.toml @@ -9,11 +9,8 @@ crate-type = ["cdylib"] [dependencies] librsvg = { path = ".." } -gdk-pixbuf-sys = "0.16" gdk-pixbuf = "0.16" libc = "0.2" -glib-sys = "0.16" -gobject-sys = "0.16" glib = "0.16" gio = "0.16" cairo-rs = "0.16" diff --git a/gdk-pixbuf-loader/src/lib.rs b/gdk-pixbuf-loader/src/lib.rs index 40d992e3..6a30657e 100644 --- a/gdk-pixbuf-loader/src/lib.rs +++ b/gdk-pixbuf-loader/src/lib.rs @@ -1,21 +1,20 @@ use std::ptr::null_mut; -use gdk_pixbuf_sys::GdkPixbuf; -use gdk_pixbuf_sys::{ - GdkPixbufFormat, GdkPixbufModule, GdkPixbufModulePattern, GdkPixbufModulePreparedFunc, - GdkPixbufModuleSizeFunc, GdkPixbufModuleUpdatedFunc, GDK_PIXBUF_FORMAT_SCALABLE, - GDK_PIXBUF_FORMAT_THREADSAFE, +use gdk_pixbuf::ffi::{ + GdkPixbuf, GdkPixbufFormat, GdkPixbufModule, GdkPixbufModulePattern, + GdkPixbufModulePreparedFunc, GdkPixbufModuleSizeFunc, GdkPixbufModuleUpdatedFunc, + GDK_PIXBUF_FORMAT_SCALABLE, GDK_PIXBUF_FORMAT_THREADSAFE, }; use libc::{c_char, c_int, c_uint}; +use glib::ffi::{gboolean, gpointer, GError}; use glib::translate::{IntoGlib, ToGlibPtr}; use glib::Bytes; -use glib_sys::{gboolean, GError}; use gio::prelude::MemoryInputStreamExt; use gio::MemoryInputStream; -use gobject_sys::GObject; +use glib::gobject_ffi::GObject; use librsvg::rsvg_convert_only::LegacySize; use librsvg::Loader; @@ -26,7 +25,7 @@ struct SvgContext { size_func: GdkPixbufModuleSizeFunc, prep_func: GdkPixbufModulePreparedFunc, update_func: GdkPixbufModuleUpdatedFunc, - user_data: glib_sys::gpointer, + user_data: gpointer, stream: MemoryInputStream, } @@ -35,9 +34,9 @@ unsafe extern "C" fn begin_load( size_func: GdkPixbufModuleSizeFunc, prep_func: GdkPixbufModulePreparedFunc, update_func: GdkPixbufModuleUpdatedFunc, - user_data: glib_sys::gpointer, + user_data: gpointer, error: *mut *mut GError, -) -> glib_sys::gpointer { +) -> gpointer { if error != null_mut() { *error = null_mut(); } @@ -51,12 +50,12 @@ unsafe extern "C" fn begin_load( stream, }); - Box::into_raw(ctx) as glib_sys::gpointer + Box::into_raw(ctx) as gpointer } #[no_mangle] unsafe extern "C" fn load_increment( - user_data: glib_sys::gpointer, + user_data: gpointer, buffer: *const u8, size: c_uint, error: *mut *mut GError, @@ -73,7 +72,7 @@ unsafe extern "C" fn load_increment( } #[no_mangle] -unsafe extern "C" fn stop_load(user_data: glib_sys::gpointer, error: *mut *mut GError) -> gboolean { +unsafe extern "C" fn stop_load(user_data: gpointer, error: *mut *mut GError) -> gboolean { let ctx = Box::from_raw(user_data as *mut SvgContext); if error != null_mut() { *error = null_mut(); @@ -136,7 +135,7 @@ unsafe extern "C" fn stop_load(user_data: glib_sys::gpointer, error: *mut *mut G } // The module loader increases a ref so we drop the pixbuf here - gobject_sys::g_object_unref(pixbuf as *mut GObject); + glib::gobject_ffi::g_object_unref(pixbuf as *mut GObject); true.into_glib() } @@ -196,7 +195,7 @@ extern "C" fn fill_info(info: &mut GdkPixbufFormat) { #[cfg(test)] mod tests { - use gdk_pixbuf_sys::{ + use gdk_pixbuf::ffi::{ GdkPixbufFormat, GDK_PIXBUF_FORMAT_SCALABLE, GDK_PIXBUF_FORMAT_THREADSAFE, }; use glib::translate::IntoGlib; @@ -313,20 +312,20 @@ mod tests { #[test] fn minimal_svg() { unsafe extern "C" fn prep_cb( - pb: *mut gdk_pixbuf_sys::GdkPixbuf, - pba: *mut gdk_pixbuf_sys::GdkPixbufAnimation, + pb: *mut gdk_pixbuf::ffi::GdkPixbuf, + pba: *mut gdk_pixbuf::ffi::GdkPixbufAnimation, user_data: *mut libc::c_void, ) { assert_eq!(user_data, null_mut()); assert_eq!(pba, null_mut()); - let w = gdk_pixbuf_sys::gdk_pixbuf_get_width(pb); - let h = gdk_pixbuf_sys::gdk_pixbuf_get_height(pb); - let stride = gdk_pixbuf_sys::gdk_pixbuf_get_rowstride(pb); + let w = gdk_pixbuf::ffi::gdk_pixbuf_get_width(pb); + let h = gdk_pixbuf::ffi::gdk_pixbuf_get_height(pb); + let stride = gdk_pixbuf::ffi::gdk_pixbuf_get_rowstride(pb); assert_eq!(w, 100); assert_eq!(h, 150); - let pixels = gdk_pixbuf_sys::gdk_pixbuf_get_pixels(pb); + let pixels = gdk_pixbuf::ffi::gdk_pixbuf_get_pixels(pb); // Upper left pixel #aa1144ff assert_eq!(*pixels, 0xaa); |