weston/remoting
Pekka Paalanen 6ffbba3ac1 Use weston_compositor_add_destroy_listener_once() in plugins
This introduces a new convention of checking through the compositor destroy
listener if the plugin is already initialized. If the plugin is already
initialized, then the plugin entry function succeeds as a no-op. This makes it
safe to load the same plugin multiple times in a running compositor.

Currently module loading functions return failure if a plugin is already
loaded, but that will change in the future. Therefore we need this other method
of ensuring we do not double-initialize a plugin which would lead to list
corruptions the very least.

All plugins are converted to use the new helper, except:
- those that do not have a destroy listener already, and
- hmi-controller which does the same open-coded as the common code pattern
  did not fit there.

Plugins should always have a compositor destroy listener registered since they
very least allocate a struct to hold their data. Hence omissions are
highlighted in code.

Backends do not need this because weston_compositor_load_backend() already
protects against double-init. GL-renderer does not export a standard module
init function so cannot be initialized the usual way and therefore is not
vulnerable to double-init.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2019-11-21 16:32:55 +00:00
..
meson.build remoting: Use DRM FourCC formats instead of GBM formats 2019-11-11 10:54:17 +00:00
README doc: Move helper scripts to doc/scripts 2019-06-25 14:05:54 +00:00
remoting-plugin.c Use weston_compositor_add_destroy_listener_once() in plugins 2019-11-21 16:32:55 +00:00
remoting-plugin.h remoting: make a gstreamer pipeline configurable 2019-07-09 14:22:25 +00:00

	Remoting plugin for Weston


The Remoting plugin creates a streaming image of a virtual output and transmits
it to a remote host. It is currently only supported on the drm-backend. Virtual
outputs are created and configured by adding a remote-output section to
weston.ini. See man weston-drm(7) for configuration details. This plugin is
loaded automatically if any remote-output sections are present.

This plugin sends motion jpeg images to a client via RTP using gstreamer, and
so requires gstreamer-1.0. This plugin starts sending images immediately when
weston is run, and keeps sending them until weston shuts down. The image stream
can be received by any appropriately configured RTP client, but a sample
gstreamer RTP client script can be found at doc/scripts/remoting-client-receive.bash.

Script usage:
	remoting-client-receive.bash <PORT NUMBER>


How to compile
---------------
Set --enable-remoting=true when configuring weston. The remoting-plugin.so
module is created and installed in the libweston path.


How to configure weston.ini
----------------------------
See man weston-drm(7).