/* xscreensaver, Copyright (c) 1992-2018 Jamie Zawinski <jwz@jwz.org>
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
/* In an Xlib world, we define two global symbols here:
a struct in `MODULENAME_xscreensaver_function_table',
and a pointer to that in `xscreensaver_function_table'.
In a Cocoa/Android world, we only define the prefixed symbol;
the un-prefixed symbol does not exist.
# define XSCREENSAVER_LINK(NAME)
# define XSCREENSAVER_LINK(NAME) \
struct xscreensaver_function_table *xscreensaver_function_table = &NAME;
#if defined(HAVE_JWXYZ) && !defined(__XLOCKMORE_INTERNAL_H__)
/* this is one enormous kludge... */
xscreensaver_common_setup(struct xscreensaver_function_table
*xsft
, void *a
)
# define xscreensaver_common_setup 0
# define SCREENHACK_VISUAL DEFAULT_VISUAL
# define SCREENHACK_VISUAL 0, 0
#define XSCREENSAVER_MODULE_2(CLASS,NAME,PREFIX) \
struct xscreensaver_function_table \
NAME ## _xscreensaver_function_table = { \
xscreensaver_common_setup, 0, \
XSCREENSAVER_LINK (NAME ## _xscreensaver_function_table)
#define XSCREENSAVER_MODULE(CLASS,PREFIX) \
XSCREENSAVER_MODULE_2(CLASS,PREFIX,PREFIX)
#endif /* __SCREENHACK_H__ */