summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidget_qpa.cpp
diff options
context:
space:
mode:
authorLiang Jian <jianliang79@gmail.com>2013-12-16 12:17:33 +0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-16 09:54:22 +0100
commit9764f8602719676d1fa15e6fd1e7980af16bfc63 (patch)
tree171a687c92ebb8e6d9c3a33a4e0518cb52069c14 /src/widgets/kernel/qwidget_qpa.cpp
parenta935b3fbd8297e6e2ae6ffdf8ed2790fdf0d46f1 (diff)
Fix QBackingStore object leaking
Check q->isTopLevel() before calling setBackingStore() in QWidgetPrivate::create_sys() to prevent QBackingStore leaking. This is because QWidget::setBackingStore() will return if isTopLevel() is true and the newly created QBackingStore object will be leaked. Change-Id: I2777acd4c317d5019f5b266feae005042026b8be Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'src/widgets/kernel/qwidget_qpa.cpp')
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index 93234f3958..3b6127e4e7 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -148,10 +148,12 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
QBackingStore *store = q->backingStore();
if (!store) {
- if (win && q->windowType() != Qt::Desktop)
- q->setBackingStore(new QBackingStore(win));
- else
+ if (win && q->windowType() != Qt::Desktop) {
+ if (q->isTopLevel())
+ q->setBackingStore(new QBackingStore(win));
+ } else {
q->setAttribute(Qt::WA_PaintOnScreen, true);
+ }
}
setWindowModified_helper();