Summary: | Plasmashell crashes when MPRIS dbus app stops | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | Mike <noeerover> |
Component: | general | Assignee: | David Edmundson <kde> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | bhush94, kv, plasma-bugs |
Priority: | NOR | Keywords: | drkonqi |
Version: | 5.6.3 | ||
Target Milestone: | 1.0 | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/plasma-workspace/f86fa3cd776a48367aa15331c1c0b102fd378d03 | Version Fixed In: | |
Sentry Crash Report: |
Description
Mike
2016-04-20 00:53:02 UTC
Changed my typedef from: typedef QMap<QString,QDBusVariant> metamap; to: typedef QMap<QString,QVariant> metamap; and changed an insert into the map from: ret.insert("mpris:length", QString::number(m_zone->pnTrackDuration()*1000)); to: ret.insert("mpris:length", QVariant::fromValue((m_zone->pnTrackDuration()*1000))); I meant to add to the above comment that now it won't repro. So are you making your own MPris enabled app? Do you have a link to it? (ideally a version that crashes plasma) Do you still have the d-feet log? It definitely isn't coming from the qDBusRegister itself, but rather when you emit something it may end up with a different signature. (please reopen the bug to unconfirmed when you reply) Sort of. It's a proxy app that wraps the web service from JRiver MediaCenter into a MPRIS "player" so that you can control JRiver MC with any MPRIS applet. In addition, it provides an alternative GUI to simultaneously manage playback on multiple JRiver MC servers on your net. Each JRiver server can provide any number of playback zones (roughly related to sound/video output devices), so it can get complex and MPRIS using the dbus object-path per process creates a bit of a problem. It currently only works if JRiver is running somewhere on your net. Yes, I've converted everything applicable to QVariantMap and I am no longer using qDBusRegister, but it is still crashing occasionally. For some reason, DrKonqi isn't picking up the crash and PlasmaSHell is just restarting itself... Git commit 935050ff715c3ee14130b015943f4ce189a4622c by Marco Martin. Committed on 22/04/2016 at 10:20. Pushed by mart into branch 'master'. guard m_controller with a QPointer is possible it's null for an instant when the player quits a call to start() in the moment between the app is closed and the teardown is done is unlikely but apparently happens M +14 -3 dataengines/mpris2/playeractionjob.cpp M +3 -2 dataengines/mpris2/playeractionjob.h http://commits.kde.org/plasma-workspace/935050ff715c3ee14130b015943f4ce189a4622c Git commit f86fa3cd776a48367aa15331c1c0b102fd378d03 by Marco Martin. Committed on 22/04/2016 at 10:20. Pushed by mart into branch 'Plasma/5.6'. guard m_controller with a QPointer is possible it's null for an instant when the player quits a call to start() in the moment between the app is closed and the teardown is done is unlikely but apparently happens M +14 -3 dataengines/mpris2/playeractionjob.cpp M +3 -2 dataengines/mpris2/playeractionjob.h http://commits.kde.org/plasma-workspace/f86fa3cd776a48367aa15331c1c0b102fd378d03 (In reply to Mike from comment #4) > Sort of. It's a proxy app that wraps the web service from JRiver > MediaCenter into a MPRIS "player" so that you can control JRiver MC with any > MPRIS applet. In addition, it provides an alternative GUI to simultaneously > manage playback on multiple JRiver MC servers on your net. Each JRiver > server can provide any number of playback zones (roughly related to > sound/video output devices), so it can get complex and MPRIS using the dbus > object-path per process creates a bit of a problem. > > It currently only works if JRiver is running somewhere on your net. Wow. Could you share your app? I'm (and not only one) looking for such tool. |