rendered paste bodyIndex: session.h===================================================================--- session.h (revision 1206657)+++ session.h (working copy)@@ -95,6 +95,15 @@ */ void clear(); + Q_SIGNALS:+ /**+ * This signal is emitted whenever the session has been reconnected+ * to the server (e.g. after a server crash).+ *+ * @since 4.6+ */+ void reconnected();+ protected: /** * Creates a new session with shared private object.Index: session.cpp===================================================================--- session.cpp (revision 1206657)+++ session.cpp (working copy)@@ -152,6 +152,8 @@ tcpSocket->connectToHost( serverAddress, port ); } #endif++ emit mParent->reconnected(); } void SessionPrivate::socketError( QLocalSocket::LocalSocketError )Index: resourcebase.cpp===================================================================--- resourcebase.cpp (revision 1206657)+++ resourcebase.cpp (working copy)@@ -132,6 +132,13 @@ void changeCommittedResult( KJob* job ); + void slotSessionReconnected()+ {+ Q_Q( ResourceBase );++ new ResourceSelectJob( q->identifier() );+ }+ void createItemSyncInstanceIfMissing() { Q_Q( ResourceBase );@@ -219,6 +226,8 @@ DBusConnectionPool::threadConnection().registerObject( QLatin1String( "/Debug" ), d, QDBusConnection::ExportScriptableSlots ); new ResourceSelectJob( identifier() );++ connect( d->mChangeRecorder->session(), SIGNAL( reconnected() ), SLOT( slotSessionReconnected() ) ); } ResourceBase::~ResourceBase()Index: resourcebase.h===================================================================--- resourcebase.h (revision 1206657)+++ resourcebase.h (working copy)@@ -592,6 +592,7 @@ Q_PRIVATE_SLOT( d_func(), void slotPrepareItemRetrieval( const Akonadi::Item& item ) ) Q_PRIVATE_SLOT( d_func(), void slotPrepareItemRetrievalResult( KJob* ) ) Q_PRIVATE_SLOT( d_func(), void changeCommittedResult( KJob* ) )+ Q_PRIVATE_SLOT( d_func(), void slotSessionReconnected() ) }; }