[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#781769: libsolid4: Device notifier shows multiple entries (four) for mtp device



Package: libsolid4
Version: 4:4.14.2-5
Severity: normal
Tags: upstream patch

Dear Maintainer,
attaching an Android phone via USB to my KDE desktop shows in
the device notifier 5 entries, 4 without a proper description.



The reason probably is that some Android phone get multiple solid entries:

udi = '/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1'
....
  ID_GPHOTO2 = '1'  (string)
  ID_MEDIA_PLAYER = '1'  (string)
....

udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.2'
....
  ID_GPHOTO2 = '1'  (string)
  ID_MEDIA_PLAYER = '1'  (string)
....

udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.3'
....
  ID_GPHOTO2 = '1'  (string)
  ID_MEDIA_PLAYER = '1'  (string)
....

udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.1'
....

udi =
'/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0'
....



There are two upstream bugs about this issue [1] [2].
While both got closed already, I think in KDE4 only
that part about the camera aka ID_MEDIA_PLAYER is solved [3].

The "KDE5" version shows an additional check for ID_GPHOTO2.

I rebuilt kde4libs with these 2 lines applied and then only one entry
was shown when connecting the phone (patch attached).

Kind regards,
Bernhard


[1] https://bugs.kde.org/show_bug.cgi?id=339334
[2] https://bugs.kde.org/show_bug.cgi?id=336523
[3]
http://quickgit.kde.org/?p=kdelibs.git&a=history&h=f1796e97e5635fcb93a0bfc600b9da6ecce914a5&f=solid%2Fsolid%2Fbackends%2Fudev%2Fudevmanager.cpp
[4]
http://quickgit.kde.org/?p=solid.git&a=history&h=db9a05543b0a14dffeb023650995a344eabb2fd7&f=src%2Fsolid%2Fdevices%2Fbackends%2Fudev%2Fudevmanager.cpp



-- System Information:
Debian Release: 8.0
  APT prefers testing-updates
  APT policy: (990, 'testing-updates'), (990, 'testing'), (500, 'testing-proposed-updates')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libsolid4 depends on:
ii  libc6        2.19-15
ii  libqt4-dbus  4:4.8.6+git64-g5dc8b2b+dfsg-3
ii  libqt4-xml   4:4.8.6+git64-g5dc8b2b+dfsg-3
ii  libqtcore4   4:4.8.6+git64-g5dc8b2b+dfsg-3
ii  libqtgui4    4:4.8.6+git64-g5dc8b2b+dfsg-3
ii  libstdc++6   4.9.2-10
ii  libudev1     215-12
ii  udev         215-12

Versions of packages libsolid4 recommends:
ii  udisks2  2.1.3-5
ii  upower   0.99.1-3.1

Versions of packages libsolid4 suggests:
ii  media-player-info  22-2

-- no debconf information
Description: Do not show child devices of cameras and mobiles in device notifier
 Combination of these 2 patches:

 http://quickgit.kde.org/?p=solid.git&a=commitdiff&h=a1cda008d582bc9d8aeecd2c191f631e0fbb6f79
  Don't report gphoto devices that are child of gphoto devices 

 http://quickgit.kde.org/?p=solid.git&a=commitdiff&h=a100520e3891368b370b8925f44e5fb71eaa23a3
  complete check for multiple MTP/PTP devices

Last-Update: <2015-04-02>

--- kde4libs-4.14.2.orig/solid/solid/backends/udev/udevmanager.cpp
+++ kde4libs-4.14.2/solid/solid/backends/udev/udevmanager.cpp
@@ -129,8 +129,8 @@ bool UDevManager::Private::checkOfIntere
     return device.subsystem() == QLatin1String("dvb") ||
            device.subsystem() == QLatin1String("video4linux") ||
            device.subsystem() == QLatin1String("net") ||
-           device.deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty() == false || // media-player-info recognized devices
-           device.deviceProperty("ID_GPHOTO2").toInt() == 1; // GPhoto2 cameras
+           (!device.deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty() && device.parent().deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty()) || // media-player-info recognized devices
+           (device.deviceProperty("ID_GPHOTO2").toInt() == 1 && device.parent().deviceProperty("ID_GPHOTO2").toInt() != 1); // GPhoto2 cameras
 }
 
 bool UDevManager::Private::isLidBubtton(const UdevQt::Device& device)

Reply to: