+#include <time.h>
+
+#include "screenhackI.h"
+
+#ifdef HAVE_XSHM_EXTENSION
+# include "xshm.h"
+#endif /* HAVE_XSHM_EXTENSION */
+
+
+typedef struct ModeInfo ModeInfo;
+
+#ifdef USE_GL
+
+/* I'm told that the Sun version of OpenGL needs to have the constant
+ SUN_OGL_NO_VERTEX_MACROS defined in order for morph3d to compile
+ (the number of arguments to the glNormal3f macro changes...)
+ Verified with gcc 2.7.2.2 and Sun cc 4.2 with OpenGL 1.1.1 dev 4
+ on Solaris 2.5.1.
+ */
+# ifndef HAVE_MESA_GL
+# if defined(__sun) && defined(__SVR4) /* Solaris */
+# define SUN_OGL_NO_VERTEX_MACROS 1
+# endif /* Solaris */
+# endif /* !HAVE_MESA_GL */
+
+# ifdef HAVE_COCOA
+# ifndef USE_IPHONE
+# include <OpenGL/gl.h>
+# include <OpenGL/glu.h>
+# endif
+# else
+# include <GL/gl.h>
+# include <GL/glu.h>
+# include <GL/glx.h>
+# endif
+
+# ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+# endif /* HAVE_JWZGLES */
+
+
+ extern GLXContext *init_GL (ModeInfo *);
+ extern void xlockmore_reset_gl_state(void);
+ extern void clear_gl_error (void);
+ extern void check_gl_error (const char *type);
+
+ extern Visual *xlockmore_pick_gl_visual (Screen *);
+ extern Bool xlockmore_validate_gl_visual (Screen *, const char *, Visual *);
+
+#endif /* !USE_GL */
+
+/* These are only used in GL mode, but I don't understand why XCode
+ isn't seeing the prototypes for them in glx/fps-gl.c... */
+extern void do_fps (ModeInfo *);
+extern void xlockmore_gl_compute_fps (Display *, Window, fps_state *, void *);
+extern void xlockmore_gl_draw_fps (ModeInfo *);
+# define do_fps xlockmore_gl_draw_fps
+
+
+extern void xlockmore_setup (struct xscreensaver_function_table *, void *);
+extern void xlockmore_do_fps (Display *, Window, fps_state *, void *);
+