On 01/04/2015 02:54 PM, David Faure wrote:
On Sunday 04 January 2015 13:51:15 David Faure wrote:
2) I can't think of a reason against passing qApp->style() to the
KLineEditStyle ctor; the rest of the code in QProxyStyle::ensureBaseStyle is
about the -style cmdline override (which qApp->style() honours too).
More testing gives a very good reason against doing that...
"Ownership of style is transferred to QProxyStyle."

==2384==    at 0x4C2A601: operator delete(void*) (vg_replace_malloc.c:510)
==2384==    by 0x1E07D5DB: Breeze::Style::~Style() (breezestyle.cpp:200)
==2384==    by 0xC6335BB: QObjectPrivate::deleteChildren() (qobject.cpp:1935)
==2384==    by 0xC631CF7: QObject::~QObject() (qobject.cpp:1028)
==2384==    by 0xB3092BF: QStyle::~QStyle() (qstyle.cpp:420)
==2384==    by 0xB315CDD: QCommonStyle::~QCommonStyle() (qcommonstyle.cpp:131)
==2384==    by 0xB34563F: QProxyStyle::~QProxyStyle() (qproxystyle.cpp:151)
==2384==    by 0x7FF262F: KLineEditStyle::~KLineEditStyle() (in 
/d/kde/inst/kde_frameworks/lib64/libKF5Completion.so.5.6.0)
==2384==    by 0x7FF265F: KLineEditStyle::~KLineEditStyle() (klineedit_p.h:185)
==2384==    by 0x7FE768F: KLineEditPrivate::~KLineEditPrivate() 
(klineedit.cpp:51)
==2384==    by 0x7FF19FA: 
QScopedPointerDeleter<KLineEditPrivate>::cleanup(KLineEditPrivate*) 
(qscopedpointer.h:62)
==2384==    by 0x7FF12A2: QScopedPointer<KLineEditPrivate, 
QScopedPointerDeleter<KLineEditPrivate> >::~QScopedPointer() (qscopedpointer.h:109)
==2384==    by 0x7FE8107: KLineEdit::~KLineEdit() (klineedit.cpp:202)

And QProxyStyle::setBaseStyle transfers ownership too.

So clearly the intent is that a separate widget style instance is used as the 
base for every proxy style.
I'm not sure why, but that's what we'll have to work with.


[OTOH I wonder if KLineEdit couldn't keep its proxy style as a singleton, so 
that only one
instance of it is created, this would at least keep instances down a bit. But 
it has some state
(data members) so maybe this isn't possible].

Hi David,
many thanks for the investigation. (reason I did not use gdb is that it is broken on my setup). I'll work on sharing more things between difference instances of QStyle for both breeze and (more importantly) oxygen.

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to