summaryrefslogtreecommitdiff
path: root/src/cairo-surface-private.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-10-21 09:04:30 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-10-21 11:37:16 +0100
commit7c9ebd4a852ad709e57ed48b9610db00de79de7e (patch)
tree0714cd10893f8b63ddd93679d7fbe472564c9d35 /src/cairo-surface-private.h
parent723055722f1d9a133fe9e78bb19165f2c7be720e (diff)
downloadcairo-7c9ebd4a852ad709e57ed48b9610db00de79de7e.tar.gz
Make the surface->is_clear logic common
A nasty surprise whilst profiling is that performing redundant clear operations is extremely painful. We can mitigate this somewhat by tracking the cleared state of surfaces and skipping repeated attempts to clear a surface.
Diffstat (limited to 'src/cairo-surface-private.h')
-rw-r--r--src/cairo-surface-private.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cairo-surface-private.h b/src/cairo-surface-private.h
index 5c80d43f5..994df0e59 100644
--- a/src/cairo-surface-private.h
+++ b/src/cairo-surface-private.h
@@ -58,9 +58,12 @@ struct _cairo_surface {
cairo_reference_count_t ref_count;
cairo_status_t status;
- cairo_bool_t finished;
unsigned int unique_id;
+ unsigned finished : 1;
+ unsigned is_clear : 1;
+ unsigned has_font_options : 1;
+
cairo_user_data_array_t user_data;
cairo_user_data_array_t mime_data;
@@ -89,7 +92,6 @@ struct _cairo_surface {
* and set using _cairo_surface_set_font_options(), and propagated by
* cairo_surface_create_similar().
*/
- cairo_bool_t has_font_options;
cairo_font_options_t font_options;
};