micro optimzation

This commit is contained in:
Uwe Rathmann 2019-09-23 16:59:48 +02:00
parent 9b4cc90063
commit a8f888ca08
2 changed files with 12 additions and 11 deletions

View File

@ -156,19 +156,13 @@ QskQuickItem::QskQuickItem( QskQuickItemPrivate& dd, QQuickItem* parent )
{ {
setFlag( QQuickItem::ItemHasContents, true ); setFlag( QQuickItem::ItemHasContents, true );
// since Qt 5.10 we have QQuickItem::ItemEnabledHasChanged
#if QT_VERSION < QT_VERSION_CHECK( 5, 10, 0 ) #if QT_VERSION < QT_VERSION_CHECK( 5, 10, 0 )
/* // since Qt 5.10 we have QQuickItem::ItemEnabledHasChanged
Setting up this connections slows down the time needed
for construction by almost 100%. Would be nice to
avoid this penalty also for earlier Qt versions.
*/
connect( this, &QQuickItem::enabledChanged, connect( this, &QQuickItem::enabledChanged,
[ this ] { qskSendEventTo( this, QEvent::EnabledChange ); } ); this, &QskQuickItem::sendEnabledChangeEvent );
#endif #endif
Q_D( QskQuickItem ); if ( dd.controlFlags & QskQuickItem::DeferredUpdate )
if ( d->controlFlags & QskQuickItem::DeferredUpdate )
qskFilterWindow( window() ); qskFilterWindow( window() );
qskRegistry->insert( this ); qskRegistry->insert( this );
@ -187,7 +181,8 @@ QskQuickItem::~QskQuickItem()
qskRegistry->remove( this ); qskRegistry->remove( this );
#if QT_VERSION < QT_VERSION_CHECK( 5, 10, 0 ) #if QT_VERSION < QT_VERSION_CHECK( 5, 10, 0 )
disconnect( this, &QQuickItem::enabledChanged, nullptr, nullptr ); disconnect( this, &QQuickItem::enabledChanged,
this, &QskQuickItem::sendEnabledChangeEvent );
#endif #endif
} }
@ -586,6 +581,11 @@ void QskQuickItem::resetImplicitSize()
} }
} }
void QskQuickItem::sendEnabledChangeEvent()
{
qskSendEventTo( this, QEvent::EnabledChange );
}
bool QskQuickItem::event( QEvent* event ) bool QskQuickItem::event( QEvent* event )
{ {
const int eventType = event->type(); const int eventType = event->type();
@ -698,7 +698,7 @@ void QskQuickItem::itemChange( QQuickItem::ItemChange change,
#if QT_VERSION >= QT_VERSION_CHECK( 5, 10, 0 ) #if QT_VERSION >= QT_VERSION_CHECK( 5, 10, 0 )
case QQuickItem::ItemEnabledHasChanged: case QQuickItem::ItemEnabledHasChanged:
{ {
qskSendEventTo( this, QEvent::EnabledChange ); sendEnabledChangeEvent();
break; break;
} }
#endif #endif

View File

@ -132,6 +132,7 @@ class QSK_EXPORT QskQuickItem : public QQuickItem
void childrenRect() = delete; void childrenRect() = delete;
void updateControlFlag( uint flag, bool on ); void updateControlFlag( uint flag, bool on );
void sendEnabledChangeEvent();
QSGNode* updatePaintNode( QSGNode*, UpdatePaintNodeData* ) override final; QSGNode* updatePaintNode( QSGNode*, UpdatePaintNodeData* ) override final;
virtual QSGNode* updateItemPaintNode( QSGNode* ); virtual QSGNode* updateItemPaintNode( QSGNode* );