[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Kai Uwe Broulik
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #19 from Kai Uwe Broulik  ---
Heh, alright. Glad we could figure this out :)

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Guo Yunhe
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #18 from Guo Yunhe  ---
Found out this is not a problem of KDE. It was my mistake when building
RetroArch. The `--enable-dbus` option wasn't correctly added to the build
command. So it skipped the DBus part and look for xdg_screensaver, like Kai
said.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Kai Uwe Broulik
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #17 from Kai Uwe Broulik  ---
Sure, but not on the /org/freedesktop/ScreenSaver path.
It either sends it to the /ScreenSaver or it uses xdg-screensaver but never
does it properly send a message to /org/freedesktop/ScreenSaver 

In https://bugsfiles.kde.org/attachment.cgi?id=123461 it calls Inhibit
"RetroArch" on /ScreenSaver which works.

In https://bugsfiles.kde.org/attachment.cgi?id=123459 it checks for
org.gnome.ScreenSaver, org.mate.ScreenSaver, org.cinnamon.ScreenSaver, 
and because it doesn't find any, then uses xdg-screensaver which will run and
quit releasing the inhibition.

Under no circumstance does it properly send Inhibit "RetroArch" on
/org/freedesktop/ScreenSaver. Both of these outputs behave wildly different.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Guo Yunhe
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #16 from Guo Yunhe  ---
Both were compiled with `--enable-dbus` flag. In both dbus-monitor logs, we can
find it sends "org.freedesktop.ScreenSaver" message.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Kai Uwe Broulik
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #15 from Kai Uwe Broulik  ---
from RetroArch/gfx/common/x11_common.c
void x11_suspend_screensaver(Window wnd, bool enable)
{
#ifdef HAVE_DBUS
if (dbus_suspend_screensaver(enable))
   return;
#endif
x11_suspend_screensaver_xdg_screensaver(wnd, enable);
}

So, looks like you're compiling one with and without DBUS? As neither code even
tries to call into /org/freedesktop/ScreenSaver.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread David Edmundson
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #14 from David Edmundson  ---
method call time=1571929352.111843 sender=:1.129 ->
destination=org.freedesktop.ScreenSaver serial=2 path=/ScreenSaver;
interface=org.freedesktop.ScreenSaver; member=Inhibit
   string "RetroArch"
   string "Playing a game"


Your patch shouldn't have made the name and reason change!

So either:
 - we're not testing and comparing the exact equivalent thing

 - the old code was bailing before sending the message and then going into a
fallback path. The reason why that could be happening needs to be investigated.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Guo Yunhe
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #13 from Guo Yunhe  ---
Created attachment 123461
  --> https://bugs.kde.org/attachment.cgi?id=123461=edit
dbus-monitor log after patching RetroArch

I built and tested the patch for RetroArch. It works as expected.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread David Edmundson
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #12 from David Edmundson  ---

method call time=1571928443.638728 sender=:1.117 ->
destination=org.freedesktop.ScreenSaver serial=2 path=/ScreenSaver;
interface=org.freedesktop.ScreenSaver; member=Inhibit
   string "0x2e2"
   string "xdg-screensaver"

then immediately afterwards

signal time=1571928443.640795 sender=org.freedesktop.DBus -> destination=:1.117
serial=8 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus;
member=NameLost
   string ":1.117"


It's what  I assumed it would it. It's a common trap, the connection is
dropping.


Though why do you set your reason for inhibition to be "xdg-screensaver"? Are
you sure it's going into this dbus code path?


I don't see how your proposed patch will fix anything on their side.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Kai Uwe Broulik
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #11 from Kai Uwe Broulik  ---
Ah, xdg-screensaver

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Guo Yunhe
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #10 from Guo Yunhe  ---
Created attachment 123459
  --> https://bugs.kde.org/attachment.cgi?id=123459=edit
Output of dbus-monitor when start RetroArch and wait until the screen turns
completely dark

As David Edmundson said, I recorded the log of dbus-monitor.

The fix on RetroArch side is to replace "/org/freedesktop/ScreenSaver" with
"/ScreenSaver". https://github.com/libretro/RetroArch/pull/9632/files

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread David Edmundson
https://bugs.kde.org/show_bug.cgi?id=413391

David Edmundson  changed:

   What|Removed |Added

 CC||k...@davidedmundson.co.uk
 Status|REPORTED|RESOLVED
 Resolution|--- |NOT A BUG

--- Comment #9 from David Edmundson  ---
interface.cpp

   
QDBusConnection::sessionBus().registerObject(QStringLiteral("/ScreenSaver"),
this);
   
QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/ScreenSaver"),
this);


The same object is the same on both paths.

If you think there's an issue please attach a log from "dbus-monitor" and
starting retroarch and we'll see what you're actually calling.

A common trap most apps fall into is disconnecting from DBus just after sending
which will release the inhibition.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Kai Uwe Broulik
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #8 from Kai Uwe Broulik  ---
> kscreenlocker/kcm/kcm.cpp:181:

This is the *settings* module. I don't think randomly grepping files for
occurrences of "/ScreenSaver" is useful at all and just wasting my time. Please
do some proper debugging first.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Kai Uwe Broulik
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #7 from Kai Uwe Broulik  ---
The call chain clearly works here:

qdbus org.freedesktop.ScreenSaver /org/freedesktop/ScreenSaver
org.freedesktop.ScreenSaver.Inhibit foo bar
9922

method call time=1571926064.833396 sender=:1.205 ->
destination=org.freedesktop.ScreenSaver serial=5
path=/org/freedesktop/ScreenSaver; interface=org.freedesktop.ScreenSaver;
member=Inhibit
   string "foo"
   string "bar"

method call time=1571926064.833714 sender=:1.15 ->
destination=org.kde.Solid.PowerManagement.PolicyAgent serial=267
path=/org/kde/Solid/PowerManagement/PolicyAgent;
interface=org.kde.Solid.PowerManagement.PolicyAgent; member=AddInhibition
   uint32 4
   string "foo"
   string "bar"

method return time=1571926064.834084 sender=:1.149 -> destination=:1.15
serial=200 reply_serial=267
   uint32 10

method return time=1571926064.834277 sender=:1.15 -> destination=:1.205
serial=269 reply_serial=5
   uint32 9922

and I can then see powerdevil scheduling an inhibition. (Note that the process
holding the inhibition must be running for the whole duration of the inhibiton,
if it quits, the inhibition is removed, which is why that qbus call doesn't
actually result in an inhibition.)

Whatever is causing the screen to still turn off, I don't think it the DBus
communication.
Again, try running powerdevil from command line and see if it does something
stupid (or does not do anything). Maybe it's yet another newfangled systemd
powermanagement service that tries to be clever as happened numerous times in
the past.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Guo Yunhe
https://bugs.kde.org/show_bug.cgi?id=413391

--- Comment #6 from Guo Yunhe  ---
kscreenlocker/kcm/kcm.cpp:181:

// reconfigure through DBus
OrgKdeScreensaverInterface interface(QStringLiteral("org.kde.screensaver"),
 QStringLiteral("/ScreenSaver"),
 QDBusConnection::sessionBus());

Might be the cause.

-- 
You are receiving this mail because:
You are watching all bug changes.

[kscreenlocker] [Bug 413391] DBus API /org/freedesktop/ScreenSaver is not supported

2019-10-24 Thread Guo Yunhe
https://bugs.kde.org/show_bug.cgi?id=413391

Guo Yunhe  changed:

   What|Removed |Added

Product|Powerdevil  |kscreenlocker
 CC||bhus...@gmail.com
Version|5.17.0  |unspecified
  Component|general |kcm

-- 
You are receiving this mail because:
You are watching all bug changes.