From: SF/projects/mingw n. l. <min...@li...> - 2011-07-14 23:16:43
|
Bugs item #3367548, was opened at 2011-07-15 01:16 Message generated for change (Tracker Item Submitted) made by carlo_bramini You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=3367548&group_id=2435 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: w32api Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Carlo Bramini (carlo_bramini) Assigned to: Nobody/Anonymous (nobody) Summary: scrnsave does not create working screensavers (9x/NT4) Initial Comment: As written in the summary, scrnsave does not create working screensavers on Windows 9x and Windows NT 4.0. I could not test Windows ME, so I do not know if it is affected too or not. The compatibility with older Windows versions has been broken by this commit: 2007-10-03 Frank Fesevur <ff...@us...> * lib/scnsave.c: Multi-monitor support. With this commit, the upper left corner has been set to SM_XVIRTUALSCREEN and SM_YVIRTUALSCREEN while the bottom right corner has been set SM_CXVIRTUALSCREEN and SM_CYVIRTUALSCREEN, but on these OSes the call to GetSystemMetrics() with these indexes will return ZERO. While a zero value is not a big problem for SM_XVIRTUALSCREEN and SM_YVIRTUALSCREEN, on SM_CXVIRTUALSCREEN and SM_CYVIRTUALSCREEN it won't allow to open the screensaver window even on the current desktop area. Windows 2000, XP and newers are not affected by this bug and they display screensavers graphics correctly. The solution to this problem should be to check the values associated to SM_CXVIRTUALSCREEN and SM_CYVIRTUALSCREEN before calling the CreateWindow(): if abnormal zero value has been received then it must fall down to use SM_CXSCREEN and SM_CYSCREEN. I attached a patch that describes the simple fix that I implemented for solving this problem. With this correction, Windows 9x and NT 4.0 worked again, while keeping multimonitor support for later Windows versions (two horizontal monitors tested). Tested with w32api-3.17 but current CVS sources are still affected. $ gcc -v gcc version 3.4.5 (mingw-vista special r3) $ ld -v GNU ld (GNU Binutils) 2.20.51.20100613 Sincerely, Carlo Bramini. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=3367548&group_id=2435 |
From: SF/projects/mingw n. l. <min...@li...> - 2012-10-25 20:12:04
|
Bugs item #3367548, was opened at 2011-07-14 16:16 Message generated for change (Comment added) made by earnie You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=3367548&group_id=2435 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: WSL (Windows System Libraries) >Group: Feature in WSL 4.0 >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Carlo Bramini (carlo_bramini) >Assigned to: Earnie Boyd (earnie) Summary: scrnsave does not create working screensavers (9x/NT4) Initial Comment: As written in the summary, scrnsave does not create working screensavers on Windows 9x and Windows NT 4.0. I could not test Windows ME, so I do not know if it is affected too or not. The compatibility with older Windows versions has been broken by this commit: 2007-10-03 Frank Fesevur <ff...@us...> * lib/scnsave.c: Multi-monitor support. With this commit, the upper left corner has been set to SM_XVIRTUALSCREEN and SM_YVIRTUALSCREEN while the bottom right corner has been set SM_CXVIRTUALSCREEN and SM_CYVIRTUALSCREEN, but on these OSes the call to GetSystemMetrics() with these indexes will return ZERO. While a zero value is not a big problem for SM_XVIRTUALSCREEN and SM_YVIRTUALSCREEN, on SM_CXVIRTUALSCREEN and SM_CYVIRTUALSCREEN it won't allow to open the screensaver window even on the current desktop area. Windows 2000, XP and newers are not affected by this bug and they display screensavers graphics correctly. The solution to this problem should be to check the values associated to SM_CXVIRTUALSCREEN and SM_CYVIRTUALSCREEN before calling the CreateWindow(): if abnormal zero value has been received then it must fall down to use SM_CXSCREEN and SM_CYSCREEN. I attached a patch that describes the simple fix that I implemented for solving this problem. With this correction, Windows 9x and NT 4.0 worked again, while keeping multimonitor support for later Windows versions (two horizontal monitors tested). Tested with w32api-3.17 but current CVS sources are still affected. $ gcc -v gcc version 3.4.5 (mingw-vista special r3) $ ld -v GNU ld (GNU Binutils) 2.20.51.20100613 Sincerely, Carlo Bramini. ---------------------------------------------------------------------- >Comment By: Earnie Boyd (earnie) Date: 2012-10-25 13:12 Message: Thanks. http://mingw.git.sourceforge.net/git/gitweb.cgi?p=mingw/mingw.org-wsl;a=commitdiff;h=3d430a49c57cd7969d11519b13a3f93590e70d86 ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=3367548&group_id=2435 |