Thread 'Rom Walton found and fixed the screen saver issue'

Message boards : Documentation : Rom Walton found and fixed the screen saver issue
Message board moderation

To post messages, you must log in.

AuthorMessage
ProfileByron Leigh Hatch @ team Carl ...
Avatar

Send message
Joined: 30 Aug 05
Posts: 505
Canada
Message 23278 - Posted: 24 Feb 2009, 16:55:04 UTC


Rom Walton wrote the following:

Monday February 23 2009

BOINC screen saver issue

Well I believe I have found and fixed the screen saver issue that has been plaguing the BOINC community since shortly after the 6.2 launch.

This bug wasn't easy to track down, and was something of a perfect storm as far as the code was concerned.

The prerequisites for this bug were:

1.Single monitor
2.Graphics application window gets created behind the screen saver curtain window
3.Graphics application gets stuck in an infinite loop or deadlocks on startup


We had some backup code in the screen saver to check for keyboard and mouse activity separately from the project application but after the graphics application deadlocks that code was no longer being executed.

The reason that code was no longer being executed stems from the fact that the BroadcastSystemMessage() Windows API waits for a success/failure return value from the application to which it was sending, since the graphics application itself was deadlocked it caused the screen saver to lock up.

I didn't realize that the BroadcastSystemMessage() API would not timeout on a hung application. So I learned something new this weekend.

If all goes according to plan I'll be releasing a new 6.4 client as well as a 6.6 client with the screen saver fixes today.

----- Rom

http://www.romwnet.org/dasblogce/PermaLink,guid,e07eadd3-e5d9-4916-8b05-24c99254b15d.aspx





ID: 23278 · Report as offensive

Message boards : Documentation : Rom Walton found and fixed the screen saver issue

Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.