summaryrefslogtreecommitdiff
path: root/gtk/gtkprivate.h
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2010-09-09 15:02:56 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2010-09-09 17:19:18 +0900
commit843be48572e00d20e927cfb6f11ad4abba6e8e15 (patch)
treef4ee5b0d3933320de6d25de183e191fd4d1fb4b4 /gtk/gtkprivate.h
parentf76fddb8a7d260dff2ce8b87965ab4f41006a592 (diff)
downloadgtk+-843be48572e00d20e927cfb6f11ad4abba6e8e15.tar.gz
Moved GtkSizeRequest cache to GtkWidget->priv
Now that we have a private data installed directly on the GtkWidget instance it makes no sense to cache the size requests on widget qdata. This change will generally make GTK+ memory less fragmented as well as significantly speed up the size request process.
Diffstat (limited to 'gtk/gtkprivate.h')
-rw-r--r--gtk/gtkprivate.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/gtk/gtkprivate.h b/gtk/gtkprivate.h
index e4505420fc..9e5b4cf141 100644
--- a/gtk/gtkprivate.h
+++ b/gtk/gtkprivate.h
@@ -114,6 +114,28 @@ gboolean _gtk_fnmatch (const char *pattern,
#define GTK_DEFAULT_ACCEL_MOD_MASK GDK_META_MASK
#endif
+
+/* With GtkSizeRequest, a widget may be requested
+ * its width for 2 or maximum 3 heights in one resize
+ */
+#define GTK_SIZE_REQUEST_CACHED_SIZES 3
+
+typedef struct
+{
+ guint age;
+ gint for_size;
+ gint minimum_size;
+ gint natural_size;
+} SizeRequest;
+
+typedef struct {
+ SizeRequest widths[GTK_SIZE_REQUEST_CACHED_SIZES];
+ SizeRequest heights[GTK_SIZE_REQUEST_CACHED_SIZES];
+ guint8 cached_width_age;
+ guint8 cached_height_age;
+} SizeRequestCache;
+
+
G_END_DECLS
#endif /* __GTK_PRIVATE_H__ */