Hello community, here is the log from the commit of package kdepimlibs4 for openSUSE:Factory checked in at Fri Jun 18 06:16:44 CEST 2010. -------- --- KDE/kdepimlibs4/kdepimlibs4.changes 2010-05-31 22:42:30.000000000 +0200 +++ kdepimlibs4/kdepimlibs4.changes 2010-06-15 14:13:26.000000000 +0200 @@ -1,0 +2,8 @@ +Tue Jun 15 12:10:20 UTC 2010 - wstephenson@novell.com + +- Fix race condition causing error on every Akonadi start + (bko#236538, bnc#582375) +- Fix problem dialing Skype numbers from KAddressbook (bko#240617) +- Fix crash accepting some invitataions (bko#238945) + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- akonadi-longer-selftest-timeout.diff r1129209-imap-start.diff r1131007-bko#238945-kcal-invitation-format-crash.diff r1135440-bko#236538-akonadi-race-self-test-false-negative.diff r1135935-bko240617-kaddressbook-skype-dial-fix.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepimlibs4.spec ++++++ --- /var/tmp/diff_new_pack.go2dgM/_old 2010-06-18 06:15:59.000000000 +0200 +++ /var/tmp/diff_new_pack.go2dgM/_new 2010-06-18 06:15:59.000000000 +0200 @@ -24,10 +24,15 @@ Summary: KDE PIM Libraries Url: http://www.kde.org Version: 4.4.3 -Release: 3 +Release: 4 Source0: kdepimlibs-%version.tar.bz2 Patch0: 4_4_BRANCH.diff Patch1: kres-migrate-only-when-resources-present.diff +Patch2: r1129209-imap-start.diff +Patch3: r1131007-bko#238945-kcal-invitation-format-crash.diff +Patch4: r1135440-bko#236538-akonadi-race-self-test-false-negative.diff +Patch5: r1135935-bko240617-kaddressbook-skype-dial-fix.diff +Patch6: akonadi-longer-selftest-timeout.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: libkdepimlibs4 = %version Requires: kdelibs4 >= %( echo `rpm -q --queryformat '%{VERSION}' libkde4-devel`) @@ -47,6 +52,11 @@ %setup -q -n kdepimlibs-%version %patch0 %patch1 +%patch2 +%patch3 +%patch4 +%patch5 +%patch6 %build %cmake_kde4 -d build -- -DKDE4_ENABLE_FINAL=1 ++++++ akonadi-longer-selftest-timeout.diff ++++++ From: wstephenson@suse.de Subject: On average systems, a first start of Akonadi takes longer than 10s due to mysql initial table setup. This patch prevents a false startup failure error. Index: akonadi/control.cpp =================================================================== --- akonadi/control.cpp (revision 1138522) +++ akonadi/control.cpp (working copy) @@ -133,7 +133,7 @@ kDebug() << "Starting Akonadi (using an event loop)."; mEventLoop = new QEventLoop( mParent ); // safety timeout - QTimer::singleShot( 10000, mEventLoop, SLOT(quit()) ); + QTimer::singleShot( 60000, mEventLoop, SLOT(quit()) ); mEventLoop->exec(); mEventLoop->deleteLater(); mEventLoop = 0; ++++++ r1129209-imap-start.diff ++++++ Index: kioslave/imap4/imap4.cpp =================================================================== --- kioslave/imap4/imap4.cpp (revision 1129208) +++ kioslave/imap4/imap4.cpp (revision 1129209) @@ -107,9 +107,9 @@ int kdemain (int argc, char **argv) { + KComponentData instance ("kio_imap4"); kDebug(7116) <<"IMAP4::kdemain"; - KComponentData instance ("kio_imap4"); if (argc != 4) { fprintf(stderr, "Usage: kio_imap4 protocol domain-socket1 domain-socket2\n"); ++++++ r1131007-bko#238945-kcal-invitation-format-crash.diff ++++++ Index: kcal/incidenceformatter.cpp =================================================================== --- kcal/incidenceformatter.cpp (revision 1131006) +++ kcal/incidenceformatter.cpp (revision 1131007) @@ -2174,15 +2174,17 @@ case iTIPCancel: // Remove invitation - html += tdOpen; - if ( inc->type() == "Todo" ) { - html += helper->makeLink( "cancel", - i18n( "Remove invitation from my to-do list" ) ); - } else { - html += helper->makeLink( "cancel", - i18n( "Remove invitation from my calendar" ) ); + if ( inc ) { + html += tdOpen; + if ( inc->type() == "Todo" ) { + html += helper->makeLink( "cancel", + i18n( "Remove invitation from my to-do list" ) ); + } else { + html += helper->makeLink( "cancel", + i18n( "Remove invitation from my calendar" ) ); + } + html += tdClose; } - html += tdClose; break; case iTIPReply: ++++++ r1135440-bko#236538-akonadi-race-self-test-false-negative.diff ++++++ Index: akonadi/agentmanager_p.h =================================================================== --- akonadi/agentmanager_p.h (revision 1135439) +++ akonadi/agentmanager_p.h (revision 1135440) @@ -40,7 +40,7 @@ public: AgentManagerPrivate( AgentManager *parent ) - : mParent( parent ) + : mParent( parent ), mManager( 0 ) { } @@ -59,6 +59,7 @@ void agentInstanceWarning( const QString&, const QString& ); void agentInstanceError( const QString&, const QString& ); void agentInstanceOnlineChanged( const QString&, bool ); + void serviceOwnerChanged( const QString&, const QString&, const QString& ); /** * Reads the information about all known agent types from the serverside @@ -79,6 +80,8 @@ AgentInstance fillAgentInstance( const QString &identifier ) const; AgentInstance fillAgentInstanceLight( const QString &identifier ) const; + void createDBusInterface(); + static AgentManager *mSelf; AgentManager *mParent; Index: akonadi/agentmanager.cpp =================================================================== --- akonadi/agentmanager.cpp (revision 1135439) +++ akonadi/agentmanager.cpp (revision 1135440) @@ -33,6 +33,7 @@ using namespace Akonadi; // @cond PRIVATE +#define AKONADI_CONTROL_SERVICE QLatin1String( "org.freedesktop.Akonadi.Control" ) AgentInstance AgentManagerPrivate::createInstance( const AgentType &type ) { @@ -178,6 +179,17 @@ emit mParent->instanceNameChanged( instance ); } +void AgentManagerPrivate::serviceOwnerChanged( const QString &service, const QString &oldOwner, const QString &newOwner ) +{ + Q_UNUSED( oldOwner ); + Q_UNUSED( newOwner ); + + if ( service != AKONADI_CONTROL_SERVICE ) + return; + + createDBusInterface(); +} + void AgentManagerPrivate::readAgentTypes() { QDBusReply<QStringList> types = mManager->agentTypes(); @@ -263,55 +275,72 @@ return instance; } -AgentManager* AgentManagerPrivate::mSelf = 0; - -AgentManager::AgentManager() - : QObject( 0 ), d( new AgentManagerPrivate( this ) ) +void AgentManagerPrivate::createDBusInterface() { - d->mManager = new org::freedesktop::Akonadi::AgentManager( QLatin1String( "org.freedesktop.Akonadi.Control" ), - QLatin1String( "/AgentManager" ), - QDBusConnection::sessionBus(), this ); + mTypes.clear(); + mInstances.clear(); - connect( d->mManager, SIGNAL( agentTypeAdded( const QString& ) ), - this, SLOT( agentTypeAdded( const QString& ) ) ); - connect( d->mManager, SIGNAL( agentTypeRemoved( const QString& ) ), - this, SLOT( agentTypeRemoved( const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceAdded( const QString& ) ), - this, SLOT( agentInstanceAdded( const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceRemoved( const QString& ) ), - this, SLOT( agentInstanceRemoved( const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceStatusChanged( const QString&, int, const QString& ) ), - this, SLOT( agentInstanceStatusChanged( const QString&, int, const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceProgressChanged( const QString&, uint, const QString& ) ), - this, SLOT( agentInstanceProgressChanged( const QString&, uint, const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceNameChanged( const QString&, const QString& ) ), - this, SLOT( agentInstanceNameChanged( const QString&, const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceWarning( const QString&, const QString& ) ), - this, SLOT( agentInstanceWarning( const QString&, const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceError( const QString&, const QString& ) ), - this, SLOT( agentInstanceError( const QString&, const QString& ) ) ); - connect( d->mManager, SIGNAL( agentInstanceOnlineChanged( const QString&, bool ) ), - this, SLOT( agentInstanceOnlineChanged( const QString&, bool ) ) ); + delete mManager; + mManager = new org::freedesktop::Akonadi::AgentManager( AKONADI_CONTROL_SERVICE, + QLatin1String( "/AgentManager" ), + QDBusConnection::sessionBus(), mParent ); - if ( d->mManager->isValid() ) { - QDBusReply<QStringList> result = d->mManager->agentTypes(); + QObject::connect( mManager, SIGNAL( agentTypeAdded( const QString& ) ), + mParent, SLOT( agentTypeAdded( const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentTypeRemoved( const QString& ) ), + mParent, SLOT( agentTypeRemoved( const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceAdded( const QString& ) ), + mParent, SLOT( agentInstanceAdded( const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceRemoved( const QString& ) ), + mParent, SLOT( agentInstanceRemoved( const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceStatusChanged( const QString&, int, const QString& ) ), + mParent, SLOT( agentInstanceStatusChanged( const QString&, int, const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceProgressChanged( const QString&, uint, const QString& ) ), + mParent, SLOT( agentInstanceProgressChanged( const QString&, uint, const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceNameChanged( const QString&, const QString& ) ), + mParent, SLOT( agentInstanceNameChanged( const QString&, const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceWarning( const QString&, const QString& ) ), + mParent, SLOT( agentInstanceWarning( const QString&, const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceError( const QString&, const QString& ) ), + mParent, SLOT( agentInstanceError( const QString&, const QString& ) ) ); + QObject::connect( mManager, SIGNAL( agentInstanceOnlineChanged( const QString&, bool ) ), + mParent, SLOT( agentInstanceOnlineChanged( const QString&, bool ) ) ); + + if ( mManager->isValid() ) { + QDBusReply<QStringList> result = mManager->agentTypes(); if ( result.isValid() ) { foreach( const QString &type, result.value() ) { - const AgentType agentType = d->fillAgentType( type ); - d->mTypes.insert( type, agentType ); + const AgentType agentType = fillAgentType( type ); + mTypes.insert( type, agentType ); } } - result = d->mManager->agentInstances(); + result = mManager->agentInstances(); if ( result.isValid() ) { foreach( const QString &instance, result.value() ) { - const AgentInstance agentInstance = d->fillAgentInstance( instance ); - d->mInstances.insert( instance, agentInstance ); + const AgentInstance agentInstance = fillAgentInstance( instance ); + mInstances.insert( instance, agentInstance ); } } } } +AgentManager* AgentManagerPrivate::mSelf = 0; + +AgentManager::AgentManager() + : QObject( 0 ), d( new AgentManagerPrivate( this ) ) +{ + d->createDBusInterface(); + + // if the D-Bus interface is not valid at this point, watch for the + // service to appear and create a new one then + if ( !d->mManager->isValid() ) { + connect( QDBusConnection::sessionBus().interface(), + SIGNAL(serviceOwnerChanged(QString,QString,QString)), + SLOT(serviceOwnerChanged(QString,QString,QString)) ); + } +} + // @endcond AgentManager::~AgentManager() Index: akonadi/agentmanager.h =================================================================== --- akonadi/agentmanager.h (revision 1135439) +++ akonadi/agentmanager.h (revision 1135440) @@ -198,6 +198,7 @@ Q_PRIVATE_SLOT( d, void agentInstanceWarning( const QString&, const QString& ) ) Q_PRIVATE_SLOT( d, void agentInstanceError( const QString&, const QString& ) ) Q_PRIVATE_SLOT( d, void agentInstanceOnlineChanged( const QString&, bool ) ) + Q_PRIVATE_SLOT( d, void serviceOwnerChanged( QString, QString, QString ) ) //@endcond }; ++++++ r1135935-bko240617-kaddressbook-skype-dial-fix.diff ++++++ Index: akonadi/contact/actions/dialphonenumberaction.cpp =================================================================== --- akonadi/contact/actions/dialphonenumberaction.cpp (revision 1135934) +++ akonadi/contact/actions/dialphonenumberaction.cpp (revision 1135935) @@ -51,13 +51,6 @@ // synchronize ContactActionsSettings::self()->readConfig(); - QString command = ContactActionsSettings::self()->phoneCommand(); - - if ( command.isEmpty() ) { - KMessageBox::sorry( 0, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) ); - return; - } - // we handle skype separated if ( ContactActionsSettings::self()->dialPhoneNumberAction() == ContactActionsSettings::UseSkype ) { QSkypeDialer dialer( QLatin1String( "AkonadiContacts" ) ); @@ -67,6 +60,13 @@ return; } + QString command = ContactActionsSettings::self()->phoneCommand(); + + if ( command.isEmpty() ) { + KMessageBox::sorry( 0, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) ); + return; + } + /* * %N the raw number * %n the number with all additional non-number characters removed ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org