[librsvg: 1/2] rsvg-handle: take viewport as pointer for get_geometry_for_element()
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 1/2] rsvg-handle: take viewport as pointer for get_geometry_for_element()
- Date: Thu, 9 May 2019 19:41:54 +0000 (UTC)
commit 740f0412d2ff661597161dc1248f472301fe3498
Author: Marc-André Lureau <marcandre lureau redhat com>
Date: Thu May 9 17:25:55 2019 +0200
rsvg-handle: take viewport as pointer for get_geometry_for_element()
Vala has trouble with mixing out arguments and stack values.
RsvgRectangle viewport can be passed as const pointer instead.
Apparently the API isn't fixed yet, let's propose a change while it is
still time.
Related to:
https://gitlab.gnome.org/GNOME/librsvg/issues/454
Signed-off-by: Marc-André Lureau <marcandre lureau redhat com>
librsvg/rsvg-handle.c | 5 +++--
librsvg/rsvg.h | 2 +-
rsvg_internals/src/c_api.rs | 4 ++--
tests/api.c | 4 ++--
4 files changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/librsvg/rsvg-handle.c b/librsvg/rsvg-handle.c
index a5b66f99..3aa788df 100644
--- a/librsvg/rsvg-handle.c
+++ b/librsvg/rsvg-handle.c
@@ -336,7 +336,7 @@ extern void rsvg_rust_handle_get_intrinsic_dimensions (RsvgHandle *handle,
RsvgRectangle *out_viewbox);
extern gboolean rsvg_rust_handle_get_geometry_for_element (RsvgHandle *handle,
const char *id,
- RsvgRectangle viewport,
+ const RsvgRectangle *viewport,
RsvgRectangle *out_ink_rect,
RsvgRectangle *out_logical_rect,
GError **error);
@@ -1113,12 +1113,13 @@ rsvg_handle_get_intrinsic_dimensions (RsvgHandle *handle,
gboolean
rsvg_handle_get_geometry_for_element (RsvgHandle *handle,
const char *id,
- RsvgRectangle viewport,
+ const RsvgRectangle *viewport,
RsvgRectangle *out_ink_rect,
RsvgRectangle *out_logical_rect,
GError **error)
{
g_return_val_if_fail (RSVG_IS_HANDLE (handle), FALSE);
+ g_return_val_if_fail (viewport != NULL, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
return rsvg_rust_handle_get_geometry_for_element (handle,
diff --git a/librsvg/rsvg.h b/librsvg/rsvg.h
index f5e4252a..1b48e9f6 100644
--- a/librsvg/rsvg.h
+++ b/librsvg/rsvg.h
@@ -264,7 +264,7 @@ void rsvg_handle_get_intrinsic_dimensions (RsvgHandle *handle,
gboolean rsvg_handle_get_geometry_for_element (RsvgHandle *handle,
const char *id,
- RsvgRectangle viewport,
+ const RsvgRectangle *viewport,
RsvgRectangle *out_ink_rect,
RsvgRectangle *out_logical_rect,
GError **error);
diff --git a/rsvg_internals/src/c_api.rs b/rsvg_internals/src/c_api.rs
index bc0fcbe8..062c2f12 100644
--- a/rsvg_internals/src/c_api.rs
+++ b/rsvg_internals/src/c_api.rs
@@ -1246,7 +1246,7 @@ pub unsafe extern "C" fn rsvg_rust_handle_get_intrinsic_dimensions(
pub unsafe extern "C" fn rsvg_rust_handle_get_geometry_for_element(
handle: *mut RsvgHandle,
id: *const libc::c_char,
- viewport: RsvgRectangle,
+ viewport: *const RsvgRectangle,
out_ink_rect: *mut RsvgRectangle,
out_logical_rect: *mut RsvgRectangle,
error: *mut *mut glib_sys::GError,
@@ -1255,7 +1255,7 @@ pub unsafe extern "C" fn rsvg_rust_handle_get_geometry_for_element(
let id: Option<String> = from_glib_none(id);
- match rhandle.get_geometry_for_element(id.as_ref().map(String::as_str), &viewport.into()) {
+ match rhandle.get_geometry_for_element(id.as_ref().map(String::as_str), &(*viewport).into()) {
Ok((ink_rect, logical_rect)) => {
if !out_ink_rect.is_null() {
*out_ink_rect = ink_rect;
diff --git a/tests/api.c b/tests/api.c
index 8a7f4b5f..c2b85c1c 100644
--- a/tests/api.c
+++ b/tests/api.c
@@ -959,14 +959,14 @@ get_geometry_for_element (void)
RsvgRectangle ink_rect;
RsvgRectangle logical_rect;
- g_assert (!rsvg_handle_get_geometry_for_element (handle, "#nonexistent", viewport,
+ g_assert (!rsvg_handle_get_geometry_for_element (handle, "#nonexistent", &viewport,
&ink_rect, &logical_rect, &error));
g_assert (error != NULL);
g_error_free (error);
error = NULL;
- g_assert (rsvg_handle_get_geometry_for_element (handle, "#two", viewport,
+ g_assert (rsvg_handle_get_geometry_for_element (handle, "#two", &viewport,
&ink_rect, &logical_rect, &error));
g_assert (error == NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]