@ -2785,14 +2785,15 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
const TQThread * currentThread = TQThread : : currentThreadObject ( ) ;
const TQThread * currentThread = TQThread : : currentThreadObject ( ) ;
# endif // TQT_THREAD_SUPPORT
# endif // TQT_THREAD_SUPPORT
TQObject * object ;
const TQConnection * cd = 0 ;
TQSenderObjectList * sol ;
for ( const TQConnection * c : * clist ) {
TQObject * oldSender = 0 ;
Q_ASSERT ( c ) ;
TQConnection * c ;
if ( c = = cd )
if ( clist - > count ( ) = = 1 ) { // save iterator
continue ;
c = clist - > first ( ) ;
cd = c ;
object = c - > object ( ) ;
TQObject * object = c - > object ( ) ;
sol = object - > senderObjects ;
TQObject * oldSender ;
TQSenderObjectList * sol = object - > senderObjects ;
# ifdef TQT_THREAD_SUPPORT
# ifdef TQT_THREAD_SUPPORT
sol - > listMutex - > lock ( ) ;
sol - > listMutex - > lock ( ) ;
# endif // TQT_THREAD_SUPPORT
# endif // TQT_THREAD_SUPPORT
@ -2802,13 +2803,12 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
sol - > currentSender = this ;
sol - > currentSender = this ;
}
}
if ( c - > memberType ( ) = = TQ_SIGNAL_CODE ) {
if ( c - > memberType ( ) = = TQ_SIGNAL_CODE ) {
# if !defined(TQT_THREAD_SUPPORT)
# ifdef TQT_THREAD_SUPPORT
object - > tqt_emit ( c - > member ( ) , o ) ;
# else // defined(TQT_THREAD_SUPPORT)
if ( ( d - > disableThreadPostedEvents ) | |
if ( ( d - > disableThreadPostedEvents ) | |
( object - > d - > disableThreadPostedEvents ) | |
( object - > d - > disableThreadPostedEvents ) | |
( currentThread & & currentThread - > threadPostedEventsDisabled ( ) ) | |
( currentThread & & currentThread - > threadPostedEventsDisabled ( ) ) | |
( currentThread & & object - > d - > ownThread = = currentThread ) ) {
( currentThread & & object - > d - > ownThread = = currentThread )
) {
sol - > listMutex - > unlock ( ) ;
sol - > listMutex - > unlock ( ) ;
object - > tqt_emit ( c - > member ( ) , o ) ;
object - > tqt_emit ( c - > member ( ) , o ) ;
sol - > listMutex - > lock ( ) ;
sol - > listMutex - > lock ( ) ;
@ -2816,21 +2816,22 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
else {
else {
if ( object - > d - > ownThread & & ! object - > d - > ownThread - > finished ( ) ) {
if ( object - > d - > ownThread & & ! object - > d - > ownThread - > finished ( ) ) {
# ifdef QT_DEBUG
# ifdef QT_DEBUG
tqDebug ( " TQObject::activate_signal: Emitting cross-thread signal from object %p (member %d receiver %p) (1) \n " , this , c - > member ( ) , object ) ;
tqDebug ( " TQObject::activate_signal: Emitting cross-thread signal from object %p (member %d receiver %p) \n " , this , c - > member ( ) , object ) ;
# endif // QT_DEBUG
# endif // QT_DEBUG
TQApplication : : postEvent ( object , new TQMetaCallEvent ( c - > member ( ) , this , deepCopyTQUObjectArray ( o ) , TQMetaCallEvent : : MetaCallEmit ) ) ;
TQApplication : : postEvent ( object , new TQMetaCallEvent ( c - > member ( ) , this , deepCopyTQUObjectArray ( o ) , TQMetaCallEvent : : MetaCallEmit ) ) ;
}
}
}
}
# endif // !defined(TQT_THREAD_SUPPORT)
# else // !TQT_THREAD_SUPPORT
object - > tqt_emit ( c - > member ( ) , o ) ;
# endif // TQT_THREAD_SUPPORT
}
}
else {
else {
# if !defined(TQT_THREAD_SUPPORT)
# ifdef TQT_THREAD_SUPPORT
object - > tqt_invoke ( c - > member ( ) , o ) ;
# else // defined(TQT_THREAD_SUPPORT)
if ( ( d - > disableThreadPostedEvents ) | |
if ( ( d - > disableThreadPostedEvents ) | |
( object - > d - > disableThreadPostedEvents ) | |
( object - > d - > disableThreadPostedEvents ) | |
( currentThread & & currentThread - > threadPostedEventsDisabled ( ) ) | |
( currentThread & & currentThread - > threadPostedEventsDisabled ( ) ) | |
( currentThread & & object - > d - > ownThread = = currentThread ) ) {
( currentThread & & object - > d - > ownThread = = currentThread )
) {
sol - > listMutex - > unlock ( ) ;
sol - > listMutex - > unlock ( ) ;
object - > tqt_invoke ( c - > member ( ) , o ) ;
object - > tqt_invoke ( c - > member ( ) , o ) ;
sol - > listMutex - > lock ( ) ;
sol - > listMutex - > lock ( ) ;
@ -2838,18 +2839,20 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
else {
else {
if ( object - > d - > ownThread & & ! object - > d - > ownThread - > finished ( ) ) {
if ( object - > d - > ownThread & & ! object - > d - > ownThread - > finished ( ) ) {
# ifdef QT_DEBUG
# ifdef QT_DEBUG
tqDebug ( " TQObject::activate_signal: Invoking cross-thread method from object %p (member %d receiver %p) (1) \n " , this , c - > member ( ) , object ) ;
tqDebug ( " TQObject::activate_signal: Invoking cross-thread method from object %p (member %d receiver %p) \n " , this , c - > member ( ) , object ) ;
# endif // QT_DEBUG
# endif // QT_DEBUG
TQApplication : : postEvent ( object , new TQMetaCallEvent ( c - > member ( ) , this , deepCopyTQUObjectArray ( o ) , TQMetaCallEvent : : MetaCallInvoke ) ) ;
TQApplication : : postEvent ( object , new TQMetaCallEvent ( c - > member ( ) , this , deepCopyTQUObjectArray ( o ) , TQMetaCallEvent : : MetaCallInvoke ) ) ;
}
}
}
}
# endif // !defined(TQT_THREAD_SUPPORT)
# else // !TQT_THREAD_SUPPORT
object - > tqt_invoke ( c - > member ( ) , o ) ;
# endif // TQT_THREAD_SUPPORT
}
}
if ( sol ) {
if ( sol ) {
sol - > currentSender = oldSender ;
sol - > currentSender = oldSender ;
if ( sol - > deref ( ) ) {
if ( sol - > deref ( ) ) {
# ifdef TQT_THREAD_SUPPORT
# ifdef TQT_THREAD_SUPPORT
sol - > listMutex - > unlock ( ) ;
sol - > listMutex - > unlock ( ) ;
# endif // TQT_THREAD_SUPPORT
# endif // TQT_THREAD_SUPPORT
delete sol ;
delete sol ;
sol = NULL ;
sol = NULL ;
@ -2858,82 +2861,6 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
# ifdef TQT_THREAD_SUPPORT
# ifdef TQT_THREAD_SUPPORT
if ( sol ) sol - > listMutex - > unlock ( ) ;
if ( sol ) sol - > listMutex - > unlock ( ) ;
# endif // TQT_THREAD_SUPPORT
# endif // TQT_THREAD_SUPPORT
} else {
TQConnection * cd = 0 ;
TQConnectionListIt it ( * clist ) ;
while ( ( c = it . current ( ) ) ) {
+ + it ;
if ( c = = cd )
continue ;
cd = c ;
object = c - > object ( ) ;
sol = object - > senderObjects ;
# ifdef TQT_THREAD_SUPPORT
sol - > listMutex - > lock ( ) ;
# endif // TQT_THREAD_SUPPORT
if ( sol ) {
oldSender = sol - > currentSender ;
sol - > ref ( ) ;
sol - > currentSender = this ;
}
if ( c - > memberType ( ) = = TQ_SIGNAL_CODE ) {
# if !defined(TQT_THREAD_SUPPORT)
object - > tqt_emit ( c - > member ( ) , o ) ;
# else // defined(TQT_THREAD_SUPPORT)
if ( ( d - > disableThreadPostedEvents ) | |
( object - > d - > disableThreadPostedEvents ) | |
( currentThread & & currentThread - > threadPostedEventsDisabled ( ) ) | |
( currentThread & & object - > d - > ownThread = = currentThread ) ) {
sol - > listMutex - > unlock ( ) ;
object - > tqt_emit ( c - > member ( ) , o ) ;
sol - > listMutex - > lock ( ) ;
}
else {
if ( object - > d - > ownThread & & ! object - > d - > ownThread - > finished ( ) ) {
# ifdef QT_DEBUG
tqDebug ( " TQObject::activate_signal: Emitting cross-thread signal from object %p (member %d receiver %p) (2) \n " , this , c - > member ( ) , object ) ;
# endif // QT_DEBUG
TQApplication : : postEvent ( object , new TQMetaCallEvent ( c - > member ( ) , this , deepCopyTQUObjectArray ( o ) , TQMetaCallEvent : : MetaCallEmit ) ) ;
}
}
# endif // !defined(TQT_THREAD_SUPPORT)
}
else {
# if !defined(TQT_THREAD_SUPPORT)
object - > tqt_invoke ( c - > member ( ) , o ) ;
# else // defined(TQT_THREAD_SUPPORT)
if ( ( d - > disableThreadPostedEvents ) | |
( object - > d - > disableThreadPostedEvents ) | |
( currentThread & & currentThread - > threadPostedEventsDisabled ( ) ) | |
( currentThread & & object - > d - > ownThread = = currentThread ) ) {
sol - > listMutex - > unlock ( ) ;
object - > tqt_invoke ( c - > member ( ) , o ) ;
sol - > listMutex - > lock ( ) ;
}
else {
if ( object - > d - > ownThread & & ! object - > d - > ownThread - > finished ( ) ) {
# ifdef QT_DEBUG
tqDebug ( " TQObject::activate_signal: Invoking cross-thread method from object %p (member %d receiver %p) (2) \n " , this , c - > member ( ) , object ) ;
# endif // QT_DEBUG
TQApplication : : postEvent ( object , new TQMetaCallEvent ( c - > member ( ) , this , deepCopyTQUObjectArray ( o ) , TQMetaCallEvent : : MetaCallInvoke ) ) ;
}
}
# endif // !defined(TQT_THREAD_SUPPORT)
}
if ( sol ) {
sol - > currentSender = oldSender ;
if ( sol - > deref ( ) ) {
# ifdef TQT_THREAD_SUPPORT
sol - > listMutex - > unlock ( ) ;
# endif // TQT_THREAD_SUPPORT
delete sol ;
sol = NULL ;
}
}
# ifdef TQT_THREAD_SUPPORT
if ( sol ) sol - > listMutex - > unlock ( ) ;
# endif // TQT_THREAD_SUPPORT
}
}
}
}
}