+ NAME and PREFIX are usually the same. If they are not, use
+ XSCREENSAVER_MODULE_2() instead of XSCREENSAVER_MODULE().
+ */
+#define XSCREENSAVER_MODULE_2(CLASS,NAME,PREFIX) \
+ \
+ static struct xlockmore_function_table \
+ NAME ## _xlockmore_function_table = { \
+ CLASS, \
+ DEFAULTS, \
+ WRITABLE_COLORS, \
+ XLOCKMORE_COLOR_SCHEME, \
+ init_ ## PREFIX, \
+ draw_ ## PREFIX, \
+ reshape_ ## PREFIX, \
+ refresh_ ## PREFIX, \
+ release_ ## PREFIX, \
+ PREFIX ## _handle_event, \
+ & PREFIX ## _opts \
+ }; \
+ \
+ struct xscreensaver_function_table \
+ NAME ## _xscreensaver_function_table = { \
+ 0, 0, 0, \
+ xlockmore_setup, \
+ & NAME ## _xlockmore_function_table, \
+ 0, 0, 0, 0, 0, \
+ xlockmore_gl_compute_fps, \
+ xlockmore_pick_gl_visual, \
+ xlockmore_validate_gl_visual }; \
+ \
+ XSCREENSAVER_LINK (NAME ## _xscreensaver_function_table)
+
+#define XSCREENSAVER_MODULE(CLASS,PREFIX) \
+ XSCREENSAVER_MODULE_2(CLASS,PREFIX,PREFIX)