summaryrefslogtreecommitdiffstats
path: root/README.hacking
diff options
context:
space:
mode:
Diffstat (limited to 'README.hacking')
-rw-r--r--README.hacking35
1 files changed, 35 insertions, 0 deletions
diff --git a/README.hacking b/README.hacking
index f2958b4..39f9e14 100644
--- a/README.hacking
+++ b/README.hacking
@@ -50,6 +50,11 @@ Requirements for inclusion with the XScreenSaver collection
your name and the current year). The GNU GPL is not compatible with
the rest of XScreenSaver.
+ - No clocks! Just as time travellers always try to kill Hitler on their
+ first trip, everyone seems to think that their first screen saver
+ should be a clock of some kind. Nobody needs to know what time it is
+ with such frequency. Fight The Tyranny Of The Clock.
+
==========================================================================
The XScreenSaver API
@@ -184,6 +189,10 @@ Programming Tips
in long-lived processes where no such cleanup takes place.
Consider Valgrind or gcc -fsanitize=leak to find memory leaks.
+ - Again, don't use global variables. If you are doing your developent
+ under X11, test your saver from the command line with the "-pair"
+ argument. If that crashes, you're using global variables!
+
==========================================================================
macOS, iOS and Android
@@ -201,4 +210,30 @@ macOS, iOS and Android
To check that an X11 saver will fit well on a mobile device, test it
with -geometry 640x1136 and 640x960. That's a good first step, anyway.
+
+==========================================================================
+Theory behind the ifdefs
+==========================================================================
+
+ HAVE_ macros indicate that an API is available.
+ USE_ macros indicate that a feature is requested.
+
+ Some notable ones:
+
+ HAVE_GL The OpenGL 1.3 API is available, natively or through emulation.
+ HAVE_GLES The OpenGLES 1.x API is available.
+ HAVE_COCOA The Cocoa API is available, meaning compiling for macOS or iOS.
+ HAVE_IPHONE Compiling for iOS, including iPad.
+ HAVE_ANDROID Compiling for Android.
+ HAVE_MOBILE iOS or Android, typically used for things related to rotation
+ or screen size that apply to all phones and tablets.
+ HAVE_JWXYZ Compiling on a system where the X11 API is emulated
+ (macOS, iOS or Android).
+ HAVE_JWZGLES Compiling on a system where the OpenGL 1.3 API is emulated
+ (iOS, Android, possibly Linux).
+ HAVE_GLSL Compiling against a library that supports the GL Shading
+ Language. Note that using GLSL also requires a runtime check
+ to see which version of GLSL the *running* system supports.
+ HAVE_EGL OpenGL interfaces with native windows via EGL instead of GLX.
+
==========================================================================