diff --git a/deskutils/kdeconnect-kde/Makefile b/deskutils/kdeconnect-kde/Makefile index 86b467209839..aeb7cf01000e 100644 --- a/deskutils/kdeconnect-kde/Makefile +++ b/deskutils/kdeconnect-kde/Makefile @@ -1,41 +1,42 @@ PORTNAME= kdeconnect-kde DISTVERSION= ${KDE_APPLICATIONS_VERSION} +PORTREVISION= 1 CATEGORIES= deskutils kde kde-applications MAINTAINER= kde@FreeBSD.org COMMENT= Support for KDE to interface between your phone and your computer WWW= https://community.kde.org/KDEConnect LICENSE= GPLv2 LIB_DEPENDS= libdbus-1.so:devel/dbus \ libei.so:x11/libei \ libfakekey.so:x11/libfakekey \ libwayland-client.so:graphics/wayland \ libxkbcommon.so:x11/libxkbcommon \ libKF6PulseAudioQt.so:audio/pulseaudio-qt BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto \ wayland-protocols>=0:graphics/wayland-protocols RUN_DEPENDS= sshpass:security/sshpass \ sshfs:filesystems/sshfs USES= cmake compiler:c++17-lang cpe desktop-file-utils gettext-tools \ gl kde:6 localbase:ldflags pkgconfig qt:6 ssl tar:xz xorg CPE_PRODUCT= kdeconnect CPE_VENDOR= kde USE_GL= gl opengl # GLX USE_KDE= bookmarks colorscheme completion config \ coreaddons crash dbusaddons doctools guiaddons i18n iconthemes \ itemmodels itemviews jobwidgets kcmutils kio kirigami-addons \ kirigami2 notifications package people qqc2-desktop-style \ service solid statusnotifieritem widgetsaddons windowsystem \ ecm:build USE_QT= base connectivity declarative multimedia wayland USE_XORG= ice sm x11 xext xtst USE_LDCONFIG= ${QT_QMLDIR}/org/kde/kdeconnect OPTIONS_DEFINE= DOCS KDE_APPLICATIONS_SHLIB_VER=${KDE_APPLICATIONS_VERSION} .include diff --git a/deskutils/kdeconnect-kde/files/patch-git200ff3c5 b/deskutils/kdeconnect-kde/files/patch-git200ff3c5 new file mode 100644 index 000000000000..6e5ad4312e7b --- /dev/null +++ b/deskutils/kdeconnect-kde/files/patch-git200ff3c5 @@ -0,0 +1,41 @@ +From 200ff3c5e45f9f3d78a54b99fc392657b5f5e2f4 Mon Sep 17 00:00:00 2001 +From: Max Schwarz +Date: Thu, 23 Jul 2026 09:24:16 +0200 +Subject: [PATCH] sftp: don't spin forever removing Solid device entries from + Dolphin + +SftpPlugin::removeFromDolphin() iterates the shared KFilePlacesModel to +remove the kdeconnect:/// place added by addToDolphin(). When +the KDE Connect Solid backend is installed, each device also shows up in +the model as a Solid *device* item with that exact URL. The loop matches +it and calls removePlace(), but removePlace() is a no-op for device +items, so rowCount() never decreases and the --i re-processes the same +row forever, pegging the daemon at 100% CPU on device disconnect. + +Skip device items so we only ever remove the bookmark place kdeconnect +itself added; Solid device entries are owned by the Solid backend. +--- + plugins/sftp/sftpplugin.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/plugins/sftp/sftpplugin.cpp b/plugins/sftp/sftpplugin.cpp +index 6c8a3bb14..c378262e8 100644 +--- plugins/sftp/sftpplugin.cpp ++++ plugins/sftp/sftpplugin.cpp +@@ -67,6 +67,13 @@ void SftpPlugin::removeFromDolphin() + QUrl kioUrl(QStringLiteral("kdeconnect://") + deviceId + QStringLiteral("/")); + for (int i = 0; i < m_placesModel.rowCount(); ++i) { + QModelIndex index = m_placesModel.index(i, 0); ++ // Skip Solid device entries: when the KDE Connect Solid backend is installed, each device ++ // shows up in the places model with a kdeconnect:/// URL that matches kioUrl. ++ // removePlace() is a no-op for device items, so trying to remove one here would never ++ // decrease rowCount() and the --i below would spin on the same row forever (100% CPU hang). ++ if (m_placesModel.isDevice(index)) { ++ continue; ++ } + QUrl url = m_placesModel.url(index); + if (url == kioUrl) { + m_placesModel.removePlace(index); +-- +GitLab +