From: Charles Yin Date: Mon, 14 Nov 2011 04:01:29 +0000 (+1000) Subject: Fix memory leaks&uninitialized members in QQuickContext2D&QQuickContext2DTexture X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=c430ff551d621a4c7a344224ad1964fb4c7e72f6;p=konrad%2Fqtdeclarative.git Fix memory leaks&uninitialized members in QQuickContext2D&QQuickContext2DTexture 1) Delete m_buffer in QQuickContext2D::~QQuickContext2D 2) Add a default ctor for QQuickContext2D::State, although the reset() method is always called, but the valgrind still complains the "uninitialized" error, so add this to make an explicit initialization. 3) m_item in QQuickContext2DTexture is also not initialized. Change-Id: Ie6c74136342d7f0ff8dc268d5d6b976c95ff52f1 Reviewed-by: Alan Alpert --- diff --git a/src/declarative/items/context2d/qquickcontext2d.cpp b/src/declarative/items/context2d/qquickcontext2d.cpp index 2297f53..ef8631f 100644 --- a/src/declarative/items/context2d/qquickcontext2d.cpp +++ b/src/declarative/items/context2d/qquickcontext2d.cpp @@ -3307,6 +3307,7 @@ QQuickContext2D::QQuickContext2D(QQuickCanvasItem* item) QQuickContext2D::~QQuickContext2D() { + delete m_buffer; } v8::Handle QQuickContext2D::v8value() const diff --git a/src/declarative/items/context2d/qquickcontext2d_p.h b/src/declarative/items/context2d/qquickcontext2d_p.h index 3c5e89c..c5634d2 100644 --- a/src/declarative/items/context2d/qquickcontext2d_p.h +++ b/src/declarative/items/context2d/qquickcontext2d_p.h @@ -107,6 +107,30 @@ public: struct State { + State() + : strokeStyle(QColor("#000000")) + , fillStyle(QColor("#000000")) + , fillPatternRepeatX(false) + , fillPatternRepeatY(false) + , strokePatternRepeatX(false) + , strokePatternRepeatY(false) + , fillRule(Qt::WindingFill) + , globalAlpha(1.0) + , lineWidth(1) + , lineCap(Qt::FlatCap) + , lineJoin(Qt::MiterJoin) + , miterLimit(10) + , shadowOffsetX(0) + , shadowOffsetY(0) + , shadowBlur(0) + , shadowColor(qRgba(0, 0, 0, 0)) + , globalCompositeOperation(QPainter::CompositionMode_SourceOver) + , font(QFont(QLatin1String("sans-serif"), 10)) + , textAlign(QQuickContext2D::Start) + , textBaseline(QQuickContext2D::Alphabetic) + { + } + QTransform matrix; QPainterPath clipPath; QBrush strokeStyle; diff --git a/src/declarative/items/context2d/qquickcontext2dtexture.cpp b/src/declarative/items/context2d/qquickcontext2dtexture.cpp index 9518f91..791d8ad 100644 --- a/src/declarative/items/context2d/qquickcontext2dtexture.cpp +++ b/src/declarative/items/context2d/qquickcontext2dtexture.cpp @@ -72,6 +72,7 @@ Q_GLOBAL_STATIC(QThread, globalCanvasThreadRenderInstance) QQuickContext2DTexture::QQuickContext2DTexture() : QSGDynamicTexture() , m_context(0) + , m_item(0) , m_canvasSize(QSize(1, 1)) , m_tileSize(QSize(1, 1)) , m_canvasWindow(QRect(0, 0, 1, 1))