+/* Defer to the real 'function' (from libEGL.so.1) to do the real work.
+ * The symbol is looked up once and cached in a static variable for
+ * future uses.
+ */
+#define EGLWRAP_DEFER(function,...) do { \
+ static typeof(&function) real_ ## function; \
+ if (! real_ ## function) \
+ real_ ## function = eglwrap_lookup (#function); \
+ real_ ## function(__VA_ARGS__); \
+} while (0);
+
+/* As EGLWRAP_DEFER, but also set 'ret' to the return value */
+#define EGLWRAP_DEFER_WITH_RETURN(ret, function,...) do { \
+ static typeof(&function) real_ ## function; \
+ if (! real_ ## function) \
+ real_ ## function = eglwrap_lookup (#function); \
+ (ret) = real_ ## function(__VA_ARGS__); \
+} while (0);
+
+
+/* Note: We only need to perform a lookup in libEGL.so.1, (not
+ * libGLESv2.so.2). This is because the functions we wrap, (currently
+ * eglSwapBufers, eglGetProcAddress, and eglMakeCurrent), exist only
+ * in libEGL.so.1.
+ */