[librsvg: 2/30] use re-exported ffi




commit dd24360316fe048158182d81942e07aee7a309b5
Author: Bilal Elmoussaoui <bil elmoussaoui gmail com>
Date:   Tue May 4 12:42:03 2021 +0200

    use re-exported ffi
    
    Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/516>

 src/api.rs                          |   4 +-
 src/bin/rsvg-convert.rs             |   4 +-
 src/c_api/handle.rs                 | 174 ++++++++++++++++++------------------
 src/c_api/messages.rs               |  12 +--
 src/c_api/pixbuf_utils.rs           |  24 ++---
 src/drawing_ctx.rs                  |   2 +-
 src/handle.rs                       |   5 +-
 src/surface_utils/shared_surface.rs |  20 +++--
 src/util.rs                         |  20 -----
 src/xml/xml2.rs                     |   2 +-
 tests/src/utils.rs                  |   2 +-
 11 files changed, 125 insertions(+), 144 deletions(-)
---
diff --git a/src/api.rs b/src/api.rs
index be33127a..a8a09343 100644
--- a/src/api.rs
+++ b/src/api.rs
@@ -10,12 +10,12 @@ pub use crate::{
     length::{LengthUnit, RsvgLength as Length},
 };
 
-use glib::prelude::*;
 use url::Url;
 
 use std::path::Path;
 
-use gio::{Cancellable, FileExt};
+use gio::prelude::*; // Re-exposes glib's prelude as well
+use gio::Cancellable;
 
 use crate::{
     dpi::Dpi,
diff --git a/src/bin/rsvg-convert.rs b/src/bin/rsvg-convert.rs
index bfe92a73..089d8461 100644
--- a/src/bin/rsvg-convert.rs
+++ b/src/bin/rsvg-convert.rs
@@ -9,9 +9,9 @@ use gio::{UnixInputStream, UnixOutputStream};
 
 #[cfg(windows)]
 mod windows_imports {
-    pub use gio_sys::{GInputStream, GOutputStream};
+    pub use gio::ffi::{GInputStream, GOutputStream};
+    pub use glib::ffi::gboolean;
     pub use glib::translate::*;
-    pub use glib_sys::gboolean;
     pub use libc::c_void;
     pub use std::io;
     pub use std::os::windows::io::AsRawHandle;
diff --git a/src/c_api/handle.rs b/src/c_api/handle.rs
index 952908f0..c4008588 100644
--- a/src/c_api/handle.rs
+++ b/src/c_api/handle.rs
@@ -145,9 +145,9 @@ impl From<LoadFlags> for HandleFlags {
 #[repr(C)]
 pub struct RsvgHandleClass {
     // Keep this in sync with rsvg.h:RsvgHandleClass
-    parent: gobject_sys::GObjectClass,
+    parent: glib::gobject_ffi::GObjectClass,
 
-    _abi_padding: [glib_sys::gpointer; 15],
+    _abi_padding: [glib::ffi::gpointer; 15],
 }
 
 /// GObject instance struct for RsvgHandle.
@@ -158,9 +158,9 @@ pub struct RsvgHandleClass {
 #[repr(C)]
 pub struct RsvgHandle {
     // Keep this in sync with rsvg.h:RsvgHandle
-    parent: gobject_sys::GObject,
+    parent: glib::gobject_ffi::GObject,
 
-    _abi_padding: [glib_sys::gpointer; 16],
+    _abi_padding: [glib::ffi::gpointer; 16],
 }
 
 /// State machine for `RsvgHandle`.
@@ -551,22 +551,22 @@ pub type RsvgSizeFunc = Option<
     unsafe extern "C" fn(
         inout_width: *mut libc::c_int,
         inout_height: *mut libc::c_int,
-        user_data: glib_sys::gpointer,
+        user_data: glib::ffi::gpointer,
     ),
;
 
 struct SizeCallback {
     size_func: RsvgSizeFunc,
-    user_data: glib_sys::gpointer,
-    destroy_notify: glib_sys::GDestroyNotify,
+    user_data: glib::ffi::gpointer,
+    destroy_notify: glib::ffi::GDestroyNotify,
     in_loop: Cell<bool>,
 }
 
 impl SizeCallback {
     fn new(
         size_func: RsvgSizeFunc,
-        user_data: glib_sys::gpointer,
-        destroy_notify: glib_sys::GDestroyNotify,
+        user_data: glib::ffi::gpointer,
+        destroy_notify: glib::ffi::GDestroyNotify,
     ) -> Self {
         SizeCallback {
             size_func,
@@ -719,8 +719,8 @@ impl CHandle {
     fn set_size_callback(
         &self,
         size_func: RsvgSizeFunc,
-        user_data: glib_sys::gpointer,
-        destroy_notify: glib_sys::GDestroyNotify,
+        user_data: glib::ffi::gpointer,
+        destroy_notify: glib::ffi::GDestroyNotify,
     ) {
         let mut inner = self.inner.borrow_mut();
         inner.size_callback = SizeCallback::new(size_func, user_data, destroy_notify);
@@ -960,7 +960,7 @@ impl CHandle {
 
     fn render_cairo_sub(
         &self,
-        cr: *mut cairo_sys::cairo_t,
+        cr: *mut cairo::ffi::cairo_t,
         id: Option<&str>,
     ) -> Result<(), RenderingError> {
         let dimensions = self.get_dimensions_sub(None)?;
@@ -1005,7 +1005,7 @@ impl CHandle {
 
     fn render_document(
         &self,
-        cr: *mut cairo_sys::cairo_t,
+        cr: *mut cairo::ffi::cairo_t,
         viewport: &cairo::Rectangle,
     ) -> Result<(), RenderingError> {
         let cr = check_cairo_context(cr)?;
@@ -1031,7 +1031,7 @@ impl CHandle {
 
     fn render_layer(
         &self,
-        cr: *mut cairo_sys::cairo_t,
+        cr: *mut cairo::ffi::cairo_t,
         id: Option<&str>,
         viewport: &cairo::Rectangle,
     ) -> Result<(), RenderingError> {
@@ -1059,7 +1059,7 @@ impl CHandle {
 
     fn render_element(
         &self,
-        cr: *mut cairo_sys::cairo_t,
+        cr: *mut cairo::ffi::cairo_t,
         id: Option<&str>,
         element_viewport: &cairo::Rectangle,
     ) -> Result<(), RenderingError> {
@@ -1094,15 +1094,15 @@ fn is_rsvg_handle(obj: *const RsvgHandle) -> bool {
     unsafe { instance_of::<CHandle>(obj as *const _) }
 }
 
-fn is_input_stream(obj: *mut gio_sys::GInputStream) -> bool {
+fn is_input_stream(obj: *mut gio::ffi::GInputStream) -> bool {
     unsafe { instance_of::<gio::InputStream>(obj as *const _) }
 }
 
-fn is_gfile(obj: *const gio_sys::GFile) -> bool {
+fn is_gfile(obj: *const gio::ffi::GFile) -> bool {
     unsafe { instance_of::<gio::File>(obj as *const _) }
 }
 
-fn is_cancellable(obj: *mut gio_sys::GCancellable) -> bool {
+fn is_cancellable(obj: *mut gio::ffi::GCancellable) -> bool {
     unsafe { instance_of::<gio::Cancellable>(obj as *const _) }
 }
 
@@ -1112,17 +1112,17 @@ fn get_rust_handle<'a>(handle: *const RsvgHandle) -> &'a CHandle {
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rsvg_handle_get_type() -> glib_sys::GType {
+pub unsafe extern "C" fn rsvg_handle_get_type() -> glib::ffi::GType {
     CHandle::get_type().to_glib()
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rsvg_error_get_type() -> glib_sys::GType {
+pub unsafe extern "C" fn rsvg_error_get_type() -> glib::ffi::GType {
     Error::static_type().to_glib()
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rsvg_handle_flags_get_type() -> glib_sys::GType {
+pub unsafe extern "C" fn rsvg_handle_flags_get_type() -> glib::ffi::GType {
     HandleFlags::static_type().to_glib()
 }
 
@@ -1149,7 +1149,7 @@ pub unsafe extern "C" fn rsvg_handle_set_base_uri(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_set_base_gfile(
     handle: *const RsvgHandle,
-    raw_gfile: *mut gio_sys::GFile,
+    raw_gfile: *mut gio::ffi::GFile,
 ) {
     rsvg_return_if_fail! {
         rsvg_handle_set_base_gfile;
@@ -1216,8 +1216,8 @@ pub unsafe extern "C" fn rsvg_handle_set_dpi_x_y(
 pub unsafe extern "C" fn rsvg_handle_set_size_callback(
     handle: *const RsvgHandle,
     size_func: RsvgSizeFunc,
-    user_data: glib_sys::gpointer,
-    destroy_notify: glib_sys::GDestroyNotify,
+    user_data: glib::ffi::gpointer,
+    destroy_notify: glib::ffi::GDestroyNotify,
 ) {
     rsvg_return_if_fail! {
         rsvg_handle_set_size_callback;
@@ -1233,7 +1233,7 @@ pub unsafe extern "C" fn rsvg_handle_set_size_callback(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_internal_set_testing(
     handle: *const RsvgHandle,
-    testing: glib_sys::gboolean,
+    testing: glib::ffi::gboolean,
 ) {
     rsvg_return_if_fail! {
         rsvg_handle_internal_set_testing;
@@ -1249,13 +1249,13 @@ pub unsafe extern "C" fn rsvg_handle_internal_set_testing(
 trait IntoGError {
     type GlibResult;
 
-    fn into_gerror(self, error: *mut *mut glib_sys::GError) -> Self::GlibResult;
+    fn into_gerror(self, error: *mut *mut glib::ffi::GError) -> Self::GlibResult;
 }
 
 impl<E: fmt::Display> IntoGError for Result<(), E> {
-    type GlibResult = glib_sys::gboolean;
+    type GlibResult = glib::ffi::gboolean;
 
-    fn into_gerror(self, error: *mut *mut glib_sys::GError) -> Self::GlibResult {
+    fn into_gerror(self, error: *mut *mut glib::ffi::GError) -> Self::GlibResult {
         match self {
             Ok(()) => true.to_glib(),
 
@@ -1270,10 +1270,10 @@ impl<E: fmt::Display> IntoGError for Result<(), E> {
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_read_stream_sync(
     handle: *const RsvgHandle,
-    stream: *mut gio_sys::GInputStream,
-    cancellable: *mut gio_sys::GCancellable,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    stream: *mut gio::ffi::GInputStream,
+    cancellable: *mut gio::ffi::GCancellable,
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_read_stream_sync => false.to_glib();
 
@@ -1298,8 +1298,8 @@ pub unsafe extern "C" fn rsvg_handle_write(
     handle: *const RsvgHandle,
     buf: *const u8,
     count: usize,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_write => false.to_glib();
 
@@ -1318,8 +1318,8 @@ pub unsafe extern "C" fn rsvg_handle_write(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_close(
     handle: *const RsvgHandle,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_close => false.to_glib();
 
@@ -1336,7 +1336,7 @@ pub unsafe extern "C" fn rsvg_handle_close(
 pub unsafe extern "C" fn rsvg_handle_has_sub(
     handle: *const RsvgHandle,
     id: *const libc::c_char,
-) -> glib_sys::gboolean {
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_has_sub => false.to_glib();
 
@@ -1356,8 +1356,8 @@ pub unsafe extern "C" fn rsvg_handle_has_sub(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_render_cairo(
     handle: *const RsvgHandle,
-    cr: *mut cairo_sys::cairo_t,
-) -> glib_sys::gboolean {
+    cr: *mut cairo::ffi::cairo_t,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_render_cairo => false.to_glib();
 
@@ -1375,9 +1375,9 @@ pub unsafe extern "C" fn rsvg_handle_render_cairo(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_render_cairo_sub(
     handle: *const RsvgHandle,
-    cr: *mut cairo_sys::cairo_t,
+    cr: *mut cairo::ffi::cairo_t,
     id: *const libc::c_char,
-) -> glib_sys::gboolean {
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_render_cairo_sub => false.to_glib();
 
@@ -1396,7 +1396,7 @@ pub unsafe extern "C" fn rsvg_handle_render_cairo_sub(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_get_pixbuf(
     handle: *const RsvgHandle,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_pixbuf => ptr::null_mut();
 
@@ -1418,7 +1418,7 @@ pub unsafe extern "C" fn rsvg_handle_get_pixbuf(
 pub unsafe extern "C" fn rsvg_handle_get_pixbuf_sub(
     handle: *const RsvgHandle,
     id: *const libc::c_char,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_pixbuf_sub => ptr::null_mut();
 
@@ -1450,7 +1450,7 @@ pub unsafe extern "C" fn rsvg_handle_get_dimensions_sub(
     handle: *const RsvgHandle,
     dimension_data: *mut RsvgDimensionData,
     id: *const libc::c_char,
-) -> glib_sys::gboolean {
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_dimensions_sub => false.to_glib();
 
@@ -1481,7 +1481,7 @@ pub unsafe extern "C" fn rsvg_handle_get_position_sub(
     handle: *const RsvgHandle,
     position_data: *mut RsvgPositionData,
     id: *const libc::c_char,
-) -> glib_sys::gboolean {
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_position_sub => false.to_glib();
 
@@ -1513,7 +1513,7 @@ pub unsafe extern "C" fn rsvg_handle_get_position_sub(
 
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_new() -> *const RsvgHandle {
-    let obj: *mut gobject_sys::GObject = glib::Object::new(CHandle::get_type(), &[])
+    let obj: *mut glib::gobject_ffi::GObject = glib::Object::new(CHandle::get_type(), &[])
         .unwrap()
         .to_glib_full();
 
@@ -1522,7 +1522,7 @@ pub unsafe extern "C" fn rsvg_handle_new() -> *const RsvgHandle {
 
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_new_with_flags(flags: RsvgHandleFlags) -> *const RsvgHandle {
-    let obj: *mut gobject_sys::GObject = glib::Object::new(
+    let obj: *mut glib::gobject_ffi::GObject = glib::Object::new(
         CHandle::get_type(),
         &[("flags", &HandleFlags::from_bits_truncate(flags))],
     )
@@ -1535,7 +1535,7 @@ pub unsafe extern "C" fn rsvg_handle_new_with_flags(flags: RsvgHandleFlags) -> *
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_new_from_file(
     filename: *const libc::c_char,
-    error: *mut *mut glib_sys::GError,
+    error: *mut *mut glib::ffi::GError,
 ) -> *const RsvgHandle {
     rsvg_return_val_if_fail! {
         rsvg_handle_new_from_file => ptr::null();
@@ -1558,10 +1558,10 @@ pub unsafe extern "C" fn rsvg_handle_new_from_file(
 
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_new_from_gfile_sync(
-    file: *mut gio_sys::GFile,
+    file: *mut gio::ffi::GFile,
     flags: RsvgHandleFlags,
-    cancellable: *mut gio_sys::GCancellable,
-    error: *mut *mut glib_sys::GError,
+    cancellable: *mut gio::ffi::GCancellable,
+    error: *mut *mut glib::ffi::GError,
 ) -> *const RsvgHandle {
     rsvg_return_val_if_fail! {
         rsvg_handle_new_from_gfile_sync => ptr::null();
@@ -1590,7 +1590,7 @@ pub unsafe extern "C" fn rsvg_handle_new_from_gfile_sync(
 
         Err(e) => {
             set_gerror(error, 0, &format!("{}", e));
-            gobject_sys::g_object_unref(raw_handle as *mut _);
+            glib::gobject_ffi::g_object_unref(raw_handle as *mut _);
             ptr::null_mut()
         }
     }
@@ -1598,11 +1598,11 @@ pub unsafe extern "C" fn rsvg_handle_new_from_gfile_sync(
 
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_new_from_stream_sync(
-    input_stream: *mut gio_sys::GInputStream,
-    base_file: *mut gio_sys::GFile,
+    input_stream: *mut gio::ffi::GInputStream,
+    base_file: *mut gio::ffi::GFile,
     flags: RsvgHandleFlags,
-    cancellable: *mut gio_sys::GCancellable,
-    error: *mut *mut glib_sys::GError,
+    cancellable: *mut gio::ffi::GCancellable,
+    error: *mut *mut glib::ffi::GError,
 ) -> *const RsvgHandle {
     rsvg_return_val_if_fail! {
         rsvg_handle_new_from_stream_sync => ptr::null();
@@ -1630,7 +1630,7 @@ pub unsafe extern "C" fn rsvg_handle_new_from_stream_sync(
 
         Err(e) => {
             set_gerror(error, 0, &format!("{}", e));
-            gobject_sys::g_object_unref(raw_handle as *mut _);
+            glib::gobject_ffi::g_object_unref(raw_handle as *mut _);
             ptr::null_mut()
         }
     }
@@ -1640,7 +1640,7 @@ pub unsafe extern "C" fn rsvg_handle_new_from_stream_sync(
 pub unsafe extern "C" fn rsvg_handle_new_from_data(
     data: *const u8,
     data_len: usize,
-    error: *mut *mut glib_sys::GError,
+    error: *mut *mut glib::ffi::GError,
 ) -> *const RsvgHandle {
     rsvg_return_val_if_fail! {
         rsvg_handle_new_from_data => ptr::null();
@@ -1663,7 +1663,7 @@ pub unsafe extern "C" fn rsvg_handle_new_from_data(
     assert!(data_len <= std::isize::MAX as usize);
     let data_len = data_len as isize;
 
-    let raw_stream = gio_sys::g_memory_input_stream_new_from_data(data as *mut u8, data_len, None);
+    let raw_stream = gio::ffi::g_memory_input_stream_new_from_data(data as *mut u8, data_len, None);
 
     let ret = rsvg_handle_new_from_stream_sync(
         raw_stream,
@@ -1673,12 +1673,12 @@ pub unsafe extern "C" fn rsvg_handle_new_from_data(
         error,
     );
 
-    gobject_sys::g_object_unref(raw_stream as *mut _);
+    glib::gobject_ffi::g_object_unref(raw_stream as *mut _);
     ret
 }
 
 unsafe fn set_out_param<T: Copy>(
-    out_has_param: *mut glib_sys::gboolean,
+    out_has_param: *mut glib::ffi::gboolean,
     out_param: *mut T,
     value: &Option<T>,
 ) {
@@ -1699,7 +1699,7 @@ unsafe fn set_out_param<T: Copy>(
 
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_free(handle: *mut RsvgHandle) {
-    gobject_sys::g_object_unref(handle as *mut _);
+    glib::gobject_ffi::g_object_unref(handle as *mut _);
 }
 
 #[no_mangle]
@@ -1707,8 +1707,8 @@ pub unsafe extern "C" fn rsvg_handle_set_stylesheet(
     handle: *const RsvgHandle,
     css: *const u8,
     css_len: usize,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_set_stylesheet => false.to_glib();
 
@@ -1739,11 +1739,11 @@ pub unsafe extern "C" fn rsvg_handle_set_stylesheet(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_get_intrinsic_dimensions(
     handle: *const RsvgHandle,
-    out_has_width: *mut glib_sys::gboolean,
+    out_has_width: *mut glib::ffi::gboolean,
     out_width: *mut RsvgLength,
-    out_has_height: *mut glib_sys::gboolean,
+    out_has_height: *mut glib::ffi::gboolean,
     out_height: *mut RsvgLength,
-    out_has_viewbox: *mut glib_sys::gboolean,
+    out_has_viewbox: *mut glib::ffi::gboolean,
     out_viewbox: *mut RsvgRectangle,
 ) {
     rsvg_return_if_fail! {
@@ -1772,7 +1772,7 @@ pub unsafe extern "C" fn rsvg_handle_get_intrinsic_size_in_pixels(
     handle: *const RsvgHandle,
     out_width: *mut f64,
     out_height: *mut f64,
-) -> glib_sys::gboolean {
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_intrinsic_size_in_pixels => false.to_glib();
 
@@ -1801,10 +1801,10 @@ pub unsafe extern "C" fn rsvg_handle_get_intrinsic_size_in_pixels(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_render_document(
     handle: *const RsvgHandle,
-    cr: *mut cairo_sys::cairo_t,
+    cr: *mut cairo::ffi::cairo_t,
     viewport: *const RsvgRectangle,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_render_document => false.to_glib();
 
@@ -1828,8 +1828,8 @@ pub unsafe extern "C" fn rsvg_handle_get_geometry_for_layer(
     viewport: *const RsvgRectangle,
     out_ink_rect: *mut RsvgRectangle,
     out_logical_rect: *mut RsvgRectangle,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_geometry_for_layer => false.to_glib();
 
@@ -1859,11 +1859,11 @@ pub unsafe extern "C" fn rsvg_handle_get_geometry_for_layer(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_render_layer(
     handle: *const RsvgHandle,
-    cr: *mut cairo_sys::cairo_t,
+    cr: *mut cairo::ffi::cairo_t,
     id: *const libc::c_char,
     viewport: *const RsvgRectangle,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_render_layer => false.to_glib();
 
@@ -1887,8 +1887,8 @@ pub unsafe extern "C" fn rsvg_handle_get_geometry_for_element(
     id: *const libc::c_char,
     out_ink_rect: *mut RsvgRectangle,
     out_logical_rect: *mut RsvgRectangle,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_get_geometry_for_element => false.to_glib();
 
@@ -1917,11 +1917,11 @@ pub unsafe extern "C" fn rsvg_handle_get_geometry_for_element(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_render_element(
     handle: *const RsvgHandle,
-    cr: *mut cairo_sys::cairo_t,
+    cr: *mut cairo::ffi::cairo_t,
     id: *const libc::c_char,
     element_viewport: *const RsvgRectangle,
-    error: *mut *mut glib_sys::GError,
-) -> glib_sys::gboolean {
+    error: *mut *mut glib::ffi::GError,
+) -> glib::ffi::gboolean {
     rsvg_return_val_if_fail! {
         rsvg_handle_render_element => false.to_glib();
 
@@ -2054,10 +2054,10 @@ impl fmt::Display for PathOrUrl {
     }
 }
 
-fn check_cairo_context(cr: *mut cairo_sys::cairo_t) -> Result<cairo::Context, RenderingError> {
-    let status = unsafe { cairo_sys::cairo_status(cr) };
+fn check_cairo_context(cr: *mut cairo::ffi::cairo_t) -> Result<cairo::Context, RenderingError> {
+    let status = unsafe { cairo::ffi::cairo_status(cr) };
 
-    if status == cairo_sys::STATUS_SUCCESS {
+    if status == cairo::ffi::STATUS_SUCCESS {
         Ok(unsafe { from_glib_none(cr) })
     } else {
         let status: cairo::Error = status.into();
@@ -2073,7 +2073,7 @@ fn check_cairo_context(cr: *mut cairo_sys::cairo_t) -> Result<cairo::Context, Re
     }
 }
 
-pub(crate) fn set_gerror(err: *mut *mut glib_sys::GError, code: u32, msg: &str) {
+pub(crate) fn set_gerror(err: *mut *mut glib::ffi::GError, code: u32, msg: &str) {
     unsafe {
         // this is RSVG_ERROR_FAILED, the only error code available in RsvgError
         assert!(code == 0);
@@ -2085,7 +2085,7 @@ pub(crate) fn set_gerror(err: *mut *mut glib_sys::GError, code: u32, msg: &str)
         // passed a NULL GError and so we had no easy way to see what was wrong.
         rsvg_log!("{}", msg);
 
-        glib_sys::g_set_error_literal(
+        glib::ffi::g_set_error_literal(
             err,
             rsvg_error_quark(),
             code as libc::c_int,
@@ -2128,7 +2128,7 @@ impl ErrorDomain for RsvgError {
 }
 
 #[no_mangle]
-pub extern "C" fn rsvg_error_quark() -> glib_sys::GQuark {
+pub extern "C" fn rsvg_error_quark() -> glib::ffi::GQuark {
     RsvgError::domain().to_glib()
 }
 
diff --git a/src/c_api/messages.rs b/src/c_api/messages.rs
index 0b01cf37..564f506c 100644
--- a/src/c_api/messages.rs
+++ b/src/c_api/messages.rs
@@ -5,8 +5,8 @@
 //! prefix, to be clear that they should only be used from the implementation of the C API
 //! and not from the main Rust code of the library.
 
+use glib::ffi::{g_log_structured_array, GLogField, G_LOG_LEVEL_CRITICAL, G_LOG_LEVEL_WARNING};
 use glib::translate::*;
-use glib_sys::{g_log_structured_array, GLogField, G_LOG_LEVEL_CRITICAL, G_LOG_LEVEL_WARNING};
 
 /*
   G_LOG_LEVEL_CRITICAL          = 1 << 3,
@@ -40,7 +40,7 @@ use glib_sys::{g_log_structured_array, GLogField, G_LOG_LEVEL_CRITICAL, G_LOG_LE
 ///
 /// If the implementation of g_warning() or g_critical() changes, we'll have
 /// to change this function.
-fn rsvg_g_log(level: glib_sys::GLogLevelFlags, msg: &str) {
+fn rsvg_g_log(level: glib::ffi::GLogLevelFlags, msg: &str) {
     // stolen from gmessages.c:log_level_to_priority()
     let priority = match level {
         G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL => b"4\0",
@@ -88,7 +88,7 @@ fn rsvg_g_log(level: glib_sys::GLogLevelFlags, msg: &str) {
 ///   so it's best to have a warning on the console to at least have a hope of someone
 ///   noticing the error.
 pub(crate) fn rsvg_g_warning(msg: &str) {
-    rsvg_g_log(glib_sys::G_LOG_LEVEL_WARNING, msg);
+    rsvg_g_log(glib::ffi::G_LOG_LEVEL_WARNING, msg);
 }
 
 /// Replacement for `g_critical()`.
@@ -99,7 +99,7 @@ pub(crate) fn rsvg_g_warning(msg: &str) {
 /// critical message, and return.  Development versions of GNOME will crash the program
 /// if this happens; release versions will ignore the error.
 pub(crate) fn rsvg_g_critical(msg: &str) {
-    rsvg_g_log(glib_sys::G_LOG_LEVEL_CRITICAL, msg);
+    rsvg_g_log(glib::ffi::G_LOG_LEVEL_CRITICAL, msg);
 }
 
 /// Replacement for `g_return_if_fail()`.
@@ -113,7 +113,7 @@ macro_rules! rsvg_return_if_fail {
     } => {
         $(
             if !$condition {
-                glib_sys::g_return_if_fail_warning(
+                glib::ffi::g_return_if_fail_warning(
                     b"librsvg\0" as *const u8 as *const _,
                     concat!(stringify!($func_name), "\0").as_ptr() as *const _,
                     concat!(stringify!($condition), "\0").as_ptr() as *const _,
@@ -133,7 +133,7 @@ macro_rules! rsvg_return_val_if_fail {
     } => {
         $(
             if !$condition {
-                glib_sys::g_return_if_fail_warning(
+                glib::ffi::g_return_if_fail_warning(
                     b"librsvg\0" as *const u8 as *const _,
                     concat!(stringify!($func_name), "\0").as_ptr() as *const _,
                     concat!(stringify!($condition), "\0").as_ptr() as *const _,
diff --git a/src/c_api/pixbuf_utils.rs b/src/c_api/pixbuf_utils.rs
index dbc99a0c..71e8b3f5 100644
--- a/src/c_api/pixbuf_utils.rs
+++ b/src/c_api/pixbuf_utils.rs
@@ -151,8 +151,8 @@ fn render_to_pixbuf_at_size(
 unsafe fn pixbuf_from_file_with_size_mode(
     filename: *const libc::c_char,
     size_mode: &SizeMode,
-    error: *mut *mut glib_sys::GError,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+    error: *mut *mut glib::ffi::GError,
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     let path = PathBuf::from_glib_none(filename);
 
     let handle = match Loader::new().read_path(path) {
@@ -194,8 +194,8 @@ unsafe fn pixbuf_from_file_with_size_mode(
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_pixbuf_from_file(
     filename: *const libc::c_char,
-    error: *mut *mut glib_sys::GError,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+    error: *mut *mut glib::ffi::GError,
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_pixbuf_from_file => ptr::null_mut();
 
@@ -221,8 +221,8 @@ pub unsafe extern "C" fn rsvg_pixbuf_from_file_at_size(
     filename: *const libc::c_char,
     width: libc::c_int,
     height: libc::c_int,
-    error: *mut *mut glib_sys::GError,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+    error: *mut *mut glib::ffi::GError,
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_pixbuf_from_file_at_size => ptr::null_mut();
 
@@ -249,8 +249,8 @@ pub unsafe extern "C" fn rsvg_pixbuf_from_file_at_zoom(
     filename: *const libc::c_char,
     x_zoom: libc::c_double,
     y_zoom: libc::c_double,
-    error: *mut *mut glib_sys::GError,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+    error: *mut *mut glib::ffi::GError,
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_pixbuf_from_file_at_zoom => ptr::null_mut();
 
@@ -279,8 +279,8 @@ pub unsafe extern "C" fn rsvg_pixbuf_from_file_at_zoom_with_max(
     y_zoom: libc::c_double,
     max_width: libc::c_int,
     max_height: libc::c_int,
-    error: *mut *mut glib_sys::GError,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+    error: *mut *mut glib::ffi::GError,
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_pixbuf_from_file_at_zoom_with_max => ptr::null_mut();
 
@@ -308,8 +308,8 @@ pub unsafe extern "C" fn rsvg_pixbuf_from_file_at_max_size(
     filename: *const libc::c_char,
     max_width: libc::c_int,
     max_height: libc::c_int,
-    error: *mut *mut glib_sys::GError,
-) -> *mut gdk_pixbuf_sys::GdkPixbuf {
+    error: *mut *mut glib::ffi::GError,
+) -> *mut gdk_pixbuf::ffi::GdkPixbuf {
     rsvg_return_val_if_fail! {
         rsvg_pixbuf_from_file_at_max_size => ptr::null_mut();
 
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index ce2b4164..5ff8049a 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -3,7 +3,7 @@
 use cssparser::RGBA;
 use float_cmp::approx_eq;
 use once_cell::sync::Lazy;
-use pango::FontMapExt;
+use pango::prelude::FontMapExt;
 use regex::{Captures, Regex};
 use std::borrow::Cow;
 use std::cell::RefCell;
diff --git a/src/handle.rs b/src/handle.rs
index f8cc9ff6..64c463da 100644
--- a/src/handle.rs
+++ b/src/handle.rs
@@ -14,7 +14,6 @@ use crate::node::{CascadedValues, Node, NodeBorrow};
 use crate::rect::Rect;
 use crate::structure::IntrinsicDimensions;
 use crate::url_resolver::{AllowedUrl, UrlResolver};
-use crate::util::check_cairo_context;
 
 /// Loading options for SVG documents.
 #[derive(Clone)]
@@ -247,7 +246,7 @@ impl Handle {
         dpi: Dpi,
         is_testing: bool,
     ) -> Result<(), RenderingError> {
-        check_cairo_context(cr)?;
+        cr.status()?;
 
         let node = self.get_node_or_root(id)?;
         let root = self.document.root();
@@ -327,7 +326,7 @@ impl Handle {
         dpi: Dpi,
         is_testing: bool,
     ) -> Result<(), RenderingError> {
-        check_cairo_context(cr)?;
+        cr.status()?;
 
         let node = self.get_node_or_root(id)?;
 
diff --git a/src/surface_utils/shared_surface.rs b/src/surface_utils/shared_surface.rs
index ed64dcdc..d570fdad 100644
--- a/src/surface_utils/shared_surface.rs
+++ b/src/surface_utils/shared_surface.rs
@@ -205,7 +205,7 @@ impl ImageSurface<Shared> {
         assert_eq!(surface.get_format(), cairo::Format::ARgb32);
 
         let reference_count =
-            unsafe { cairo_sys::cairo_surface_get_reference_count(surface.to_raw_none()) };
+            unsafe { cairo::ffi::cairo_surface_get_reference_count(surface.to_raw_none()) };
         assert_eq!(reference_count, 1);
 
         let (width, height) = (surface.get_width(), surface.get_height());
@@ -217,9 +217,10 @@ impl ImageSurface<Shared> {
 
         surface.flush();
 
-        let data_ptr =
-            NonNull::new(unsafe { cairo_sys::cairo_image_surface_get_data(surface.to_raw_none()) })
-                .unwrap();
+        let data_ptr = NonNull::new(unsafe {
+            cairo::ffi::cairo_image_surface_get_data(surface.to_raw_none())
+        })
+        .unwrap();
 
         let stride = surface.get_stride() as isize;
 
@@ -265,7 +266,7 @@ impl ImageSurface<Shared> {
     #[inline]
     pub fn into_image_surface(self) -> Result<cairo::ImageSurface, cairo::Error> {
         let reference_count =
-            unsafe { cairo_sys::cairo_surface_get_reference_count(self.surface.to_raw_none()) };
+            unsafe { cairo::ffi::cairo_surface_get_reference_count(self.surface.to_raw_none()) };
 
         if reference_count == 1 {
             Ok(self.surface)
@@ -948,7 +949,7 @@ impl ImageSurface<Shared> {
 
         // Don't forget to manually mark the surface as dirty (due to usage of
         // `UnsafeSendPixelData`).
-        unsafe { cairo_sys::cairo_surface_mark_dirty(output_surface.to_raw_none()) }
+        unsafe { cairo::ffi::cairo_surface_mark_dirty(output_surface.to_raw_none()) }
     }
 
     /// Performs a horizontal or vertical box blur.
@@ -1307,9 +1308,10 @@ impl ImageSurface<Exclusive> {
         // why we disallow zero-sized surfaces here.
         assert!(width > 0 && height > 0);
 
-        let data_ptr =
-            NonNull::new(unsafe { cairo_sys::cairo_image_surface_get_data(surface.to_raw_none()) })
-                .unwrap();
+        let data_ptr = NonNull::new(unsafe {
+            cairo::ffi::cairo_image_surface_get_data(surface.to_raw_none())
+        })
+        .unwrap();
 
         let stride = surface.get_stride() as isize;
 
diff --git a/src/util.rs b/src/util.rs
index bd5e29bf..e308359a 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -4,8 +4,6 @@ use std::borrow::Cow;
 use std::ffi::CStr;
 use std::str;
 
-use crate::error::RenderingError;
-
 /// Converts a `char *` which is known to be valid UTF-8 into a `&str`
 ///
 /// The usual `from_glib_none(s)` allocates an owned String.  The
@@ -55,21 +53,3 @@ macro_rules! enum_default {
         }
     };
 }
-
-/// Return an error if a Cairo context is in error.
-///
-/// https://github.com/gtk-rs/gtk-rs/issues/74 - with cairo-rs 0.9.0, the `Context` objet
-/// lost the ability to get its error status queried.  So we do it by hand with `cairo_sys`.
-pub fn check_cairo_context(cr: &cairo::Context) -> Result<(), RenderingError> {
-    unsafe {
-        let cr_raw = cr.to_raw_none();
-
-        let status = cairo_sys::cairo_status(cr_raw);
-        if status == cairo_sys::STATUS_SUCCESS {
-            Ok(())
-        } else {
-            let status: cairo::Error = status.into();
-            Err(RenderingError::from(status))
-        }
-    }
-}
diff --git a/src/xml/xml2.rs b/src/xml/xml2.rs
index 6af6860a..b2f9785f 100644
--- a/src/xml/xml2.rs
+++ b/src/xml/xml2.rs
@@ -3,7 +3,7 @@
 #![allow(clippy::upper_case_acronyms)]
 #![allow(non_snake_case, non_camel_case_types)]
 
-use glib_sys::gpointer;
+use glib::ffi::gpointer;
 
 pub const XML_CHAR_ENCODING_NONE: libc::c_int = 0;
 
diff --git a/tests/src/utils.rs b/tests/src/utils.rs
index fea62327..180062a7 100644
--- a/tests/src/utils.rs
+++ b/tests/src/utils.rs
@@ -82,7 +82,7 @@ mod pango_ft2 {
         }
 
         let font_map = FontMap::new_for_font_type(cairo::FontType::FontTypeFt).unwrap();
-        let raw_font_map: *mut pango_sys::PangoFontMap = font_map.to_glib_none().0;
+        let raw_font_map: *mut pango::ffi::PangoFontMap = font_map.to_glib_none().0;
 
         pango_fc_font_map_set_config(raw_font_map as *mut _, config);
         fontconfig::FcConfigDestroy(config);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]