D29006: Allow to copy or move selection to the other split view
Méven Car
noreply at phabricator.kde.org
Wed Apr 29 08:04:24 BST 2020
meven added a comment.
In D29006#659406 <https://phabricator.kde.org/D29006#659406>, @dfaure wrote:
> dolphin is stuck in a blocking DBus call to plasmashell.
> Let's see what plasmashell is doing:
>
> #6 0x00007f948f23d6bc in QXcbEventQueue::waitForNewEvents(unsigned long) (this=0x23343b0, time=398) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.cpp:360
> #7 0x00007f948f1f69cb in QXcbClipboard::waitForClipboardEvent(unsigned int, int, bool) (this=0x7f9488006060, window=41943136, type=31, checkManager=false) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp:808
> #8 0x00007f948f1f6e3c in QXcbClipboard::getSelection(unsigned int, unsigned int, unsigned int, unsigned int) (this=0x7f9488006060, selection=398, target=400, property=405, time=318475618) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp:895
> #9 0x00007f948f1f6d58 in QXcbClipboard::getDataInFormat(unsigned int, unsigned int) (this=0x7f9488006060, modeAtom=398, fmtAtom=400) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp:880
> #10 0x00007f948f1f80e6 in QXcbClipboardMime::formats_sys() const (this=0x4364f20) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp:100
> #11 0x00007f9493ae2eae in QInternalMimeData::formats() const (this=0x4364f20) at /d/qt/5/kde/qtbase/src/gui/kernel/qinternalmimedata.cpp:98
> #12 0x00007f946803838a in Klipper::checkClipData(bool) (this=0x58e7f10, selectionMode=<optimized out>) at /d/kde/src/5/kde/workspace/plasma-workspace/klipper/klipper.cpp:717
> #13 0x00007f949330e68b in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x58f7940, r=0x58e7f10, a=0x7ffdeaefd170) at ../../include/QtCore/../../../../qtbase/src/corelib/kernel/qobjectdefs_impl.h:394
> #14 0x00007f949334c0cf in doActivate<false>(QObject*, int, void**) (sender=0x2a90da0, signal_index=3, argv=0x7ffdeaefd170) at /d/qt/5/kde/qtbase/src/corelib/kernel/qobject.cpp:3870
> #15 0x00007f9493345f29 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x2a90da0, m=0x7f94941793e0 <QClipboard::staticMetaObject>, local_signal_index=0, argv=0x7ffdeaefd170) at /d/qt/5/kde/qtbase/src/corelib/kernel/qobject.cpp:3930
> #16 0x00007f9493f235ae in QClipboard::changed(QClipboard::Mode) (this=0x2a90da0, _t1=QClipboard::Clipboard) at .moc/moc_qclipboard.cpp:168
> #17 0x00007f9493ad57ff in QClipboard::emitChanged(QClipboard::Mode) (this=0x2a90da0, mode=QClipboard::Clipboard) at /d/qt/5/kde/qtbase/src/gui/kernel/qclipboard.cpp:608
> #18 0x00007f9493ab24f7 in QPlatformClipboard::emitChanged(QClipboard::Mode) (this=0x7f9488006060, mode=QClipboard::Clipboard) at /d/qt/5/kde/qtbase/src/gui/kernel/qplatformclipboard.cpp:125
> #19 0x00007f948f1f623f in QXcbClipboard::handleXFixesSelectionRequest(xcb_xfixes_selection_notify_event_t*) (this=0x7f9488006060, event=0x7f9488076be0) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp:675
> #20 0x00007f948f1fe773 in QXcbConnection::handleXcbEvent(xcb_generic_event_t*) (this=0x233b680, event=0x7f9488076be0) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp:705
> #21 0x00007f948f1ff7fd in QXcbConnection::processXcbEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x233b680, flags=...) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp:1029
> #22 0x00007f948f23f3a3 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=0x23edff0) at /d/qt/5/kde/qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:103
> #23 0x00007f9491acaff8 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
>
>
>
> It's, err, blocking asking dolphin about the clipboard contents (for klipper)....
> Nice deadlock.
>
> Usually the user does "Copy" first (which triggers klipper) and "Paste" later (which registers the paste job to plasma).
> But here a single action does both copy and paste, so we have both things happening at the same time...
>
> One solution would be to fix KDynamicJobTracker to be async, but its API requires that registerJob creates the JobView, all subsequent calls need that....
Sounds like a KF6 task. Isn't it ?
REPOSITORY
R318 Dolphin
REVISION DETAIL
https://phabricator.kde.org/D29006
To: aprcela, #dolphin, elvisangelaccio, ngraham, meven
Cc: dfaure, meven, kfm-devel, azyx, nikolaik, pberestov, iasensio, aprcela, fprice, fbampaloukas, alexde, Codezela, feverfew, spoorun, navarromorales, firef, ngraham, andrebarros, emmanuelp, rdieter, mikesomov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.kde.org/mailman/private/kfm-devel/attachments/20200429/d239986b/attachment.htm>
More information about the kfm-devel
mailing list