|
Lines 73-78
public:
Link Here
|
| 73 |
} |
73 |
} |
| 74 |
#endif |
74 |
#endif |
| 75 |
TQThread* ownThread; |
75 |
TQThread* ownThread; |
|
|
76 |
TQMutex* senderObjectListMutex; |
| 77 |
TQMutex* childObjectListMutex; |
| 76 |
bool disableThreadPostedEvents; |
78 |
bool disableThreadPostedEvents; |
| 77 |
}; |
79 |
}; |
| 78 |
|
80 |
|
|
Lines 83-88
void TQObject::moveToThread_helper(TQThread *targetThread)
Link Here
|
| 83 |
TQEvent e(TQEvent::ThreadChange); |
85 |
TQEvent e(TQEvent::ThreadChange); |
| 84 |
TQApplication::sendEvent(this, &e); |
86 |
TQApplication::sendEvent(this, &e); |
| 85 |
|
87 |
|
|
|
88 |
#ifdef QT_THREAD_SUPPORT |
| 89 |
TQMutexLocker locker( d->childObjectListMutex ); |
| 90 |
#endif // QT_THREAD_SUPPORT |
| 91 |
|
| 86 |
if (childObjects) { |
92 |
if (childObjects) { |
| 87 |
TQObject *child; |
93 |
TQObject *child; |
| 88 |
TQObjectListIt it(*childObjects); |
94 |
TQObjectListIt it(*childObjects); |
|
Lines 97-102
void TQObject::setThreadObject_helper(TQThread *targetThread)
Link Here
|
| 97 |
{ |
103 |
{ |
| 98 |
d->ownThread = targetThread; |
104 |
d->ownThread = targetThread; |
| 99 |
|
105 |
|
|
|
106 |
#ifdef QT_THREAD_SUPPORT |
| 107 |
TQMutexLocker locker( d->childObjectListMutex ); |
| 108 |
#endif // QT_THREAD_SUPPORT |
| 109 |
|
| 100 |
if (childObjects) { |
110 |
if (childObjects) { |
| 101 |
TQObject *child; |
111 |
TQObject *child; |
| 102 |
TQObjectListIt it(*childObjects); |
112 |
TQObjectListIt it(*childObjects); |
|
Lines 123-129
void TQObject::setThreadObject_helper(TQThread *targetThread)
Link Here
|
| 123 |
*/ |
133 |
*/ |
| 124 |
void TQObject::moveToThread(TQThread *targetThread) |
134 |
void TQObject::moveToThread(TQThread *targetThread) |
| 125 |
{ |
135 |
{ |
|
|
136 |
#ifdef QT_THREAD_SUPPORT |
| 126 |
TQMutexLocker locker( TQApplication::tqt_mutex ); |
137 |
TQMutexLocker locker( TQApplication::tqt_mutex ); |
|
|
138 |
#endif // QT_THREAD_SUPPORT |
| 127 |
|
139 |
|
| 128 |
if (parentObj) { |
140 |
if (parentObj) { |
| 129 |
#if defined(QT_DEBUG) |
141 |
#if defined(QT_DEBUG) |
|
Lines 179-189
void TQObject::disableThreadPostedEvents(bool disable) {
Link Here
|
| 179 |
|
191 |
|
| 180 |
class TQSenderObjectList : public TQObjectList, public TQShared |
192 |
class TQSenderObjectList : public TQObjectList, public TQShared |
| 181 |
{ |
193 |
{ |
| 182 |
public: |
194 |
public: |
| 183 |
TQSenderObjectList() : currentSender( 0 ) { } |
195 |
TQSenderObjectList(); |
| 184 |
TQObject *currentSender; |
196 |
~TQSenderObjectList(); |
|
|
197 |
|
| 198 |
public: |
| 199 |
TQObject *currentSender; |
| 200 |
TQMutex *listMutex; |
| 185 |
}; |
201 |
}; |
| 186 |
|
202 |
|
|
|
203 |
TQSenderObjectList::TQSenderObjectList() : currentSender( 0 ) { |
| 204 |
listMutex = new TQMutex( TRUE ); |
| 205 |
} |
| 206 |
|
| 207 |
TQSenderObjectList::~TQSenderObjectList() { |
| 208 |
delete listMutex; |
| 209 |
} |
| 210 |
|
| 187 |
class Q_EXPORT TQMetaCallEvent : public TQEvent |
211 |
class Q_EXPORT TQMetaCallEvent : public TQEvent |
| 188 |
{ |
212 |
{ |
| 189 |
public: |
213 |
public: |
|
Lines 369-376
bool qKillTimer( TQObject *obj );
Link Here
|
| 369 |
static void removeObjFromList( TQObjectList *objList, const TQObject *obj, |
393 |
static void removeObjFromList( TQObjectList *objList, const TQObject *obj, |
| 370 |
bool single=FALSE ) |
394 |
bool single=FALSE ) |
| 371 |
{ |
395 |
{ |
| 372 |
if ( !objList ) |
396 |
if ( !objList ) { |
| 373 |
return; |
397 |
return; |
|
|
398 |
} |
| 374 |
int index = objList->findRef( obj ); |
399 |
int index = objList->findRef( obj ); |
| 375 |
while ( index >= 0 ) { |
400 |
while ( index >= 0 ) { |
| 376 |
objList->remove(); |
401 |
objList->remove(); |
|
Lines 585-592
TQObject::TQObject( TQObject *parent, const char *name )
Link Here
|
| 585 |
postedEvents( 0 ), // no events posted |
610 |
postedEvents( 0 ), // no events posted |
| 586 |
d( 0 ) |
611 |
d( 0 ) |
| 587 |
{ |
612 |
{ |
| 588 |
if ( !metaObj ) // will create object dict |
613 |
if ( !d ) { |
|
|
614 |
d = new TQObjectPrivate(0); |
| 615 |
} |
| 616 |
|
| 617 |
d->ownThread = TQThread::currentThreadObject(); |
| 618 |
d->senderObjectListMutex = new TQMutex( TRUE ); |
| 619 |
d->childObjectListMutex = new TQMutex( TRUE ); |
| 620 |
|
| 621 |
if ( !metaObj ) { // will create object dict |
| 589 |
(void) staticMetaObject(); |
622 |
(void) staticMetaObject(); |
|
|
623 |
} |
| 590 |
|
624 |
|
| 591 |
if ( parent ) { // add object to parent |
625 |
if ( parent ) { // add object to parent |
| 592 |
parent->insertChild( this ); |
626 |
parent->insertChild( this ); |
|
Lines 594-604
TQObject::TQObject( TQObject *parent, const char *name )
Link Here
|
| 594 |
insert_tree( this ); |
628 |
insert_tree( this ); |
| 595 |
isTree = TRUE; |
629 |
isTree = TRUE; |
| 596 |
} |
630 |
} |
| 597 |
|
|
|
| 598 |
if ( !d ) |
| 599 |
d = new TQObjectPrivate(0); |
| 600 |
|
| 601 |
d->ownThread = TQThread::currentThreadObject(); |
| 602 |
} |
631 |
} |
| 603 |
|
632 |
|
| 604 |
|
633 |
|
|
Lines 634-639
TQObject::~TQObject()
Link Here
|
| 634 |
blockSig = 0; // unblock signals to keep TQGuardedPtr happy |
663 |
blockSig = 0; // unblock signals to keep TQGuardedPtr happy |
| 635 |
emit destroyed( this ); |
664 |
emit destroyed( this ); |
| 636 |
emit destroyed(); |
665 |
emit destroyed(); |
|
|
666 |
|
| 637 |
if ( objname ) { |
667 |
if ( objname ) { |
| 638 |
delete [] (char*)objname; |
668 |
delete [] (char*)objname; |
| 639 |
} |
669 |
} |
|
Lines 669-676
TQObject::~TQObject()
Link Here
|
| 669 |
TQConnectionListIt cit(*clist); |
699 |
TQConnectionListIt cit(*clist); |
| 670 |
while( (c=cit.current()) ) { // for each connected slot... |
700 |
while( (c=cit.current()) ) { // for each connected slot... |
| 671 |
++cit; |
701 |
++cit; |
| 672 |
if ( (obj=c->object()) ) |
702 |
if ( (obj=c->object()) ) { |
| 673 |
removeObjFromList( obj->senderObjects, this ); |
703 |
removeObjFromList( obj->senderObjects, this ); |
|
|
704 |
} |
| 674 |
} |
705 |
} |
| 675 |
} |
706 |
} |
| 676 |
delete connections; |
707 |
delete connections; |
|
Lines 691-696
TQObject::~TQObject()
Link Here
|
| 691 |
delete childObjects; |
722 |
delete childObjects; |
| 692 |
} |
723 |
} |
| 693 |
|
724 |
|
|
|
725 |
#ifdef QT_THREAD_SUPPORT |
| 726 |
delete d->childObjectListMutex; |
| 727 |
delete d->senderObjectListMutex; |
| 728 |
#endif // QT_THREAD_SUPPORT |
| 729 |
|
| 694 |
delete d; |
730 |
delete d; |
| 695 |
} |
731 |
} |
| 696 |
|
732 |
|
|
Lines 985-995
bool TQObject::event( TQEvent *e )
Link Here
|
| 985 |
TQSenderObjectList* sol; |
1021 |
TQSenderObjectList* sol; |
| 986 |
TQObject* oldSender = 0; |
1022 |
TQObject* oldSender = 0; |
| 987 |
sol = senderObjects; |
1023 |
sol = senderObjects; |
|
|
1024 |
#ifdef QT_THREAD_SUPPORT |
| 1025 |
sol->listMutex->lock(); |
| 1026 |
#endif // QT_THREAD_SUPPORT |
| 988 |
if ( sol ) { |
1027 |
if ( sol ) { |
| 989 |
oldSender = sol->currentSender; |
1028 |
oldSender = sol->currentSender; |
| 990 |
sol->ref(); |
1029 |
sol->ref(); |
| 991 |
sol->currentSender = metaEvent->sender(); |
1030 |
sol->currentSender = metaEvent->sender(); |
| 992 |
} |
1031 |
} |
|
|
1032 |
#ifdef QT_THREAD_SUPPORT |
| 1033 |
sol->listMutex->unlock(); |
| 1034 |
#endif // QT_THREAD_SUPPORT |
| 993 |
TQUObject *o = metaEvent->data(); |
1035 |
TQUObject *o = metaEvent->data(); |
| 994 |
if (metaEvent->type() == TQMetaCallEvent::MetaCallEmit) { |
1036 |
if (metaEvent->type() == TQMetaCallEvent::MetaCallEmit) { |
| 995 |
tqt_emit( metaEvent->id(), o ); |
1037 |
tqt_emit( metaEvent->id(), o ); |
|
Lines 997-1008
bool TQObject::event( TQEvent *e )
Link Here
|
| 997 |
if (metaEvent->type() == TQMetaCallEvent::MetaCallInvoke) { |
1039 |
if (metaEvent->type() == TQMetaCallEvent::MetaCallInvoke) { |
| 998 |
tqt_invoke( metaEvent->id(), o ); |
1040 |
tqt_invoke( metaEvent->id(), o ); |
| 999 |
} |
1041 |
} |
|
|
1042 |
#ifdef QT_THREAD_SUPPORT |
| 1043 |
sol->listMutex->lock(); |
| 1044 |
#endif // QT_THREAD_SUPPORT |
| 1000 |
if (sol ) { |
1045 |
if (sol ) { |
| 1001 |
sol->currentSender = oldSender; |
1046 |
sol->currentSender = oldSender; |
| 1002 |
if ( sol->deref() ) { |
1047 |
if ( sol->deref() ) { |
|
|
1048 |
sol->listMutex->unlock(); |
| 1003 |
delete sol; |
1049 |
delete sol; |
|
|
1050 |
sol = NULL; |
| 1004 |
} |
1051 |
} |
| 1005 |
} |
1052 |
} |
|
|
1053 |
#ifdef QT_THREAD_SUPPORT |
| 1054 |
if (sol) sol->listMutex->unlock(); |
| 1055 |
#endif // QT_THREAD_SUPPORT |
| 1006 |
} |
1056 |
} |
| 1007 |
else { |
1057 |
else { |
| 1008 |
tqWarning("TQObject: Ignoring metacall event from non-owning thread"); |
1058 |
tqWarning("TQObject: Ignoring metacall event from non-owning thread"); |
|
Lines 1509-1514
TQConnectionList *TQObject::receivers( int signal ) const
Link Here
|
| 1509 |
|
1559 |
|
| 1510 |
void TQObject::insertChild( TQObject *obj ) |
1560 |
void TQObject::insertChild( TQObject *obj ) |
| 1511 |
{ |
1561 |
{ |
|
|
1562 |
#ifdef QT_THREAD_SUPPORT |
| 1563 |
TQMutexLocker locker( d->childObjectListMutex ); |
| 1564 |
#endif // QT_THREAD_SUPPORT |
| 1565 |
|
| 1512 |
if ( obj->isTree ) { |
1566 |
if ( obj->isTree ) { |
| 1513 |
remove_tree( obj ); |
1567 |
remove_tree( obj ); |
| 1514 |
obj->isTree = FALSE; |
1568 |
obj->isTree = FALSE; |
|
Lines 1551-1556
void TQObject::insertChild( TQObject *obj )
Link Here
|
| 1551 |
|
1605 |
|
| 1552 |
void TQObject::removeChild( TQObject *obj ) |
1606 |
void TQObject::removeChild( TQObject *obj ) |
| 1553 |
{ |
1607 |
{ |
|
|
1608 |
#ifdef QT_THREAD_SUPPORT |
| 1609 |
TQMutexLocker locker( d->childObjectListMutex ); |
| 1610 |
#endif // QT_THREAD_SUPPORT |
| 1611 |
|
| 1554 |
if ( childObjects && childObjects->removeRef(obj) ) { |
1612 |
if ( childObjects && childObjects->removeRef(obj) ) { |
| 1555 |
obj->parentObj = 0; |
1613 |
obj->parentObj = 0; |
| 1556 |
if ( !obj->wasDeleted ) { |
1614 |
if ( !obj->wasDeleted ) { |
|
Lines 2135-2143
void TQObject::connectInternal( const TQObject *sender, int signal_index, const
Link Here
|
| 2135 |
TQConnection *c = new TQConnection( r, member_index, rm ? rm->name : "qt_invoke", membcode ); |
2193 |
TQConnection *c = new TQConnection( r, member_index, rm ? rm->name : "qt_invoke", membcode ); |
| 2136 |
TQ_CHECK_PTR( c ); |
2194 |
TQ_CHECK_PTR( c ); |
| 2137 |
clist->append( c ); |
2195 |
clist->append( c ); |
| 2138 |
if ( !r->senderObjects ) // create list of senders |
2196 |
if ( !r->senderObjects ) { // create list of senders |
|
|
2197 |
#ifdef QT_THREAD_SUPPORT |
| 2198 |
r->d->senderObjectListMutex->lock(); |
| 2199 |
#endif // QT_THREAD_SUPPORT |
| 2139 |
r->senderObjects = new TQSenderObjectList; |
2200 |
r->senderObjects = new TQSenderObjectList; |
|
|
2201 |
#ifdef QT_THREAD_SUPPORT |
| 2202 |
r->senderObjects->listMutex->lock(); |
| 2203 |
r->d->senderObjectListMutex->unlock(); |
| 2204 |
#endif // QT_THREAD_SUPPORT |
| 2205 |
} |
| 2206 |
else { |
| 2207 |
#ifdef QT_THREAD_SUPPORT |
| 2208 |
r->senderObjects->listMutex->lock(); |
| 2209 |
#endif // QT_THREAD_SUPPORT |
| 2210 |
} |
| 2140 |
r->senderObjects->append( s ); // add sender to list |
2211 |
r->senderObjects->append( s ); // add sender to list |
|
|
2212 |
#ifdef QT_THREAD_SUPPORT |
| 2213 |
r->senderObjects->listMutex->unlock(); |
| 2214 |
#endif // QT_THREAD_SUPPORT |
| 2141 |
} |
2215 |
} |
| 2142 |
|
2216 |
|
| 2143 |
|
2217 |
|
|
Lines 2343-2355
bool TQObject::disconnectInternal( const TQObject *sender, int signal_index,
Link Here
|
| 2343 |
c = clist->first(); |
2417 |
c = clist->first(); |
| 2344 |
while ( c ) { // for all receivers... |
2418 |
while ( c ) { // for all receivers... |
| 2345 |
if ( r == 0 ) { // remove all receivers |
2419 |
if ( r == 0 ) { // remove all receivers |
|
|
2420 |
#ifdef QT_THREAD_SUPPORT |
| 2421 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock(); |
| 2422 |
#endif // QT_THREAD_SUPPORT |
| 2346 |
removeObjFromList( c->object()->senderObjects, s ); |
2423 |
removeObjFromList( c->object()->senderObjects, s ); |
|
|
2424 |
#ifdef QT_THREAD_SUPPORT |
| 2425 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock(); |
| 2426 |
#endif // QT_THREAD_SUPPORT |
| 2347 |
success = TRUE; |
2427 |
success = TRUE; |
| 2348 |
c = clist->next(); |
2428 |
c = clist->next(); |
| 2349 |
} else if ( r == c->object() && |
2429 |
} else if ( r == c->object() && |
| 2350 |
( (member_index == -1) || |
2430 |
( (member_index == -1) || |
| 2351 |
((member_index == c->member()) && (c->memberType() == membcode)) ) ) { |
2431 |
((member_index == c->member()) && (c->memberType() == membcode)) ) ) { |
|
|
2432 |
#ifdef QT_THREAD_SUPPORT |
| 2433 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock(); |
| 2434 |
#endif // QT_THREAD_SUPPORT |
| 2352 |
removeObjFromList( c->object()->senderObjects, s, TRUE ); |
2435 |
removeObjFromList( c->object()->senderObjects, s, TRUE ); |
|
|
2436 |
#ifdef QT_THREAD_SUPPORT |
| 2437 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock(); |
| 2438 |
#endif // QT_THREAD_SUPPORT |
| 2353 |
success = TRUE; |
2439 |
success = TRUE; |
| 2354 |
clist->remove(); |
2440 |
clist->remove(); |
| 2355 |
c = clist->current(); |
2441 |
c = clist->current(); |
|
Lines 2368-2380
bool TQObject::disconnectInternal( const TQObject *sender, int signal_index,
Link Here
|
| 2368 |
c = clist->first(); |
2454 |
c = clist->first(); |
| 2369 |
while ( c ) { // for all receivers... |
2455 |
while ( c ) { // for all receivers... |
| 2370 |
if ( r == 0 ) { // remove all receivers |
2456 |
if ( r == 0 ) { // remove all receivers |
|
|
2457 |
#ifdef QT_THREAD_SUPPORT |
| 2458 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock(); |
| 2459 |
#endif // QT_THREAD_SUPPORT |
| 2371 |
removeObjFromList( c->object()->senderObjects, s, TRUE ); |
2460 |
removeObjFromList( c->object()->senderObjects, s, TRUE ); |
|
|
2461 |
#ifdef QT_THREAD_SUPPORT |
| 2462 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock(); |
| 2463 |
#endif // QT_THREAD_SUPPORT |
| 2372 |
success = TRUE; |
2464 |
success = TRUE; |
| 2373 |
c = clist->next(); |
2465 |
c = clist->next(); |
| 2374 |
} else if ( r == c->object() && |
2466 |
} else if ( r == c->object() && |
| 2375 |
( (member_index == -1) || |
2467 |
( (member_index == -1) || |
| 2376 |
((member_index == c->member()) && (c->memberType() == membcode)) ) ) { |
2468 |
((member_index == c->member()) && (c->memberType() == membcode)) ) ) { |
|
|
2469 |
#ifdef QT_THREAD_SUPPORT |
| 2470 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock(); |
| 2471 |
#endif // QT_THREAD_SUPPORT |
| 2377 |
removeObjFromList( c->object()->senderObjects, s, TRUE ); |
2472 |
removeObjFromList( c->object()->senderObjects, s, TRUE ); |
|
|
2473 |
#ifdef QT_THREAD_SUPPORT |
| 2474 |
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock(); |
| 2475 |
#endif // QT_THREAD_SUPPORT |
| 2378 |
success = TRUE; |
2476 |
success = TRUE; |
| 2379 |
clist->remove(); |
2477 |
clist->remove(); |
| 2380 |
c = clist->current(); |
2478 |
c = clist->current(); |
|
Lines 2382-2389
bool TQObject::disconnectInternal( const TQObject *sender, int signal_index,
Link Here
|
| 2382 |
c = clist->next(); |
2480 |
c = clist->next(); |
| 2383 |
} |
2481 |
} |
| 2384 |
} |
2482 |
} |
| 2385 |
if ( r == 0 ) // disconnect all receivers |
2483 |
if ( r == 0 ) { // disconnect all receivers |
| 2386 |
s->connections->insert( signal_index, 0 ); |
2484 |
s->connections->insert( signal_index, 0 ); |
|
|
2485 |
} |
| 2387 |
} |
2486 |
} |
| 2388 |
return success; |
2487 |
return success; |
| 2389 |
} |
2488 |
} |
|
Lines 2578-2588
void TQObject::activate_signal( int signal )
Link Here
|
| 2578 |
} |
2677 |
} |
| 2579 |
#endif |
2678 |
#endif |
| 2580 |
|
2679 |
|
| 2581 |
if ( !connections || signalsBlocked() || signal < 0 ) |
2680 |
if ( !connections || signalsBlocked() || signal < 0 ) { |
| 2582 |
return; |
2681 |
return; |
|
|
2682 |
} |
| 2583 |
TQConnectionList *clist = connections->at( signal ); |
2683 |
TQConnectionList *clist = connections->at( signal ); |
| 2584 |
if ( !clist ) |
2684 |
if ( !clist ) { |
| 2585 |
return; |
2685 |
return; |
|
|
2686 |
} |
| 2586 |
TQUObject o[1]; |
2687 |
TQUObject o[1]; |
| 2587 |
o[0].isLastObject = true; |
2688 |
o[0].isLastObject = true; |
| 2588 |
activate_signal( clist, o ); |
2689 |
activate_signal( clist, o ); |
|
Lines 2592-2603
void TQObject::activate_signal( int signal )
Link Here
|
| 2592 |
|
2693 |
|
| 2593 |
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o ) |
2694 |
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o ) |
| 2594 |
{ |
2695 |
{ |
| 2595 |
if ( !clist ) |
2696 |
if ( !clist ) { |
| 2596 |
return; |
2697 |
return; |
|
|
2698 |
} |
| 2597 |
|
2699 |
|
| 2598 |
#ifndef QT_NO_PRELIMINARY_SIGNAL_SPY |
2700 |
#ifndef QT_NO_PRELIMINARY_SIGNAL_SPY |
| 2599 |
if ( tqt_preliminary_signal_spy ) |
2701 |
if ( tqt_preliminary_signal_spy ) { |
| 2600 |
qt_spy_signal( this, connections->findRef( clist), o ); |
2702 |
qt_spy_signal( this, connections->findRef( clist), o ); |
|
|
2703 |
} |
| 2601 |
#endif |
2704 |
#endif |
| 2602 |
|
2705 |
|
| 2603 |
const TQThread *currentThread = TQThread::currentThreadObject(); |
2706 |
const TQThread *currentThread = TQThread::currentThreadObject(); |
|
Lines 2610-2615
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2610 |
c = clist->first(); |
2713 |
c = clist->first(); |
| 2611 |
object = c->object(); |
2714 |
object = c->object(); |
| 2612 |
sol = object->senderObjects; |
2715 |
sol = object->senderObjects; |
|
|
2716 |
#ifdef QT_THREAD_SUPPORT |
| 2717 |
sol->listMutex->lock(); |
| 2718 |
#endif // QT_THREAD_SUPPORT |
| 2613 |
if ( sol ) { |
2719 |
if ( sol ) { |
| 2614 |
oldSender = sol->currentSender; |
2720 |
oldSender = sol->currentSender; |
| 2615 |
sol->ref(); |
2721 |
sol->ref(); |
|
Lines 2617-2623
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2617 |
} |
2723 |
} |
| 2618 |
if ( c->memberType() == TQSIGNAL_CODE ) { |
2724 |
if ( c->memberType() == TQSIGNAL_CODE ) { |
| 2619 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
2725 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
|
|
2726 |
#ifdef QT_THREAD_SUPPORT |
| 2727 |
sol->listMutex->unlock(); |
| 2728 |
#endif // QT_THREAD_SUPPORT |
| 2620 |
object->tqt_emit( c->member(), o ); |
2729 |
object->tqt_emit( c->member(), o ); |
|
|
2730 |
#ifdef QT_THREAD_SUPPORT |
| 2731 |
sol->listMutex->lock(); |
| 2732 |
#endif // QT_THREAD_SUPPORT |
| 2621 |
} |
2733 |
} |
| 2622 |
else { |
2734 |
else { |
| 2623 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
2735 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
|
Lines 2627-2633
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2627 |
} |
2739 |
} |
| 2628 |
else { |
2740 |
else { |
| 2629 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
2741 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
|
|
2742 |
#ifdef QT_THREAD_SUPPORT |
| 2743 |
sol->listMutex->unlock(); |
| 2744 |
#endif // QT_THREAD_SUPPORT |
| 2630 |
object->tqt_invoke( c->member(), o ); |
2745 |
object->tqt_invoke( c->member(), o ); |
|
|
2746 |
#ifdef QT_THREAD_SUPPORT |
| 2747 |
sol->listMutex->lock(); |
| 2748 |
#endif // QT_THREAD_SUPPORT |
| 2631 |
} |
2749 |
} |
| 2632 |
else { |
2750 |
else { |
| 2633 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
2751 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
|
Lines 2637-2645
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2637 |
} |
2755 |
} |
| 2638 |
if ( sol ) { |
2756 |
if ( sol ) { |
| 2639 |
sol->currentSender = oldSender; |
2757 |
sol->currentSender = oldSender; |
| 2640 |
if ( sol->deref() ) |
2758 |
if ( sol->deref() ) { |
|
|
2759 |
sol->listMutex->unlock(); |
| 2641 |
delete sol; |
2760 |
delete sol; |
|
|
2761 |
sol = NULL; |
| 2762 |
} |
| 2642 |
} |
2763 |
} |
|
|
2764 |
#ifdef QT_THREAD_SUPPORT |
| 2765 |
if (sol) sol->listMutex->unlock(); |
| 2766 |
#endif // QT_THREAD_SUPPORT |
| 2643 |
} else { |
2767 |
} else { |
| 2644 |
TQConnection *cd = 0; |
2768 |
TQConnection *cd = 0; |
| 2645 |
TQConnectionListIt it(*clist); |
2769 |
TQConnectionListIt it(*clist); |
|
Lines 2650-2655
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2650 |
cd = c; |
2774 |
cd = c; |
| 2651 |
object = c->object(); |
2775 |
object = c->object(); |
| 2652 |
sol = object->senderObjects; |
2776 |
sol = object->senderObjects; |
|
|
2777 |
#ifdef QT_THREAD_SUPPORT |
| 2778 |
sol->listMutex->lock(); |
| 2779 |
#endif // QT_THREAD_SUPPORT |
| 2653 |
if ( sol ) { |
2780 |
if ( sol ) { |
| 2654 |
oldSender = sol->currentSender; |
2781 |
oldSender = sol->currentSender; |
| 2655 |
sol->ref(); |
2782 |
sol->ref(); |
|
Lines 2657-2663
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2657 |
} |
2784 |
} |
| 2658 |
if ( c->memberType() == TQSIGNAL_CODE ) { |
2785 |
if ( c->memberType() == TQSIGNAL_CODE ) { |
| 2659 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
2786 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
|
|
2787 |
#ifdef QT_THREAD_SUPPORT |
| 2788 |
sol->listMutex->unlock(); |
| 2789 |
#endif // QT_THREAD_SUPPORT |
| 2660 |
object->tqt_emit( c->member(), o ); |
2790 |
object->tqt_emit( c->member(), o ); |
|
|
2791 |
#ifdef QT_THREAD_SUPPORT |
| 2792 |
sol->listMutex->lock(); |
| 2793 |
#endif // QT_THREAD_SUPPORT |
| 2661 |
} |
2794 |
} |
| 2662 |
else { |
2795 |
else { |
| 2663 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
2796 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
|
Lines 2667-2673
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2667 |
} |
2800 |
} |
| 2668 |
else { |
2801 |
else { |
| 2669 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
2802 |
if ((d->disableThreadPostedEvents) || (object->d->ownThread == currentThread)) { |
|
|
2803 |
#ifdef QT_THREAD_SUPPORT |
| 2804 |
sol->listMutex->unlock(); |
| 2805 |
#endif // QT_THREAD_SUPPORT |
| 2670 |
object->tqt_invoke( c->member(), o ); |
2806 |
object->tqt_invoke( c->member(), o ); |
|
|
2807 |
#ifdef QT_THREAD_SUPPORT |
| 2808 |
sol->listMutex->lock(); |
| 2809 |
#endif // QT_THREAD_SUPPORT |
| 2671 |
} |
2810 |
} |
| 2672 |
else { |
2811 |
else { |
| 2673 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
2812 |
if (object->d->ownThread && !object->d->ownThread->finished()) { |
|
Lines 2677-2685
void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
Link Here
|
| 2677 |
} |
2816 |
} |
| 2678 |
if (sol ) { |
2817 |
if (sol ) { |
| 2679 |
sol->currentSender = oldSender; |
2818 |
sol->currentSender = oldSender; |
| 2680 |
if ( sol->deref() ) |
2819 |
if ( sol->deref() ) { |
|
|
2820 |
sol->listMutex->unlock(); |
| 2681 |
delete sol; |
2821 |
delete sol; |
|
|
2822 |
sol = NULL; |
| 2823 |
} |
| 2682 |
} |
2824 |
} |
|
|
2825 |
#ifdef QT_THREAD_SUPPORT |
| 2826 |
if (sol) sol->listMutex->unlock(); |
| 2827 |
#endif // QT_THREAD_SUPPORT |
| 2683 |
} |
2828 |
} |
| 2684 |
} |
2829 |
} |
| 2685 |
} |
2830 |
} |
|
Lines 2818-2823
void TQObject::dumpObjectTree()
Link Here
|
| 2818 |
|
2963 |
|
| 2819 |
void TQObject::dumpObjectInfo() |
2964 |
void TQObject::dumpObjectInfo() |
| 2820 |
{ |
2965 |
{ |
|
|
2966 |
#ifdef QT_THREAD_SUPPORT |
| 2967 |
TQMutexLocker locker( d->senderObjectListMutex ); |
| 2968 |
#endif // QT_THREAD_SUPPORT |
| 2969 |
|
| 2821 |
#if defined(QT_DEBUG) |
2970 |
#if defined(QT_DEBUG) |
| 2822 |
tqDebug( "OBJECT %s::%s", className(), name( "unnamed" ) ); |
2971 |
tqDebug( "OBJECT %s::%s", className(), name( "unnamed" ) ); |
| 2823 |
int n = 0; |
2972 |
int n = 0; |
|
Lines 2852-2859
void TQObject::dumpObjectInfo()
Link Here
|
| 2852 |
sender = senderObjects->next(); |
3001 |
sender = senderObjects->next(); |
| 2853 |
} |
3002 |
} |
| 2854 |
} |
3003 |
} |
| 2855 |
if ( n == 0 ) |
3004 |
if ( n == 0 ) { |
| 2856 |
tqDebug( "\t<None>" ); |
3005 |
tqDebug( "\t<None>" ); |
|
|
3006 |
} |
| 2857 |
#endif |
3007 |
#endif |
| 2858 |
} |
3008 |
} |
| 2859 |
|
3009 |
|