summaryrefslogtreecommitdiffstats
path: root/src/kernel/qobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/qobject.cpp')
-rw-r--r--src/kernel/qobject.cpp164
1 files changed, 79 insertions, 85 deletions
diff --git a/src/kernel/qobject.cpp b/src/kernel/qobject.cpp
index 1e6d55836..09a2b6031 100644
--- a/src/kernel/qobject.cpp
+++ b/src/kernel/qobject.cpp
@@ -52,7 +52,7 @@
// TQStyleControlElementData
#include "ntqstyle.h"
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
#include "ntqmutex.h"
#include <private/qmutexpool_p.h>
#include "ntqthread.h"
@@ -105,7 +105,7 @@ class TQObjectPrivate {
public:
#ifndef TQT_NO_USERDATA
TQObjectPrivate( uint s ) : TQPtrVector<TQObjectUserData>(s) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
ownThread = NULL;
disableThreadPostedEvents = false;
#endif
@@ -118,7 +118,7 @@ public:
delete controlElementDataPrivate;
}
#endif
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
TQThread* ownThread;
TQMutex* senderObjectListMutex;
TQMutex* childObjectListMutex;
@@ -142,16 +142,14 @@ TQStyleControlElementDataPrivate* TQObject::controlElementDataPrivateObject() {
return d->controlElementDataPrivate;
}
-#if defined(TQT_THREAD_SUPPORT)
+#ifndef TQT_NO_THREAD
void TQObject::moveToThread_helper(TQThread *targetThread)
{
TQEvent e(TQEvent::ThreadChange);
TQApplication::sendEvent(this, &e);
-#ifdef TQT_THREAD_SUPPORT
TQMutexLocker locker( d->childObjectListMutex );
-#endif // TQT_THREAD_SUPPORT
if (childObjects) {
TQObject *child;
@@ -167,9 +165,7 @@ void TQObject::setThreadObject_helper(TQThread *targetThread)
{
d->ownThread = targetThread;
-#ifdef TQT_THREAD_SUPPORT
TQMutexLocker locker( d->childObjectListMutex );
-#endif // TQT_THREAD_SUPPORT
if (childObjects) {
TQObject *child;
@@ -197,9 +193,7 @@ void TQObject::setThreadObject_helper(TQThread *targetThread)
*/
void TQObject::moveToThread(TQThread *targetThread)
{
-#ifdef TQT_THREAD_SUPPORT
TQMutexLocker locker( TQApplication::tqt_mutex );
-#endif // TQT_THREAD_SUPPORT
if (parentObj) {
#if defined(QT_DEBUG)
@@ -252,7 +246,7 @@ void TQObject::disableThreadPostedEvents(bool disable) {
d->disableThreadPostedEvents = disable;
}
-#endif // defined(TQT_THREAD_SUPPORT)
+#endif // TQT_NO_THREAD)
class TQSenderObjectList : public TQObjectList, public TQShared
{
@@ -262,19 +256,19 @@ class TQSenderObjectList : public TQObjectList, public TQShared
public:
TQObject *currentSender;
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
TQMutex *listMutex;
#endif
};
TQSenderObjectList::TQSenderObjectList() : currentSender( 0 ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
listMutex = new TQMutex( TRUE );
#endif
}
TQSenderObjectList::~TQSenderObjectList() {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
delete listMutex;
#endif
}
@@ -509,7 +503,7 @@ void *tqt_find_obj_child( TQObject *parent, const char *type, const char *name )
return 0;
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
/*!
Returns a pointer to the TQThread* associated with
@@ -548,12 +542,12 @@ static void qt_spy_signal( TQObject* sender, int signal, TQUObject* o )
s.sprintf( "%s_%s", mo->className(), sigData->name );
int slot = tqt_preliminary_signal_spy->metaObject()->findSlot( s, TRUE );
if ( slot >= 0 ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
// protect access to qt_spy_signal_sender
void * const address = &qt_spy_signal_sender;
TQMutexLocker locker( tqt_global_mutexpool ?
tqt_global_mutexpool->get( address ) : 0 );
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
TQObject* old_sender = qt_spy_signal_sender;
qt_spy_signal_sender = sender;
@@ -572,7 +566,7 @@ static void qt_spy_signal( TQObject* sender, int signal, TQUObject* o )
static TQObjectList* object_trees = 0;
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
static TQMutex *obj_trees_mutex = 0;
#endif
@@ -580,7 +574,7 @@ static void cleanup_object_trees()
{
delete object_trees;
object_trees = 0;
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
delete obj_trees_mutex;
obj_trees_mutex = 0;
#endif
@@ -594,7 +588,7 @@ static void ensure_object_trees()
static void insert_tree( TQObject* obj )
{
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if ( !obj_trees_mutex )
obj_trees_mutex = new TQMutex();
TQMutexLocker locker( obj_trees_mutex );
@@ -607,7 +601,7 @@ static void insert_tree( TQObject* obj )
static void remove_tree( TQObject* obj )
{
if ( object_trees ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
TQMutexLocker locker( obj_trees_mutex );
#endif
object_trees->removeRef( obj );
@@ -685,7 +679,7 @@ TQObject::TQObject( TQObject *parent, const char *name )
d = new TQObjectPrivate(0);
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
d->ownThread = TQThread::currentThreadObject();
d->senderObjectListMutex = new TQMutex( TRUE );
d->childObjectListMutex = new TQMutex( TRUE );
@@ -777,7 +771,7 @@ TQObject::~TQObject()
while( (c=cit.current()) ) { // for each connected slot...
++cit;
if ( (obj=c->object()) ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQ_NO_THREAD
TQMutexLocker locker( obj->senderObjects->listMutex );
#endif
removeObjFromList( obj->senderObjects, this );
@@ -804,10 +798,10 @@ TQObject::~TQObject()
delete childObjects;
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
delete d->childObjectListMutex;
delete d->senderObjectListMutex;
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
delete d;
}
@@ -1099,25 +1093,25 @@ bool TQObject::event( TQEvent *e )
{
TQMetaCallEvent* metaEvent = dynamic_cast<TQMetaCallEvent*>(e);
if (metaEvent) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if ((d->disableThreadPostedEvents)
|| (d->ownThread == TQThread::currentThreadObject()))
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
{
TQSenderObjectList* sol;
TQObject* oldSender = 0;
sol = senderObjects;
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
sol->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
if ( sol ) {
oldSender = sol->currentSender;
sol->ref();
sol->currentSender = metaEvent->sender();
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
sol->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
TQUObject *o = metaEvent->data();
if (metaEvent->type() == TQMetaCallEvent::MetaCallEmit) {
tqt_emit( metaEvent->id(), o );
@@ -1125,28 +1119,28 @@ bool TQObject::event( TQEvent *e )
if (metaEvent->type() == TQMetaCallEvent::MetaCallInvoke) {
tqt_invoke( metaEvent->id(), o );
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
sol->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
if (sol ) {
sol->currentSender = oldSender;
if ( sol->deref() ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
sol->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
delete sol;
sol = NULL;
}
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (sol) sol->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
else {
tqWarning("TQObject: Ignoring metacall event from non-owning thread");
}
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
destroyDeepCopiedTQUObjectArray(metaEvent->data());
}
}
@@ -1648,9 +1642,9 @@ TQConnectionList *TQObject::receivers( int signal ) const
void TQObject::insertChild( TQObject *obj )
{
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
TQMutexLocker locker( d->childObjectListMutex );
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
if ( obj->isTree ) {
remove_tree( obj );
@@ -1694,9 +1688,9 @@ void TQObject::insertChild( TQObject *obj )
void TQObject::removeChild( TQObject *obj )
{
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
TQMutexLocker locker( d->childObjectListMutex );
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
if ( childObjects && childObjects->removeRef(obj) ) {
obj->parentObj = 0;
@@ -1934,12 +1928,12 @@ const TQObject *TQObject::sender()
{
#ifndef TQT_NO_PRELIMINARY_SIGNAL_SPY
if ( this == tqt_preliminary_signal_spy ) {
-# ifdef TQT_THREAD_SUPPORT
+# ifndef TQT_NO_THREAD
// protect access to qt_spy_signal_sender
void * const address = &qt_spy_signal_sender;
TQMutexLocker locker( tqt_global_mutexpool ?
tqt_global_mutexpool->get( address ) : 0 );
-# endif // TQT_THREAD_SUPPORT
+# endif // TQT_NO_THREAD
return qt_spy_signal_sender;
}
#endif
@@ -2282,24 +2276,24 @@ void TQObject::connectInternal( const TQObject *sender, int signal_index, const
TQ_CHECK_PTR( c );
clist->append( c );
if ( !r->senderObjects ) { // create list of senders
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
r->d->senderObjectListMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
r->senderObjects = new TQSenderObjectList;
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
r->senderObjects->listMutex->lock();
r->d->senderObjectListMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
else {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
r->senderObjects->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
r->senderObjects->append( s ); // add sender to list
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
r->senderObjects->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
@@ -2505,25 +2499,25 @@ bool TQObject::disconnectInternal( const TQObject *sender, int signal_index,
c = clist->first();
while ( c ) { // for all receivers...
if ( r == 0 ) { // remove all receivers
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
removeObjFromList( c->object()->senderObjects, s );
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
success = TRUE;
c = clist->next();
} else if ( r == c->object() &&
( (member_index == -1) ||
((member_index == c->member()) && (c->memberType() == membcode)) ) ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
removeObjFromList( c->object()->senderObjects, s, TRUE );
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
success = TRUE;
clist->remove();
c = clist->current();
@@ -2542,25 +2536,25 @@ bool TQObject::disconnectInternal( const TQObject *sender, int signal_index,
c = clist->first();
while ( c ) { // for all receivers...
if ( r == 0 ) { // remove all receivers
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
removeObjFromList( c->object()->senderObjects, s, TRUE );
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
success = TRUE;
c = clist->next();
} else if ( r == c->object() &&
( (member_index == -1) ||
((member_index == c->member()) && (c->memberType() == membcode)) ) ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
removeObjFromList( c->object()->senderObjects, s, TRUE );
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (c->object()->senderObjects) c->object()->senderObjects->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
success = TRUE;
clist->remove();
c = clist->current();
@@ -2791,10 +2785,10 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
}
#endif
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
// NOTE currentThread could be NULL if the current thread was not started using the TQThread API
const TQThread *currentThread = TQThread::currentThreadObject();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
// Some slots are deleting the sender. It's not that great, but it's widespread enough,
// so we can't track all such issues. So, we have to workaround this somehow.
@@ -2813,15 +2807,15 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
TQObject *oldSender;
TQSenderObjectList* sol = object->senderObjects;
if ( sol ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
sol->listMutex->lock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
oldSender = sol->currentSender;
sol->ref();
sol->currentSender = this;
}
if ( c->memberType() == TQ_SIGNAL_CODE ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if ((d->disableThreadPostedEvents) ||
(object->d->disableThreadPostedEvents) ||
(currentThread && currentThread->threadPostedEventsDisabled()) ||
@@ -2839,12 +2833,12 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
TQApplication::postEvent(object, new TQMetaCallEvent(c->member(), this, deepCopyTQUObjectArray(o), TQMetaCallEvent::MetaCallEmit));
}
}
-#else // !TQT_THREAD_SUPPORT
+#else // !TQT_NO_THREAD
object->tqt_emit( c->member(), o );
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
else {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if ((d->disableThreadPostedEvents) ||
(object->d->disableThreadPostedEvents) ||
(currentThread && currentThread->threadPostedEventsDisabled()) ||
@@ -2862,23 +2856,23 @@ void TQObject::activate_signal( TQConnectionList *clist, TQUObject *o )
TQApplication::postEvent(object, new TQMetaCallEvent(c->member(), this, deepCopyTQUObjectArray(o), TQMetaCallEvent::MetaCallInvoke));
}
}
-#else // !TQT_THREAD_SUPPORT
+#else // !TQT_NO_THREAD
object->tqt_invoke( c->member(), o );
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
if ( sol ) {
sol->currentSender = oldSender;
if ( sol->deref() ) {
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
sol->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
delete sol;
sol = NULL;
}
}
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
if (sol) sol->listMutex->unlock();
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
}
// use a copy of the pointer here as at this point this might be already deleted; no pun intended ;)
@@ -3021,9 +3015,9 @@ void TQObject::dumpObjectTree()
void TQObject::dumpObjectInfo()
{
-#ifdef TQT_THREAD_SUPPORT
+#ifndef TQT_NO_THREAD
TQMutexLocker locker( d->senderObjectListMutex );
-#endif // TQT_THREAD_SUPPORT
+#endif // TQT_NO_THREAD
#if defined(QT_DEBUG)
tqDebug( "OBJECT %s::%s", className(), name( "unnamed" ) );