waffle_native, waffle_native_display, waffle_native_config, waffle_native_context, waffle_native_window — Containers for underlying native objects
#include <waffle.h> union waffle_native_display { struct waffle_gbm_display *gbm; struct waffle_glx_display *glx; struct waffle_wayland_display *wayland; struct waffle_x11_egl_display *x11_egl; }; union waffle_native_config { struct waffle_gbm_config *gbm; struct waffle_glx_config *glx; struct waffle_wayland_config *wayland; struct waffle_x11_egl_config *x11_egl; }; union waffle_native_context { struct waffle_gbm_context *gbm; struct waffle_glx_context *glx; struct waffle_wayland_context *wayland; struct waffle_x11_egl_context *x11_egl; }; union waffle_native_window { struct waffle_gbm_window *gbm; struct waffle_glx_window *glx; struct waffle_wayland_window *wayland; struct waffle_x11_egl_window *x11_egl; };
Each of the waffle_${obj}_get_native()
functions returns a correspondingly named
union waffle_native_${obj}*.
For example, waffle_window_get_native()
returns union waffle_native_window*
For each platform, the header <waffle_${platform}.h>
defines the native container structs. For
example, <waffle_glx.h>
defines the structs waffle_glx_${obj}.
Observerve that native container structs are not defined for all platforms that waffle supports. In
particular, waffle supports Android (WAFFLE_PLATFORM_ANDROID
) and MacOS via CGL
(WAFFLE_PLATFORM_CGL
), but no container structs are defined for those platforms.
Presently, waffle does not expose the native objects for those platforms due to implementation difficulties.