void _ecore_wl_window_semi_free(Ecore_Wl2_Window *window) { if (window->zxdg_popup) zxdg_popup_v6_destroy(window->zxdg_popup); window->zxdg_popup = NULL; if (window->zxdg_toplevel) zxdg_toplevel_v6_destroy(window->zxdg_toplevel); window->zxdg_toplevel = NULL; if (window->zxdg_surface) zxdg_surface_v6_destroy(window->zxdg_surface); window->zxdg_surface = NULL; if (window->xdg_surface) xdg_surface_destroy(window->xdg_surface); window->xdg_surface = NULL; if (window->xdg_popup) xdg_popup_destroy(window->xdg_popup); window->xdg_popup = NULL; if (window->www_surface) www_surface_destroy(window->www_surface); window->www_surface = NULL; if (window->surface) wl_surface_destroy(window->surface); window->surface = NULL; window->surface_id = -1; }
void Wayland_DestroyWindow(_THIS, SDL_Window *window) { SDL_VideoData *data = _this->driverdata; SDL_WindowData *wind = window->driverdata; if (data) { SDL_EGL_DestroySurface(_this, wind->egl_surface); WAYLAND_wl_egl_window_destroy(wind->egl_window); if (data->shell.xdg) { if (wind->shell_surface.xdg.roleobj.toplevel) { xdg_toplevel_destroy(wind->shell_surface.xdg.roleobj.toplevel); } if (wind->shell_surface.zxdg.surface) { xdg_surface_destroy(wind->shell_surface.xdg.surface); } } else if (data->shell.zxdg) { if (wind->shell_surface.zxdg.roleobj.toplevel) { zxdg_toplevel_v6_destroy(wind->shell_surface.zxdg.roleobj.toplevel); } if (wind->shell_surface.zxdg.surface) { zxdg_surface_v6_destroy(wind->shell_surface.zxdg.surface); } } else { if (wind->shell_surface.wl) { wl_shell_surface_destroy(wind->shell_surface.wl); } } #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH if (wind->extended_surface) { QtExtendedSurface_Unsubscribe(wind->extended_surface, SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION); QtExtendedSurface_Unsubscribe(wind->extended_surface, SDL_HINT_QTWAYLAND_WINDOW_FLAGS); qt_extended_surface_destroy(wind->extended_surface); } #endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ wl_surface_destroy(wind->surface); SDL_free(wind); WAYLAND_wl_display_flush(data->display); } window->driverdata = NULL; }