/ VST Home / Technical Documentation
[3.8.0] Wayland support
On this page:
Related pages:
- Steinberg:: IPlugFrame
- Steinberg:: IPlugView
- External links:
Introduction
The following interfaces allow querying information about the host plug-in frame when running in a Wayland session.
A native Wayland host application acts as both a Wayland client and a Wayland compositor. The host application connects to the system compositor and creates application windows etc. using this compositor connection.
A plug-in does not connect to the system compositor, but connects to the host application by calling IWaylandHost::openWaylandConnection().
The IWaylandHost interface can be created via Vst:: IHostApplication::createInstance.
As the interface may be required early, the host should pass Vst:: IHostApplication to the plug-in using Steinberg:: IPluginFactory3::setHostContext (context).
When opening a plug-in window, the host calls IPlugView::attached() with the parent pointer set to the wl_surface of the parent frame (with an unknown surface role).
The plug-in creates a wl_surface and must assign the wl_subsurface role using the given parent pointer. The plug-in is responsible for resizing the subsurface accordingly.
In order to create additional windows (dialogs, menus, tooltips etc.), the plug-in can use the IWaylandFrame interface, which is implemented by the host's Steinberg:: IPlugFrame object.
The plug-in can use IWaylandFrame::getParentSurface() to query an xdg_surface, which can in turn be used as a parent in xdg_surface_get_popup.
Likewise, the plug-in can use IWaylandFrame::getParentToplevel() to query an xdg_toplevel, which can be used in xdg_toplevel_set_parent.
IWaylandHost
Implemented as a singleton in the host application.
- [host imp]
- [released: 3.8.0]
- [optional]
The plug-in controller could create it in the initialized state by using Vst:: IHostApplication::createInstance.
IWaylandFrame
Interface to query additional information about the host plug-in frame in a Wayland session.
- [host imp]
- [extends Steinberg:: IPlugFrame]
- [released: 3.8.0]
- [optional]