KDE/kdelibs/plasma

laurent Montel montel at kde.org
Tue Aug 17 09:24:27 CEST 2010


On lundi 16 août 2010 21:02:04 Brian David Pritchett wrote:
> SVN commit 1164453 by pritchett:
> 
> Added akonadi storage plugin loading.
> 
>  M  +31 -21    datacontainer.cpp
>  M  +2 -2      private/datacontainer_p.h

Hi,
could you verify these commit please ?
plasma-desktop doesn't start here (I have 100% cpu here)

I reverted datacontainer.cpp and it works fine.

Regards

-----
#0  QChar::cell (this=0x233db60) at 
../../include/QtCore/../../src/corelib/tools/qchar.h:283
#1  0x00007f6fcc126744 in operator<< (out=..., str=...) at 
tools/qstring.cpp:7249
#2  0x00007f6fcc200185 in operator<< <QString> (s=..., l=...) at 
../../include/QtCore/../../src/corelib/io/qdatastream.h:261
#3  0x00007f6fcc1fff4d in operator<< (out=..., list=...) at 
../../include/QtCore/../../src/corelib/tools/qstringlist.h:251
#4  0x00007f6fcc1fe628 in QMetaType::save (stream=..., type=11, data=0x21fb7d8) 
at kernel/qmetatype.cpp:607
#5  0x00007f6fcc2205ff in QVariant::save (this=0x21fb7d8, s=...) at 
kernel/qvariant.cpp:1998
#6  0x00007f6fcc220699 in operator<< (s=..., p=...) at kernel/qvariant.cpp:2026
#7  0x00007f6fcfd48cf5 in Plasma::DataContainer::store (this=0x2334e90) at 
/home/laurent/kde/kde4/kdelibs/plasma/datacontainer.cpp:220
#8  0x00007f6fcfd4c40c in Plasma::DataEngine::removeSource (this=0x233bcd0, 
source=...)
    at /home/laurent/kde/kde4/kdelibs/plasma/dataengine.cpp:324
#9  0x00007f6fcfd4e4b4 in Plasma::DataEngine::qt_metacall (this=0x233bcd0, 
_c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, 
    _a=0x7fff3cf7deb0) at 
/home/laurent/kde/kde4/kdelibs/build/plasma/dataengine.moc:128
#10 0x00007f6faea98965 in ComicEngine::qt_metacall (this=0x233db60, _c=35485056, 
_id=0, _a=0x21d7578)
    at /home/laurent/kde/kde4/kdeplasma-
addons/build/dataengines/comic/comic.moc:75
#11 0x00007f6fcc1f8103 in QMetaObject::metacall (object=0x233bcd0, 
cl=QMetaObject::InvokeMetaMethod, idx=7, argv=0x7fff3cf7deb0)
    at kernel/qmetaobject.cpp:237
#12 0x00007f6fcc20e50c in QMetaObject::activate (sender=0x2334e90, 
m=0x7f6fd013dba0, local_signal_index=1, argv=0x7fff3cf7deb0)
    at kernel/qobject.cpp:3295
#13 0x00007f6fcfd47fd5 in Plasma::DataContainer::becameUnused (this=0x233db60, 
_t1=<value optimized out>)
    at /home/laurent/kde/kde4/kdelibs/build/plasma/datacontainer.moc:119
#14 0x00007f6fcfd488b6 in Plasma::DataContainer::checkUsage (this=0x2334e90) at 
/home/laurent/kde/kde4/kdelibs/plasma/datacontainer.cpp:366
#15 0x00007f6fcfd4cb43 in Plasma::DataEngine::query (this=0x233bcd0, source=...)
    at /home/laurent/kde/kde4/kdelibs/plasma/dataengine.cpp:148
#16 0x00007f6fb19b210a in ComicApplet::init (this=0x1eb4030) at 
/home/laurent/kde/kde4/kdeplasma-addons/applets/comic/comic.cpp:146
#17 0x00007f6fcfd308a0 in Plasma::ContainmentPrivate::initApplets 
(this=0x1ec4ab0)
    at /home/laurent/kde/kde4/kdelibs/plasma/containment.cpp:451
#18 0x00007f6fcfd447ac in Plasma::CoronaPrivate::importLayout (this=0x1883a90, 
conf=<value optimized out>, 
    mergeConfig=<value optimized out>) at 
/home/laurent/kde/kde4/kdelibs/plasma/corona.cpp:514
#19 0x00007f6fcfd45413 in Plasma::Corona::loadLayout (this=0x18cacd0, 
configName=...)
    at /home/laurent/kde/kde4/kdelibs/plasma/corona.cpp:451
#20 0x00007f6fcfd46272 in Plasma::Corona::initializeLayout (this=0x18cacd0, 
configName=...)
    at /home/laurent/kde/kde4/kdelibs/plasma/corona.cpp:354
#21 0x00007f6fd1044060 in PlasmaApp::corona (this=0x17747f0)
    at 
/home/laurent/kde/kde4/kdebase/workspace/plasma/desktop/shell/plasmaapp.cpp:800
#22 0x00007f6fd10444e3 in PlasmaApp::setupDesktop (this=0x17747f0)
    at 
/home/laurent/kde/kde4/kdebase/workspace/plasma/desktop/shell/plasmaapp.cpp:286
#23 0x00007f6fd1045f8e in PlasmaApp::qt_metacall (this=0x17747f0, 
_c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, 
    _a=0x7fff3cf7eb10) at 
/home/laurent/kde/kde4/kdebase/build/workspace/plasma/desktop/shell/plasmaapp.moc:148
#24 0x00007f6fcc1f8103 in QMetaObject::metacall (object=0x17747f0, 
cl=QMetaObject::InvokeMetaMethod, idx=42, argv=0x7fff3cf7eb10)
    at kernel/qmetaobject.cpp:237
#25 0x00007f6fcc20e50c in QMetaObject::activate (sender=0x18b63b0, 
m=0x7f6fcc56b400, local_signal_index=0, argv=0x0)
    at kernel/qobject.cpp:3295
#26 0x00007f6fcc2180bb in QSingleShotTimer::timeout (this=0x18b63b0) at 
.moc/debug-shared/qtimer.moc:82
#27 0x00007f6fcc217f8b in QSingleShotTimer::timerEvent (this=0x18b63b0) at 
kernel/qtimer.cpp:308
#28 0x00007f6fcc209cd9 in QObject::event (this=0x18b63b0, e=0x7fff3cf7f3a0) at 
kernel/qobject.cpp:1212
#29 0x00007f6fcb0204fc in QApplicationPrivate::notify_helper (this=0x178a4c0, 
receiver=0x18b63b0, e=0x7fff3cf7f3a0)
    at kernel/qapplication.cpp:4306
#30 0x00007f6fcb01da01 in QApplication::notify (this=0x17747f0, 
receiver=0x18b63b0, e=0x7fff3cf7f3a0) at kernel/qapplication.cpp:3710
#31 0x00007f6fccf47336 in KApplication::notify (this=0x17747f0, 
receiver=0x18b63b0, event=0x7fff3cf7f3a0)
    at /home/laurent/kde/kde4/kdelibs/kdeui/kernel/kapplication.cpp:310
#32 0x00007f6fcc1eff8c in QCoreApplication::notifyInternal (this=0x17747f0, 
receiver=0x18b63b0, event=0x7fff3cf7f3a0)
---Type <return> to continue, or q <return> to quit---kmail(18298) 
KMail::ExpireJob::execute: ExpireJob: deleting unread older than 30 days
kmail(18298) KMail::ExpireJob::execute: ExpireJob: deleting read older than 30 
days
kmail(18298) KMail::ExpireJob::execute: ExpireJob: starting to expire in folder 
"/home/laurent/Mail/.KDE.directory/kde-i18n-doc"



-----

 
> 
> --- trunk/KDE/kdelibs/plasma/datacontainer.cpp #1164452:1164453
> @@ -19,6 +19,7 @@
>  #include "datacontainer.h"
>  #include "private/datacontainer_p.h"
>  #include "private/storage_p.h"
> +#include "pluginloader.h"
> 
>  #include <kdebug.h>
> 
> @@ -198,36 +199,43 @@
> 
>      setNeedsToBeStored(false);
> 
> -    if (d->store == NULL) {
> +    if (!d->store) {
> +        QVariantList args;
> +        args.insert(0, de->name());
> +        d->store =
> PluginLoader::pluginLoader()->loadService("akonadi_storage_plugin", args,
> 0); +        if (!d->store) {
>          d->store = new Storage(de->name(), 0);
>      }
> +    }
> 
>      KConfigGroup op = d->store->operationDescription("save");
>      op.writeEntry("source", objectName());
>      DataEngine::Data dataToStore = data();
>      DataEngine::Data::const_iterator it = dataToStore.constBegin();
> +
>      while (it != dataToStore.constEnd() && dataToStore.constEnd() ==
> data().constEnd()) { QVariant v = it.value();
> -        if ((it.value().type() == QVariant::String) || (it.value().type()
> == QVariant::Int)) { -            op.writeEntry("key", it.key());
> -            op.writeEntry("data", it.value());
> -        } else {
>              QByteArray b;
>              QDataStream ds(&b, QIODevice::WriteOnly);
>              ds << it.value();
> -            op.writeEntry("key", "base64-" + it.key());
> +        op.writeEntry("key", it.key());
>              op.writeEntry("data", b.toBase64());
>          }
>          ++it;
> -        if (d->store == NULL) {
> +    if (!d->store) {
> +        QVariantList args;
> +        args.insert(0, de->name());
> +        d->store =
> PluginLoader::pluginLoader()->loadService("plasma_storage_akonadi", args,
> 0); +        if (!d->store) {
>              d->store = new Storage(de->name(), 0);
>          }
> +    }
>          ServiceJob* job = d->store->startOperationCall(op);
>          d->storeCount++;
>          connect(job, SIGNAL(finished(KJob*)), this,
> SLOT(storeJobFinished(KJob*))); }
> -}
> 
> +
>  void DataContainerPrivate::storeJobFinished(KJob* )
>  {
>      --storeCount;
> @@ -243,10 +251,17 @@
>      if (de == NULL) {
>          return;
>      }
> -    Storage* store = new Storage(de->name(), 0);
> -    KConfigGroup retrieveGroup = store->operationDescription("retrieve");
> +    if (!d->store) {
> +        QVariantList args;
> +        args.insert(0, de->name());
> +        d->store =
> PluginLoader::pluginLoader()->loadService("plasma_storage_akonadi", args,
> 0); +        if (!d->store) {
> +            d->store = new Storage(de->name(), 0);
> +        }
> +    }
> +    KConfigGroup retrieveGroup =
> d->store->operationDescription("retrieve");
> retrieveGroup.writeEntry("source", objectName());
> -    ServiceJob* retrieveJob = store->startOperationCall(retrieveGroup);
> +    ServiceJob* retrieveJob = d->store->startOperationCall(retrieveGroup);
>      connect(retrieveJob, SIGNAL(result(KJob*)), this,
>              SLOT(populateFromStoredData(KJob*)));
>  }
> @@ -261,27 +276,22 @@
>      ServiceJob* ret = dynamic_cast<ServiceJob*>(job);
>      QHash<QString, QVariant> h = ret->result().toHash();
>      foreach (QString key, h.keys()) {
> -        if (key.startsWith("base64-")) {
>              QByteArray b =
> QByteArray::fromBase64(h[key].toString().toAscii()); QDataStream ds(&b,
> QIODevice::ReadOnly);
>              QVariant v(ds);
>              key.remove(0, 7);
>              dataToInsert.insert(key, v);
> -        } else {
> -            dataToInsert.insert(key, h[key]);
>          }
> -    }
> 
> -    if (!(data.isEmpty()))
> -    {
>          //Do not fill the source with old stored
>          //data if it is already populated with new data.
> -        return;
> +    if (data.isEmpty())
> +    {
> +        data = dataToInsert;
> +    //    dirty = true;
> +    //    q->checkForUpdate();
>      }
> 
> -    data = dataToInsert;
> -    dirty = true;
> -    q->checkForUpdate();
>  }
> 
>  void DataContainer::disconnectVisualization(QObject *visualization)
> --- trunk/KDE/kdelibs/plasma/private/datacontainer_p.h #1164452:1164453
> @@ -35,7 +35,7 @@
>  public:
>      DataContainerPrivate(DataContainer *container)
> 
>          : q(container),
> 
> -          store(NULL),
> +          store(0),
>            dirty(false),
>            cached(false),
>            enableStorage(false),
> @@ -66,7 +66,7 @@
>      QMap<QObject *, SignalRelay *> relayObjects;
>      QMap<uint, SignalRelay *> relays;
>      QTime updateTs;
> -    Storage* store;
> +    Service* store;
>      bool dirty : 1;
>      bool cached : 1;
>      bool enableStorage : 1;


More information about the Plasma-devel mailing list