* Screensavers can't launch setuid / sergid executables like gfx_switcher
* Screensavers can't launch executables downloaded from Internet unless vetted by user vis GateKeeper
* Apple's ScreenSaverEngine doesn't always call stopAnimation before exiting
* Apple's ScreenSaverEngine always passes true for isPreview argument
* OpenGL apps built under Xcode 11 & Catalina use window doubled window dimensions on Retina displays (2 pixels per point)
* The CGWindowList method we have used to display project graphics apps which have not been updated no longer works
* Screensaver output files are put in an obscure sandboxed directory
argv is supposed to be Unix-style and in Unix-style argv[0] is program
name. Let's try to have it that way.
Also clean up a comment that is not relevant to Windows code path.
Problem: OS 10.6 and OS 10.7 require screensavers to be built with Garbage Collection (GC) enabled, but Xcode versions after 5.0.2 do not support GC.
Solution: save a compressed copy of the screensaver executable built with GC on GIT as BOINCSaver_MacOS10_6_7.zip, and update the Xcode project to build the screensaver with Automatic Reference Counting (ARC). Modify the Mac installer build script to add a copy of BOINCSaver_MacOS10_6_7 to the BOINCSaver bundle, so the installer installs the screen saver with both versions of the executable. Modify PostInstall.app to select the appropriate executable for the version of OS X at install time, rename it if necessary and delete the other one.
VS lets you choose the compiler warning level, 0 to 4.
Higher is good because compiler warnings often indicate bugs.
However, some warnings are noise, and having a lot of them is bad
because they conceal the important ones.
As an example, a recent update to VS2010 causes it to spew warnings of the form
"function _strdup() is deprecated; use _strdup() instead.
So the new policy is:
- everything compiles with warning level 4
- in boinc_win.h we use #pragmas to suppress 3 specific warnings
that occur a lot in our code, and are not bugs:
- the _function names as described above
- constant conditional expression (like while(1))
- conversion from int to char
And the goal is to build everything with zero warnings
except from outside code like zip.
We're pretty close to that.
The project files for other VS versions should be modified
to also use level 4 everywhere.