author | zecke <zecke> | 2004-11-03 23:04:36 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-11-03 23:04:36 (UTC) |
commit | cd2d50799e087fad5b56df9d7fe9aa572a313e64 (patch) (side-by-side diff) | |
tree | 561df7f2fc260c9b4d3c8d9055698201e47939d3 | |
parent | a6adcd3869b9c9c7548290ea686bc4e78ed62fc3 (diff) | |
download | opie-cd2d50799e087fad5b56df9d7fe9aa572a313e64.zip opie-cd2d50799e087fad5b56df9d7fe9aa572a313e64.tar.gz opie-cd2d50799e087fad5b56df9d7fe9aa572a313e64.tar.bz2 |
-SIMpad crashes on QObject::connect() of the QCopChannel
-Luckily (I'm a cheater) OApplication can emit the signal for us
-Event more lucky, qpe and every quicklaunchable application
has a OApplication instance... so the signal is almost available
everywhere
-do not call initButtons from reloadButtonMappings if d->m_buttons
exists
-rw-r--r-- | libopie2/opiecore/device/odevice.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp index 67cae1c..e57cdef 100644 --- a/libopie2/opiecore/device/odevice.cpp +++ b/libopie2/opiecore/device/odevice.cpp @@ -599,101 +599,101 @@ bool ODevice::setCurrentCpuFrequency(uint index) const int count = sprintf(writeCommand, "%s\n", freq); int res = (::write(fd, writeCommand, count) != -1); ::close(fd); return res; } return false; } /** * @return a list of hardware buttons */ const QValueList <ODeviceButton> &ODevice::buttons() { initButtons(); return *d->m_buttons; } /** * @return The amount of time that would count as a hold */ uint ODevice::buttonHoldTime() const { return d->m_holdtime; } /** * This method return a ODeviceButton for a key code * or 0 if no special hardware button is available for the device * * @return The devicebutton or 0l * @see ODeviceButton */ const ODeviceButton *ODevice::buttonForKeycode ( ushort code ) { initButtons(); for ( QValueListConstIterator<ODeviceButton> it = d->m_buttons->begin(); it != d->m_buttons->end(); ++it ) { if ( (*it). keycode() == code ) return &(*it); } return 0; } void ODevice::reloadButtonMapping() { - initButtons(); + if(!d->m_buttons) + initButtons(); if(!d->m_initializedButtonQcop) { - QCopChannel *chan = new QCopChannel("QPE/System", this, "ODevice button channel"); - connect(chan,SIGNAL(received(const QCString&,const QByteArray&)), + connect(qApp,SIGNAL(systemMessageSignal(const QCString&,const QByteArray&)), this,SLOT(systemMessage(const QCString&,const QByteArray&))); d->m_initializedButtonQcop = true; } Config cfg ( "ButtonSettings" ); for ( uint i = 0; i < d->m_buttons->count(); i++ ) { ODeviceButton &b = ( *d->m_buttons ) [i]; QString group = "Button" + QString::number ( i ); QCString pch, hch; QCString pm, hm; QByteArray pdata, hdata; if ( cfg. hasGroup ( group )) { cfg. setGroup ( group ); pch = cfg. readEntry ( "PressedActionChannel" ). latin1(); pm = cfg. readEntry ( "PressedActionMessage" ). latin1(); // pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" )); hch = cfg. readEntry ( "HeldActionChannel" ). latin1(); hm = cfg. readEntry ( "HeldActionMessage" ). latin1(); // hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" )); } b. setPressedAction ( OQCopMessage ( pch, pm, pdata )); b. setHeldAction ( OQCopMessage ( hch, hm, hdata )); } } void ODevice::remapPressedAction ( int button, const OQCopMessage &action ) { initButtons(); QString mb_chan; if ( button >= (int) d->m_buttons->count()) return; ODeviceButton &b = ( *d->m_buttons ) [button]; b. setPressedAction ( action ); mb_chan=b. pressedAction(). channel(); Config buttonFile ( "ButtonSettings" ); buttonFile. setGroup ( "Button" + QString::number ( button )); buttonFile. writeEntry ( "PressedActionChannel", (const char*) mb_chan); |