static bool wayland_platform_destroy(struct wcore_platform *wc_self) { struct wayland_platform *self = wayland_platform(wegl_platform(wc_self)); bool ok = true; int error; if (!self) return true; if (self->linux) ok &= linux_platform_destroy(self->linux); if (self->dl_wl_egl) { error = dlclose(self->dl_wl_egl); if (error) { ok &= false; wcore_errorf(WAFFLE_ERROR_UNKNOWN, "dlclose(\"%s\") failed: %s", libwl_egl_filename, dlerror()); } } ok &= wayland_wrapper_teardown(); ok &= wegl_platform_teardown(&self->wegl); free(self); return ok; }
static bool glx_platform_destroy(struct wcore_platform *wc_self) { struct glx_platform *self = glx_platform(wc_self); bool ok = true; int error = 0; if (!self) return true; if (self->linux) ok &= linux_platform_destroy(self->linux); if (self->glxHandle) { error = dlclose(self->glxHandle); if (error) { ok &= false; wcore_errorf(WAFFLE_ERROR_UNKNOWN, "dlclose(\"%s\") failed: %s", libGL_filename, dlerror()); } } ok &= wcore_platform_teardown(wc_self); free(self); return ok; }
static bool glx_platform_destroy(struct wcore_platform *wc_self) { struct glx_platform *self = glx_platform(wc_self); bool ok = true; if (!self) return true; if (self->linux) ok &= linux_platform_destroy(self->linux); ok &= wcore_platform_teardown(wc_self); free(self); return ok; }
static bool wgbm_platform_destroy(struct wcore_platform *wc_self) { struct wgbm_platform *self = wgbm_platform(wc_self); bool ok = true; if (!self) return true; unsetenv("EGL_PLATFORM"); if (self->linux) ok &= linux_platform_destroy(self->linux); ok &= wcore_platform_teardown(wc_self); free(self); return ok; }