[cairo] When Should You Call cairo_surface_flush?
Bryce Harrington
bryce at osg.samsung.com
Wed Mar 18 15:51:20 PDT 2015
On Thu, Mar 19, 2015 at 10:57:08AM +1300, Lawrence D'Oliveiro wrote:
> On Wed, 18 Mar 2015 22:27:32 +0100, Uli Schlachter wrote:
>
> > In the current implementation it is safe to *read* from an image
> > surface's data without calling flush. Writing does need a flush
> > before, so that snapshots get detached and surface snapshots can make
> > a copy of the old contents.
> >
> > However, this is an implementation detail and not guaranteed by the
> > API.
>
> Thank you for that. Perhaps this should be made clear in the docs
> <http://cairographics.org/manual/cairo-cairo-surface-t.html#cairo-surface-flush>:
> the sentence
>
> This function must be called before switching from drawing on
> the surface with cairo to drawing on it directly with native
> APIs.
>
> should become more like
>
> This function must be called before switching from drawing on
> the surface with Cairo to making any kind of accesses to its
> memory outside Cairo.
>
> Can we also take it as read that, if the implementation changes in
> future, the cairo_write_to_pngxxx calls will be updated to do any
> necessary flushing? Which means the flush() calls in my sample code can
> go?
> --
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
>From 904f1fdc1d7f13d4443bafd760db7395c5030ca7 Mon Sep 17 00:00:00 2001
From: Bryce Harrington <bryce at osg.samsung.com>
Date: Wed, 18 Mar 2015 15:49:41 -0700
Subject: [PATCH] surface: Clarify flush documentation
Signed-off-by: Bryce Harrington <bryce at osg.samsung.com>
---
src/cairo-surface.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index 89345f5..bfe3fa1 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -1554,12 +1554,12 @@ _cairo_surface_flush (cairo_surface_t *surface, unsigned flags)
* cairo_surface_flush:
* @surface: a #cairo_surface_t
*
- * Do any pending drawing for the surface and also restore any
- * temporary modifications cairo has made to the surface's
- * state. This function must be called before switching from
- * drawing on the surface with cairo to drawing on it directly
- * with native APIs. If the surface doesn't support direct access,
- * then this function does nothing.
+ * Do any pending drawing for the surface and also restore any temporary
+ * modifications cairo has made to the surface's state. This function
+ * must be called before switching from drawing on the surface with
+ * cairo to drawing on it directly with native APIs, or accessing its
+ * memory outside of Cairo. If the surface doesn't support direct
+ * access, then this function does nothing.
*
* Since: 1.0
**/
--
1.9.1
More information about the cairo
mailing list