Dolphin and Baloo

Frank Reininghaus frank78ac at googlemail.com
Tue Feb 4 14:45:53 GMT 2014


Hi,

2014-02-04 Vishesh Handa:
> I just fixed all the issues you mentioned.

cool, thanks! I think we're getting there. I noticed just two more things:

1. There is a HAVE_NEPOMUK left in src/search/dolphinsearchbox.cpp. I
guess the #ifdef'ed code should just be removed?

2. About this code in KFileItemModelRolesUpdater::rolesData():

#ifdef HAVE_BALOO
    if (m_balooFileMonitor)
        m_balooFileMonitor->addFile(item.localPath());

    // We never fill the Baloo roles over here since that would require
    // us to block by spawning a local event loop. Instead we call a slot
    // to fill the values later
    QMetaObject::invokeMethod(this, "applyChangedBalooRoles",
                              Qt::QueuedConnection, Q_ARG(QString,
item.localPath()));
#endif

(a) This will always invoke applyChangedBalooRoles and thus start a
Baloo::FileFetchJob, even if no Baloo roles are shown at all. We could
just include that statement in the "if" block to prevent that, right?

(b) Is there a reason to use a QMetaObject invocation for calling
applyChangedBalooRoles()? Since that function just starts the job, it
should finish quite fast, right?

(c) Unless I'm overlooking something, it looks to me like
rolesData(KFileItem) invokes applyChangedBalooRoles(QString), which
will then finally trigger applyChangedBalooRolesJobFinished(KJob*).
The latter function then calls rolesData(KFileItem) again. This looks
like an infinite recursion to me. It won't cause a crash or block the
GUI because two of the recursive calls are asynchronous, but it will
make Dolphin use 100% of one CPU core permanently. Or am I missing
something here?

Cheers,
Frank




More information about the kfm-devel mailing list