PATCH - implement LockWorkStation using xdg-screensaver on Linux

Hans Leidekker hans at it.vu.nl
Tue Jun 19 14:54:29 CDT 2007


On Tuesday 19 June 2007 20:08:50 Steven Edwards wrote:

> Patch by Hans Leidekker

It's your idea so you should get the credit. I was just helping out
with the implementation.

> This could be expanded for other platforms that use xdg stuff by
> changing the #ifdef. I added the #ifdef to also deal with the MacOS
> case.

There will allways be Linux distributions that don't install the xdg
tools by default, and it's not inconceivable that they will be supported
on MacOS one day.

So I think it's better to just try to run xdg-screensaver, warn when it
fails, but ignore the error. From reading MSDN this is consistent
with the semantics of LockWorkStation.

I also think it's better to not lock the entire desktop when Wine
runs in a virtual desktop. I remember looking for a way to know whether
we are running in desktop mode and found this snippet from PaintDesktop():

    HWND hwnd = GetDesktopWindow();

    /* check for an owning thread; otherwise don't paint anything (non-desktop mode) */
    if (GetWindowThreadProcessId( hwnd, NULL ))
    ...

I copied it but somehow it didn't work for me.

 -Hans



More information about the wine-devel mailing list