wrong metaObject fixed ( #305 )

This commit is contained in:
Uwe Rathmann 2023-04-17 18:51:04 +02:00
parent e93456ddd8
commit e858e15b41

View File

@ -84,13 +84,11 @@ namespace
}; };
} }
static inline void qskInvokeMetaCallQueued( static inline void qskInvokeMetaCallQueued( QObject* object,
QObject* object, QMetaObject::Call call, ushort offset, const QMetaObject* metaObject, QMetaObject::Call call, ushort offset,
ushort index, void* args[], QSemaphore* semaphore ) ushort index, void* args[], QSemaphore* semaphore )
{ {
const auto callFunction = object->metaObject()->d.static_metacall; auto event = new MetaCallEvent( call, metaObject->d.static_metacall,
auto event = new MetaCallEvent( call, callFunction,
offset, index, args, semaphore ); offset, index, args, semaphore );
QCoreApplication::postEvent( object, event ); QCoreApplication::postEvent( object, event );
@ -196,8 +194,7 @@ static void qskInvokeMetaCall(
QSemaphore semaphore; QSemaphore semaphore;
Q_ASSERT( metaObject == nullptr || receiver->metaObject() == metaObject ); qskInvokeMetaCallQueued( receiver, metaObject, call,
qskInvokeMetaCallQueued( receiver, call,
offset, index, argv, &semaphore ); offset, index, argv, &semaphore );
semaphore.acquire(); semaphore.acquire();
@ -257,8 +254,8 @@ static void qskInvokeMetaCall(
return; return;
} }
Q_ASSERT( metaObject == nullptr || receiver->metaObject() == metaObject ); qskInvokeMetaCallQueued( object, metaObject,
qskInvokeMetaCallQueued( object, call, offset, index, arguments, nullptr ); call, offset, index, arguments, nullptr );
break; break;
} }