void QCopChannel::init(const QString& channel) { d = new QCopChannelPrivate; d->channel = channel; if (!qApp) { qFatal("QCopChannel: Must construct a QApplication " "before QCopChannel"); return; } { QMutexLocker locker(qcopClientMapMutex()); if (!qcopClientMap) qcopClientMap = new QCopClientMap; // do we need a new channel list ? QCopClientMap::Iterator it = qcopClientMap->find(channel); if (it != qcopClientMap->end()) { it.value().append(this); return; } it = qcopClientMap->insert(channel, QList< QPointer<QCopChannel> >()); it.value().append(QPointer<QCopChannel>(this)); } // inform server about this channel if ( !clientConnection ) clientConnection = new QCopX11Client(); clientConnection->registerChannel(channel); }
QCopChannel::QCopChannel( const QCString& channel, QObject* parent, const char* name ) : QObject( parent, name ) { d = new QCopChannelPrivate; d->channel = channel; if ( !qt_fbdpy ) { qFatal( "QCopChannel: Must construct a QApplication " "before QCopChannel" ); return; } if ( !qcopClientMap ) qcopClientMap = new QCopClientMap; // do we need a new channel list ? QCopClientMap::Iterator it = qcopClientMap->find( channel ); if ( it != qcopClientMap->end() ) { it.data().append( this ); return; } it = qcopClientMap->insert( channel, QList<QCopChannel>() ); it.data().append( this ); // inform server about this channel qt_fbdpy->registerChannel( channel ); }
/*! \internal Resend all channel registrations */ void QCopChannel::reregisterAll() { if(qcopClientMap) for(QCopClientMap::Iterator iter = qcopClientMap->begin(); iter != qcopClientMap->end(); ++iter) qt_fbdpy->registerChannel(iter.key()); }
/*! \internal Resend all channel registrations */ void QCopChannel::reregisterAll() { if(qcopClientMap) { for(QCopClientMap::Iterator iter = qcopClientMap->begin(); iter != qcopClientMap->end(); ++iter) { if ( !clientConnection ) clientConnection = new QCopX11Client(); clientConnection->registerChannel(iter.key()); } } }
QCopChannel::~QCopChannel() { QMutexLocker locker(qcopClientMapMutex()); QCopClientMap::Iterator it = qcopClientMap->find(d->channel); Q_ASSERT(it != qcopClientMap->end()); it.value().removeAll(this); // still any clients connected locally ? if (it.value().isEmpty()) { if (clientConnection) clientConnection->detachChannel(d->channel); qcopClientMap->remove(d->channel); } delete d; }
QCopChannel::~QCopChannel() { QCopClientMap::Iterator it = qcopClientMap->find( d->channel ); ASSERT( it != qcopClientMap->end() ); it.data().removeRef( this ); // still any clients connected locally ? if ( it.data().isEmpty() ) { QByteArray data; QDataStream s( data, IO_WriteOnly ); s << d->channel; if ( qt_fbdpy ) send( "", "detach()", data ); qcopClientMap->remove( d->channel ); } delete d; }
QCopChannel::~QCopChannel() { QMutexLocker locker(qcopClientMapMutex()); QCopClientMap::Iterator it = qcopClientMap->find(d->channel); Q_ASSERT(it != qcopClientMap->end()); it.value().removeAll(this); // still any clients connected locally ? if (it.value().isEmpty()) { QByteArray data; QDataStream s(&data, QIODevice::WriteOnly); s << d->channel; if (qt_fbdpy) send(QLatin1String(""), QLatin1String("detach()"), data); qcopClientMap->remove(d->channel); } delete d; }