-extern void xlockmore_screenhack (Display *dpy, Window window,
- Bool want_writable_colors,
- Bool want_uniform_colors,
- Bool want_smooth_colors,
- Bool want_bright_colors,
- void (*hack_init) (ModeInfo *),
- void (*hack_draw) (ModeInfo *),
- void (*hack_reshape) (ModeInfo *, int, int),
- void (*hack_free) (ModeInfo *));
+struct xlockmore_function_table {
+ const char *progclass;
+ const char *defaults;
+ Bool want_writable_colors;
+ enum { color_scheme_default, color_scheme_uniform,
+ color_scheme_smooth, color_scheme_bright }
+ desired_color_scheme;
+ void (*hack_init) (ModeInfo *);
+ void (*hack_draw) (ModeInfo *);
+ void (*hack_reshape) (ModeInfo *, int, int);
+ void (*hack_release) (ModeInfo *);
+ void (*hack_free) (ModeInfo *);
+ Bool (*hack_handle_events) (ModeInfo *, XEvent *);
+ ModeSpecOpt *opts;
+
+ void **state_array;
+ unsigned long live_displays, got_init;
+};
+
+#ifdef HAVE_JWXYZ
+# define XLOCKMORE_NUM_SCREENS \
+ (sizeof(((struct xlockmore_function_table *)0)->live_displays) * 8)
+#else
+# define XLOCKMORE_NUM_SCREENS 2 /* For DEBUG_PAIR. */
+#endif