diff --git a/doc/public/cairo-sections.txt b/doc/public/cairo-sections.txt
index 1696f15f1..b71b97a90 100644
--- a/doc/public/cairo-sections.txt
+++ b/doc/public/cairo-sections.txt
@@ -163,6 +163,7 @@ cairo_surface_mark_dirty_rectangle
cairo_surface_set_device_offset
cairo_surface_get_device_offset
cairo_surface_set_fallback_resolution
+cairo_surface_get_fallback_resolution
cairo_surface_type_t
cairo_surface_get_type
cairo_surface_get_reference_count
diff --git a/doc/public/tmpl/cairo-surface.sgml b/doc/public/tmpl/cairo-surface.sgml
index 07acd3723..20a1d354c 100644
--- a/doc/public/tmpl/cairo-surface.sgml
+++ b/doc/public/tmpl/cairo-surface.sgml
@@ -164,6 +164,16 @@ cairo_backend_surface_create().
@y_pixels_per_inch:
+
+
+
+
+
+@surface:
+@x_pixels_per_inch:
+@y_pixels_per_inch:
+
+
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index edb1d7576..b86c8a141 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -915,6 +915,29 @@ cairo_surface_set_fallback_resolution (cairo_surface_t *surface,
}
slim_hidden_def (cairo_surface_set_fallback_resolution);
+/**
+ * cairo_surface_get_fallback_resolution:
+ * @surface: a #cairo_surface_t
+ * @x_pixels_per_inch: horizontal pixels per inch
+ * @y_pixels_per_inch: vertical pixels per inch
+ *
+ * This function returns the previous fallback resolution set by
+ * cairo_surface_set_fallback_resolution(), or default fallback
+ * resolution if never set.
+ *
+ * Since: 1.8
+ **/
+void
+cairo_surface_get_fallback_resolution (cairo_surface_t *surface,
+ double *x_pixels_per_inch,
+ double *y_pixels_per_inch)
+{
+ if (x_pixels_per_inch)
+ *x_pixels_per_inch = surface->x_fallback_resolution;
+ if (y_pixels_per_inch)
+ *y_pixels_per_inch = surface->y_fallback_resolution;
+}
+
cairo_bool_t
_cairo_surface_has_device_transform (cairo_surface_t *surface)
{
diff --git a/src/cairo.c b/src/cairo.c
index 1a0da690f..e03ad26fa 100644
--- a/src/cairo.c
+++ b/src/cairo.c
@@ -1268,6 +1268,7 @@ cairo_set_matrix (cairo_t *cr,
if (status)
_cairo_set_error (cr, status);
}
+slim_hidden_def (cairo_set_matrix);
/**
* cairo_identity_matrix:
@@ -2756,6 +2757,7 @@ cairo_set_font_size (cairo_t *cr, double size)
if (status)
_cairo_set_error (cr, status);
}
+slim_hidden_def (cairo_set_font_size);
/**
* cairo_set_font_matrix
@@ -2831,6 +2833,7 @@ cairo_set_font_options (cairo_t *cr,
_cairo_gstate_set_font_options (cr->gstate, options);
}
+slim_hidden_def (cairo_set_font_options);
/**
* cairo_get_font_options:
diff --git a/src/cairo.h b/src/cairo.h
index 2116f003a..19ef7f0dc 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -1668,6 +1668,11 @@ cairo_surface_set_fallback_resolution (cairo_surface_t *surface,
double x_pixels_per_inch,
double y_pixels_per_inch);
+cairo_public void
+cairo_surface_get_fallback_resolution (cairo_surface_t *surface,
+ double *x_pixels_per_inch,
+ double *y_pixels_per_inch);
+
cairo_public void
cairo_surface_copy_page (cairo_surface_t *surface);
diff --git a/src/cairoint.h b/src/cairoint.h
index beca1747b..8716bd474 100755
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -2357,8 +2357,12 @@ slim_hidden_proto (cairo_scaled_font_get_font_options);
slim_hidden_proto (cairo_scaled_font_glyph_extents);
slim_hidden_proto_no_warn (cairo_scaled_font_reference);
slim_hidden_proto (cairo_scaled_font_status);
+slim_hidden_proto (cairo_set_font_size);
+slim_hidden_proto (cairo_set_font_options);
+slim_hidden_proto (cairo_set_matrix);
slim_hidden_proto (cairo_set_operator);
slim_hidden_proto (cairo_set_source);
+slim_hidden_proto (cairo_set_source);
slim_hidden_proto (cairo_set_source_surface);
slim_hidden_proto (cairo_status);
slim_hidden_proto (cairo_stroke_preserve);