From 68c915846e8820e008d15fb3453aa6f45d5becf4 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 27 May 2009 17:20:56 +1000 Subject: Fix memory leak. --- src/declarative/fx/qfxrect.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/fx/qfxrect.h b/src/declarative/fx/qfxrect.h index 2c59914..864b1cd 100644 --- a/src/declarative/fx/qfxrect.h +++ b/src/declarative/fx/qfxrect.h @@ -109,7 +109,8 @@ class Q_DECLARATIVE_EXPORT QFxGradient : public QObject Q_CLASSINFO("DefaultProperty", "stops") public: - QFxGradient(QObject *parent=0) : QObject(parent), m_gradient(0), m_created(false) {} + QFxGradient(QObject *parent=0) : QObject(parent), m_gradient(0) {} + ~QFxGradient() { delete m_gradient; } QList *stops() { return &m_stops; } @@ -118,7 +119,6 @@ public: private: QList m_stops; mutable QGradient *m_gradient; - mutable bool m_created; }; QML_DECLARE_TYPE(QFxGradient) -- cgit v0.12 From d9e51611a2be361cb75b682c5552846b64e32df3 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 28 May 2009 13:24:18 +1000 Subject: Remove extra semicolons. --- src/declarative/debugger/qmldebugclient.cpp | 2 +- src/declarative/test/qfxtestobjects.cpp | 24 ++++++++++++------------ src/declarative/test/qfxtestobjects.h | 28 ++++++++++++++-------------- src/declarative/util/qperformancelog.h | 2 +- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/declarative/debugger/qmldebugclient.cpp b/src/declarative/debugger/qmldebugclient.cpp index 85ccf0b..3dacf01 100644 --- a/src/declarative/debugger/qmldebugclient.cpp +++ b/src/declarative/debugger/qmldebugclient.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "qmldebugclient.h" -#include +#include #include #include #include diff --git a/src/declarative/test/qfxtestobjects.cpp b/src/declarative/test/qfxtestobjects.cpp index 5beefd9..12fc7fb 100644 --- a/src/declarative/test/qfxtestobjects.cpp +++ b/src/declarative/test/qfxtestobjects.cpp @@ -47,18 +47,18 @@ QT_BEGIN_NAMESPACE -QML_DECLARE_TYPE(TestObject); -QML_DEFINE_TYPE(TestObject,TestObject); -QML_DECLARE_TYPE(TestFrame); -QML_DEFINE_TYPE(TestFrame,TestFrame); -QML_DECLARE_TYPE(TestFullFrame); -QML_DEFINE_TYPE(TestFullFrame,TestFullFrame); -QML_DECLARE_TYPE(TestMouse); -QML_DEFINE_TYPE(TestMouse,TestMouse); -QML_DECLARE_TYPE(TestKey); -QML_DEFINE_TYPE(TestKey,TestKey); -QML_DECLARE_TYPE(TestLog); -QML_DEFINE_TYPE(TestLog,TestLog); +QML_DECLARE_TYPE(TestObject) +QML_DEFINE_TYPE(TestObject,TestObject) +QML_DECLARE_TYPE(TestFrame) +QML_DEFINE_TYPE(TestFrame,TestFrame) +QML_DECLARE_TYPE(TestFullFrame) +QML_DEFINE_TYPE(TestFullFrame,TestFullFrame) +QML_DECLARE_TYPE(TestMouse) +QML_DEFINE_TYPE(TestMouse,TestMouse) +QML_DECLARE_TYPE(TestKey) +QML_DEFINE_TYPE(TestKey,TestKey) +QML_DECLARE_TYPE(TestLog) +QML_DEFINE_TYPE(TestLog,TestLog) static QString padding(int pad) { diff --git a/src/declarative/test/qfxtestobjects.h b/src/declarative/test/qfxtestobjects.h index de4d94b..80fcfe7 100644 --- a/src/declarative/test/qfxtestobjects.h +++ b/src/declarative/test/qfxtestobjects.h @@ -60,7 +60,7 @@ Q_OBJECT public: TestObject(QObject * = 0); - Q_PROPERTY(int time READ time WRITE setTime NOTIFY dataChanged); + Q_PROPERTY(int time READ time WRITE setTime NOTIFY dataChanged) int time() const; void setTime(int); @@ -78,7 +78,7 @@ Q_OBJECT public: TestFrame(QObject * = 0); - Q_PROPERTY(QString hash READ hash WRITE setHash NOTIFY frameChanged); + Q_PROPERTY(QString hash READ hash WRITE setHash NOTIFY frameChanged) QString hash() const; void setHash(const QString &); @@ -96,7 +96,7 @@ Q_OBJECT public: TestFullFrame(QObject * = 0); - Q_PROPERTY(int frameId READ frameId WRITE setFrameId NOTIFY frameChanged); + Q_PROPERTY(int frameId READ frameId WRITE setFrameId NOTIFY frameChanged) int frameId() const; void setFrameId(int); @@ -114,23 +114,23 @@ Q_OBJECT public: TestMouse(QObject * = 0); - Q_PROPERTY(int type READ type WRITE setType NOTIFY mouseChanged); + Q_PROPERTY(int type READ type WRITE setType NOTIFY mouseChanged) int type() const; void setType(int); - Q_PROPERTY(int button READ button WRITE setButton NOTIFY mouseChanged); + Q_PROPERTY(int button READ button WRITE setButton NOTIFY mouseChanged) int button() const; void setButton(int); - Q_PROPERTY(int buttons READ buttons WRITE setButtons NOTIFY mouseChanged); + Q_PROPERTY(int buttons READ buttons WRITE setButtons NOTIFY mouseChanged) int buttons() const; void setButtons(int); - Q_PROPERTY(QPoint globalPos READ globalPos WRITE setGlobalPos NOTIFY mouseChanged); + Q_PROPERTY(QPoint globalPos READ globalPos WRITE setGlobalPos NOTIFY mouseChanged) QPoint globalPos() const; void setGlobalPos(const QPoint &); - Q_PROPERTY(QPoint pos READ pos WRITE setPos NOTIFY mouseChanged); + Q_PROPERTY(QPoint pos READ pos WRITE setPos NOTIFY mouseChanged) QPoint pos() const; void setPos(const QPoint &); @@ -153,19 +153,19 @@ Q_OBJECT public: TestKey(QObject * = 0); - Q_PROPERTY(int type READ type WRITE setType NOTIFY keyChanged); + Q_PROPERTY(int type READ type WRITE setType NOTIFY keyChanged) int type() const; void setType(int); - Q_PROPERTY(int modifiers READ modifiers WRITE setModifiers NOTIFY keyChanged); + Q_PROPERTY(int modifiers READ modifiers WRITE setModifiers NOTIFY keyChanged) int modifiers() const; void setModifiers(int); - Q_PROPERTY(QString text READ text WRITE setText NOTIFY keyChanged); + Q_PROPERTY(QString text READ text WRITE setText NOTIFY keyChanged) QString text() const; void setText(const QString &); - Q_PROPERTY(int key READ key WRITE setKey NOTIFY keyChanged); + Q_PROPERTY(int key READ key WRITE setKey NOTIFY keyChanged) int key() const; void setKey(int); @@ -187,8 +187,8 @@ Q_OBJECT public: TestLog(QObject * = 0); - Q_CLASSINFO("DefaultProperty", "actions"); - Q_PROPERTY(QList *actions READ qmlActions); + Q_CLASSINFO("DefaultProperty", "actions") + Q_PROPERTY(QList *actions READ qmlActions) QList *qmlActions(); QList &actions(); diff --git a/src/declarative/util/qperformancelog.h b/src/declarative/util/qperformancelog.h index 9d19bbd..6bb9037 100644 --- a/src/declarative/util/qperformancelog.h +++ b/src/declarative/util/qperformancelog.h @@ -64,7 +64,7 @@ namespace QPerformanceLog void displayData(LogData *); void clear(LogData *); #endif -}; +} #ifdef Q_ENABLE_PERFORMANCE_LOG -- cgit v0.12 From 3824fa64f8f8d24db34e3ce1c8d5c7d21cb624b7 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 29 May 2009 10:56:55 +1000 Subject: Update on gradient change. --- src/declarative/fx/qfxrect.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/declarative/fx/qfxrect.cpp b/src/declarative/fx/qfxrect.cpp index 4271022..b10594e 100644 --- a/src/declarative/fx/qfxrect.cpp +++ b/src/declarative/fx/qfxrect.cpp @@ -308,7 +308,10 @@ QFxGradient *QFxRect::gradient() const void QFxRect::setGradient(QFxGradient *gradient) { Q_D(QFxRect); + if (d->gradient == gradient) + return; d->gradient = gradient; + update(); } -- cgit v0.12 From 9f95bd8f6e6ccf3575216285b29f2a42dcfd328d Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 29 May 2009 11:32:39 +1000 Subject: Update in reaction to GradientStops changing. --- src/declarative/fx/qfxrect.cpp | 17 +++++++++++++++++ src/declarative/fx/qfxrect.h | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/declarative/fx/qfxrect.cpp b/src/declarative/fx/qfxrect.cpp index b10594e..9718344 100644 --- a/src/declarative/fx/qfxrect.cpp +++ b/src/declarative/fx/qfxrect.cpp @@ -133,6 +133,12 @@ void QFxPen::setWidth(int w) Sets a \e color at a \e position in a gradient. */ +void QFxGradientStop::updateGradient() +{ + if (QFxGradient *grad = qobject_cast(parent())) + grad->doUpdate(); +} + /*! \qmlclass Gradient QFxGradient \brief The Gradient item defines a gradient fill. @@ -171,6 +177,13 @@ const QGradient *QFxGradient::gradient() const return m_gradient; } +void QFxGradient::doUpdate() +{ + delete m_gradient; + m_gradient = 0; + emit updated(); +} + QML_DEFINE_TYPE(QFxRect,Rect) /*! @@ -310,7 +323,11 @@ void QFxRect::setGradient(QFxGradient *gradient) Q_D(QFxRect); if (d->gradient == gradient) return; + if (d->gradient) + disconnect(d->gradient, SIGNAL(updated()), this, SLOT(doUpdate())); d->gradient = gradient; + if (d->gradient) + connect(d->gradient, SIGNAL(updated()), this, SLOT(doUpdate())); update(); } diff --git a/src/declarative/fx/qfxrect.h b/src/declarative/fx/qfxrect.h index 864b1cd..c279a1c 100644 --- a/src/declarative/fx/qfxrect.h +++ b/src/declarative/fx/qfxrect.h @@ -90,10 +90,13 @@ public: QFxGradientStop(QObject *parent=0) : QObject(parent) {} qreal position() const { return m_position; } - void setPosition(qreal position) { m_position = position; } + void setPosition(qreal position) { m_position = position; updateGradient(); } QColor color() const { return m_color; } - void setColor(const QColor &color) { m_color = color; } + void setColor(const QColor &color) { m_color = color; updateGradient(); } + +private: + void updateGradient(); private: qreal m_position; @@ -116,9 +119,16 @@ public: const QGradient *gradient() const; +Q_SIGNALS: + void updated(); + +private: + void doUpdate(); + private: QList m_stops; mutable QGradient *m_gradient; + friend class QFxGradientStop; }; QML_DECLARE_TYPE(QFxGradient) -- cgit v0.12