diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-05-12 14:54:18 (GMT) |
---|---|---|
committer | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-05-12 19:41:47 (GMT) |
commit | 4ffda2918b3f5c789ef325cdeaac72e5e7ef2c0c (patch) | |
tree | 031d21d9b85c643c486bcd3aa8dae74731dcc5b2 /src/gui/kernel/qwidget_mac.mm | |
parent | 6c154a5fc2b6e3fe3ccf9dbee709b01c08c27f6c (diff) | |
download | Qt-4ffda2918b3f5c789ef325cdeaac72e5e7ef2c0c.zip Qt-4ffda2918b3f5c789ef325cdeaac72e5e7ef2c0c.tar.gz Qt-4ffda2918b3f5c789ef325cdeaac72e5e7ef2c0c.tar.bz2 |
Reduce QWidget footprint and do some cleanup.
This patch cleans up several things, like bit fields that are
interleaved with with other variables, resulting in bits not being
packed properly.
Example: "uint a : 8; int c; uint b: 8;" -> "uint a : 8; uint b : 8; int c;"
In that case we'll use 12 bytes instead of 8 bytes.
I've also changed the order we declare certain variables to avoid
unnecessary gaps/padding on 64-bit architectures.
Example: "char *a; int c; char *b;" -> "char *a; char *b; int c;"
Pointers are 64-bit aligned, so padding appears between 'c' and 'b',
resulting in a total use of 24 bytes instead of 20 bytes.
...and since I anyways was moving the code around, I took the
opportunity to add some overall structure by first declaring
cross-platform functions/variables followed by platform specific
functions/variables. ...and it was kinda scary to actually be
able to see all the QStrings, pointers and whatnot we put into
QWidgetPrivate. I'm sure we can remove lots of stuff, but I'll do
that in a separate commit.
Quick numbers (X11/64 bit):
sizeof(QWidgetPrivate) == before: 472, after: 456
sizeof(QTLWExtra) == before: 112, after: 104
sizeof(QWExtra) == before: 152, after: 144
Acked-by: Olivier
Diffstat (limited to 'src/gui/kernel/qwidget_mac.mm')
-rw-r--r-- | src/gui/kernel/qwidget_mac.mm | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 1896b97..cbfdaa0 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -4438,11 +4438,13 @@ void QWidgetPrivate::deleteSysExtra() void QWidgetPrivate::createTLSysExtra() { + extra->topextra->resizer = 0; + extra->topextra->isSetGeometry = 0; + extra->topextra->isMove = 0; + extra->topextra->wattr = 0; extra->topextra->wclass = 0; extra->topextra->group = 0; extra->topextra->windowIcon = 0; - extra->topextra->resizer = 0; - extra->topextra->isSetGeometry = 0; extra->topextra->savedWindowAttributesFromMaximized = 0; } |