|
Sunshine master
Self-hosted game stream host for Moonlight.
|
Declarations for common platform specific utilities. More...
#include <bitset>#include <filesystem>#include <functional>#include <mutex>#include <string>#include <boost/core/noncopyable.hpp>#include "src/config.h"#include "src/logging.h"#include "src/thread_safe.h"#include "src/utility.h"#include "src/video_colorspace.h"#include <moonlight-common-c/src/Limelight.h>Go to the source code of this file.
Classes | |
| class | platf::audio_control_t |
| Platform audio controller that manages sinks and microphone capture. More... | |
| struct | platf::avcodec_encode_device_t |
| AVCodec-backed encode device and frame state. More... | |
| struct | platf::batched_send_info_t |
| Buffers and native metadata for one batched send operation. More... | |
| struct | platf::buffer_descriptor_t |
| Platform buffer pointer and size for batched socket sends. More... | |
| class | platf::deinit_t |
| RAII helper that runs shutdown cleanup when destroyed. More... | |
| class | platf::display_t |
| Abstract display capture backend used by the streaming pipeline. More... | |
| struct | platf::encode_device_t |
| Base interface for hardware or software frame conversion. More... | |
| struct | platf::gamepad_arrival_t |
| Capabilities reported when a controller is connected. More... | |
| struct | platf::gamepad_battery_t |
| Battery state reported by a virtual gamepad. More... | |
| struct | platf::gamepad_feedback_msg_t |
| Feedback command sent from Sunshine to a virtual gamepad. More... | |
| struct | platf::gamepad_id_t |
| Global and client-relative identifiers for a virtual gamepad. More... | |
| struct | platf::gamepad_motion_t |
| Accelerometer or gyroscope sample from a controller. More... | |
| struct | platf::gamepad_state_t |
| Button and axis state received for a virtual gamepad. More... | |
| struct | platf::gamepad_touch_t |
| Touchpad contact data reported by a controller. More... | |
| struct | platf::high_precision_timer |
| Platform timer object used for precise frame pacing. More... | |
| struct | platf::img_t |
| Captured frame buffer shared between capture and encode stages. More... | |
| class | platf::mic_t |
| Audio capture source used by the streaming pipeline. More... | |
| struct | platf::sink_t::null_t |
| Optional virtual sink names for each supported channel layout. More... | |
| struct | platf::nvenc_encode_device_t |
| NVENC-backed encode device state. More... | |
| struct | platf::pen_input_t |
| Pen tablet event data from the client. More... | |
| struct | platf::send_info_t |
| Destination address and payload data for one UDP send. More... | |
| struct | platf::sink_t |
| Host and virtual audio sink names for audio routing. More... | |
| struct | platf::supported_gamepad_t |
| Gamepad type exposed to clients and why it may be disabled. More... | |
| struct | platf::touch_input_t |
| Absolute touchscreen event data from the client. More... | |
| struct | platf::touch_port_t |
| Touchscreen coordinate bounds used to scale absolute input. More... | |
Namespaces | |
| namespace | nvenc |
| Standalone NVENC encoder. | |
Typedefs | |
| typedef uint32_t | platf::platform_caps::caps_t |
| Bitset containing platform capability flags. | |
| typedef deinit_t | platf::client_input_t |
| Per-client input context allocated by a platform backend. | |
| typedef basic_environment< char > | boost::process::v1::environment |
| Map of environment variable names to values. | |
| using | platf::feedback_queue_t = safe::mail_raw_t::queue_t<gamepad_feedback_msg_t> |
| Queue used to deliver controller feedback commands to the platform backend. | |
| using | platf::input_t = util::safe_ptr<void, freeInput> |
| Owning pointer for a platform input backend. | |
Functions | |
| void | platf::abs_mouse (input_t &input, const touch_port_t &touch_port, float x, float y) |
| Move the pointer to an absolute client-provided touch coordinate. | |
| void | platf::adjust_thread_priority (thread_priority_e priority) |
| Apply the requested scheduling priority to the current thread. | |
| int | platf::alloc_gamepad (input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue) |
| Create a new virtual gamepad. | |
| std::unique_ptr< client_input_t > | platf::allocate_client_input_context (input_t &input) |
| Allocate a context to store per-client input data. | |
| std::filesystem::path | platf::appdata () |
| Performs migration if necessary, then returns the appdata directory. | |
| std::unique_ptr< audio_control_t > | platf::audio_control () |
| Create the platform audio controller. | |
| void | platf::button_mouse (input_t &input, int button, bool release) |
| Press or release a virtual mouse button. | |
| std::unique_ptr< high_precision_timer > | platf::create_high_precision_timer () |
| Create platform-specific timer capable of high-precision sleep. | |
| std::shared_ptr< display_t > | platf::display (mem_type_e hwdevice_type, const std::string &display_name, const video::config_t &config) |
| Get the display_t instance for the given hwdevice_type. If display_name is empty, use the first monitor that's compatible you can find If you require to use this parameter in a separate thread, make a copy of it. | |
| std::vector< std::string > | platf::display_names (mem_type_e hwdevice_type) |
| List display names accepted by the selected capture backend. | |
| void | platf::drop_elevated_privileges (bool all_caps) |
| Drop elevated privileges (e.g. system admin/nice etc.) | |
| void | platf::enable_mouse_keys () |
| Enable or disable X11 mouse keys for the current session. | |
| std::unique_ptr< deinit_t > | platf::enable_socket_qos (uintptr_t native_socket, boost::asio::ip::address &address, uint16_t port, qos_data_type_e data_type, bool dscp_tagging) |
| Enable QoS on the given socket for traffic to the specified destination. | |
| void | platf::free_gamepad (input_t &input, int nr) |
| Release gamepad resources. | |
| void | platf::freeInput (void *) |
| Release a platform input backend created by input(). | |
| std::string_view | platf::from_pix_fmt (pix_fmt_e pix_fmt) |
| Convert a Sunshine pixel format enum to its string name. | |
| std::string | platf::from_sockaddr (const sockaddr *const) |
| Convert a socket address to a printable IP address. | |
| std::pair< std::uint16_t, std::string > | platf::from_sockaddr_ex (const sockaddr *const) |
| Convert a socket address to a port and printable IP address. | |
| void | platf::gamepad_battery (input_t &input, const gamepad_battery_t &battery) |
| Send a gamepad battery event to the OS. | |
| void | platf::gamepad_motion (input_t &input, const gamepad_motion_t &motion) |
| Send a gamepad motion event to the OS. | |
| void | platf::gamepad_touch (input_t &input, const gamepad_touch_t &touch) |
| Send a gamepad touch event to the OS. | |
| void | platf::gamepad_update (input_t &input, int nr, const gamepad_state_t &gamepad_state) |
| Submit updated Sunshine gamepad state to the virtual device. | |
| platform_caps::caps_t | platf::get_capabilities () |
| Get the supported platform capabilities to advertise to the client. | |
| std::string | platf::get_host_name () |
| Returns the current computer name in UTF-8. | |
| std::string | platf::get_mac_address (const std::string_view &address) |
| Return the hardware MAC address associated with a network address. | |
| util::point_t | platf::get_mouse_loc (input_t &input) |
| Get the current mouse position on screen. | |
| bool | platf::has_elevated_privileges (bool all_caps) |
| Check is the current process is running with elevated privileges (e.g. system admin/etc.) | |
| void | platf::hscroll (input_t &input, int distance) |
| Apply a horizontal scroll event to the virtual mouse. | |
| std::unique_ptr< deinit_t > | platf::init () |
| Initialize the platform-specific high precision timer. | |
| input_t | platf::input () |
| Create the platform input backend for a stream. | |
| void | platf::keyboard_update (input_t &input, uint16_t modcode, bool release, uint8_t flags) |
| Press or release a virtual keyboard key. | |
| void | platf::move_mouse (input_t &input, int deltaX, int deltaY) |
| Move mouse using the backend coordinate system. | |
| bool | platf::needs_encoder_reenumeration () |
| Check if GPUs/drivers have changed since the last call to this function. | |
| void | platf::open_url (const std::string &url) |
| Open a url in the default web browser. | |
| void | platf::pen_update (client_input_t *input, const touch_port_t &touch_port, const pen_input_t &pen) |
| Send a pen event to the OS. | |
| bool | platf::process_group_running (std::uintptr_t native_handle) |
| Check if a process group still has running children. | |
| bool | platf::request_process_group_exit (std::uintptr_t native_handle) |
| Attempt to gracefully terminate a process group. | |
| std::string | platf::resolve_render_device () |
| Resolves the render device path to use for hardware encoding. | |
| void | platf::restart () |
| Restart the Sunshine process through the platform launcher. | |
| boost::process::v1::child | platf::run_command (bool elevated, bool interactive, const std::string &cmd, boost::filesystem::path &working_dir, const boost::process::v1::environment &env, FILE *file, std::error_code &ec, boost::process::v1::group *group) |
| Launch a configured preparation or application command. | |
| void | platf::scroll (input_t &input, int distance) |
| Apply a vertical scroll event to the virtual mouse. | |
| bool | platf::send (send_info_t &send_info) |
| Send the serialized response over the active socket. | |
| bool | platf::send_batch (batched_send_info_t &send_info) |
| Send multiple fixed-size UDP payload blocks using the platform backend. | |
| void | platf::set_thread_name (const std::string &name) |
| Name the current thread for use with development tools. | |
| std::unique_ptr< deinit_t > | platf::publish::start () |
| Main entry point for publication of our service on macOS. | |
| void | platf::streaming_will_start () |
| Apply Linux platform state before streaming starts. | |
| void | platf::streaming_will_stop () |
| Restore Linux platform state after streaming stops. | |
| std::vector< supported_gamepad_t > & | platf::supported_gamepads (input_t *input) |
| Gets the supported gamepads for this platform backend. | |
| void | platf::touch_update (client_input_t *input, const touch_port_t &touch_port, const touch_input_t &touch) |
| Send a touch event to the OS. | |
| void | platf::unicode (input_t &input, char *utf8, int size) |
| Submit UTF-8 text input to the keyboard backend. | |
Variables | |
| constexpr std::uint32_t | platf::A = 0x1000 |
| Moonlight gamepad button mask bit for A. | |
| constexpr std::uint32_t | platf::B = 0x2000 |
| Moonlight gamepad button mask bit for B. | |
| constexpr std::uint32_t | platf::BACK = 0x0020 |
| Moonlight gamepad button mask bit for Back. | |
| constexpr caps_t | platf::platform_caps::controller_touch = 0x02 |
| Capability bit indicating controller touchpad support. | |
| constexpr std::uint32_t | platf::DPAD_DOWN = 0x0002 |
| Moonlight gamepad button mask bit for D-pad down. | |
| constexpr std::uint32_t | platf::DPAD_LEFT = 0x0004 |
| Moonlight gamepad button mask bit for D-pad left. | |
| constexpr std::uint32_t | platf::DPAD_RIGHT = 0x0008 |
| Moonlight gamepad button mask bit for D-pad right. | |
| constexpr std::uint32_t | platf::DPAD_UP = 0x0001 |
| Moonlight gamepad button mask bit for D-pad up. | |
| constexpr std::uint32_t | platf::HOME = 0x0400 |
| Moonlight gamepad button mask bit for Home. | |
| constexpr std::uint32_t | platf::LEFT_BUTTON = 0x0100 |
| Moonlight gamepad button mask bit for left shoulder. | |
| constexpr std::uint32_t | platf::LEFT_STICK = 0x0040 |
| Moonlight gamepad button mask bit for left stick press. | |
| constexpr std::uint8_t | platf::speaker::map_stereo [] |
| Moonlight speaker order for stereo audio. | |
| constexpr std::uint8_t | platf::speaker::map_surround51 [] |
| Moonlight speaker order for 5.1 surround audio. | |
| constexpr std::uint8_t | platf::speaker::map_surround71 [] |
| Moonlight speaker order for 7.1 surround audio. | |
| constexpr auto | platf::MAX_GAMEPADS = 16 |
| Maximum number of simultaneously tracked gamepads. | |
| constexpr std::uint32_t | platf::MISC_BUTTON = 0x200000 |
| Moonlight gamepad button mask bit for the miscellaneous button. | |
| constexpr std::uint32_t | platf::PADDLE1 = 0x010000 |
| Moonlight gamepad button mask bit for paddle 1. | |
| constexpr std::uint32_t | platf::PADDLE2 = 0x020000 |
| Moonlight gamepad button mask bit for paddle 2. | |
| constexpr std::uint32_t | platf::PADDLE3 = 0x040000 |
| Moonlight gamepad button mask bit for paddle 3. | |
| constexpr std::uint32_t | platf::PADDLE4 = 0x080000 |
| Moonlight gamepad button mask bit for paddle 4. | |
| constexpr caps_t | platf::platform_caps::pen_touch = 0x01 |
| Capability bit indicating native pen and touch support. | |
| constexpr std::uint32_t | platf::RIGHT_BUTTON = 0x0200 |
| Moonlight gamepad button mask bit for right shoulder. | |
| constexpr std::uint32_t | platf::RIGHT_STICK = 0x0080 |
| Moonlight gamepad button mask bit for right stick press. | |
| constexpr auto | platf::SERVICE_NAME = "Sunshine" |
| mDNS service instance name advertised for GameStream discovery. | |
| constexpr auto | platf::SERVICE_TYPE = "_nvstream._tcp" |
| mDNS service type advertised for GameStream discovery. | |
| constexpr std::uint32_t | platf::START = 0x0010 |
| Moonlight gamepad button mask bit for Start. | |
| constexpr std::uint32_t | platf::TOUCHPAD_BUTTON = 0x100000 |
| Moonlight gamepad button mask bit for touchpad click. | |
| constexpr std::uint32_t | platf::X = 0x4000 |
| Moonlight gamepad button mask bit for X. | |
| constexpr std::uint32_t | platf::Y = 0x8000 |
| Moonlight gamepad button mask bit for Y. | |
Declarations for common platform specific utilities.
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
| void platf::abs_mouse | ( | input_t & | input, |
| const touch_port_t & | touch_port, | ||
| float | x, | ||
| float | y ) |
Move the pointer to an absolute client-provided touch coordinate.
| input | Platform input backend that receives the event. |
| touch_port | Touch coordinate bounds used for scaling. |
| x | Horizontal absolute coordinate from the client. |
| y | Vertical absolute coordinate from the client. |
| void platf::adjust_thread_priority | ( | thread_priority_e | priority | ) |
Apply the requested scheduling priority to the current thread.
| priority | Thread priority requested from the platform backend. |
| int platf::alloc_gamepad | ( | input_t & | input, |
| const gamepad_id_t & | id, | ||
| const gamepad_arrival_t & | metadata, | ||
| feedback_queue_t | feedback_queue ) |
Create a new virtual gamepad.
| input | The global input context. |
| id | The gamepad ID. |
| metadata | Controller metadata from client (empty if none provided). |
| feedback_queue | The queue for posting messages back to the client. |
| std::unique_ptr< client_input_t > platf::allocate_client_input_context | ( | input_t & | input | ) |
Allocate a context to store per-client input data.
Allocates a context to store per-client input data.
| input | The global input context. |
| std::filesystem::path platf::appdata | ( | ) |
Performs migration if necessary, then returns the appdata directory.
This is used for the log directory, so it cannot invoke Boost logging!
| std::unique_ptr< audio_control_t > platf::audio_control | ( | ) |
Create the platform audio controller.
| void platf::button_mouse | ( | input_t & | input, |
| int | button, | ||
| bool | release ) |
Press or release a virtual mouse button.
| input | Platform input backend that receives the event. |
| button | Mouse button identifier to press or release. |
| release | Whether the key or button event is a release. |
| std::unique_ptr< high_precision_timer > platf::create_high_precision_timer | ( | ) |
Create platform-specific timer capable of high-precision sleep.
| std::shared_ptr< display_t > platf::display | ( | platf::mem_type_e | hwdevice_type, |
| const std::string & | display_name, | ||
| const video::config_t & | config ) |
Get the display_t instance for the given hwdevice_type. If display_name is empty, use the first monitor that's compatible you can find If you require to use this parameter in a separate thread, make a copy of it.
| display_name | The name of the monitor that SHOULD be displayed |
| config | Stream configuration |
Pick a display adapter and capture method.
| hwdevice_type | enables possible use of hardware encoder |
| std::vector< std::string > platf::display_names | ( | mem_type_e | hwdevice_type | ) |
List display names accepted by the selected capture backend.
| hwdevice_type | Hardware device type requested for capture or encode. |
| void platf::drop_elevated_privileges | ( | bool | all_caps | ) |
Drop elevated privileges (e.g. system admin/nice etc.)
| all_caps | Bool that specifies whether to drop all caps or only CAP_SYS_ADMIN |
| std::unique_ptr< deinit_t > platf::enable_socket_qos | ( | uintptr_t | native_socket, |
| boost::asio::ip::address & | address, | ||
| uint16_t | port, | ||
| qos_data_type_e | data_type, | ||
| bool | dscp_tagging ) |
Enable QoS on the given socket for traffic to the specified destination.
Enables QoS on the given socket for traffic to the specified destination.
| native_socket | The native socket handle. |
| address | The destination address for traffic sent on this socket. |
| port | The destination port for traffic sent on this socket. |
| data_type | The type of traffic sent on this socket. |
| dscp_tagging | Specifies whether to enable DSCP tagging on outgoing traffic. |
| void platf::free_gamepad | ( | input_t & | input, |
| int | nr ) |
Release gamepad resources.
| input | Platform input backend that receives the event. |
| nr | Controller index assigned by the client. |
| void platf::freeInput | ( | void * | p | ) |
Release a platform input backend created by input().
| p | Pointer passed to the deleter or conversion helper. |
|
inline |
Convert a Sunshine pixel format enum to its string name.
| pix_fmt | Sunshine pixel format to convert or allocate for. |
| std::string platf::from_sockaddr | ( | const sockaddr * const | ip_addr | ) |
Convert a socket address to a printable IP address.
| ip_addr | Socket address to format. |
| std::pair< std::uint16_t, std::string > platf::from_sockaddr_ex | ( | const sockaddr * const | ip_addr | ) |
Convert a socket address to a port and printable IP address.
| ip_addr | Socket address to format. |
| void platf::gamepad_battery | ( | input_t & | input, |
| const gamepad_battery_t & | battery ) |
Send a gamepad battery event to the OS.
Sends a gamepad battery event to the OS.
| input | The global input context. |
| battery | The battery event. |
| void platf::gamepad_motion | ( | input_t & | input, |
| const gamepad_motion_t & | motion ) |
Send a gamepad motion event to the OS.
Sends a gamepad motion event to the OS.
| input | The global input context. |
| motion | The motion event. |
| void platf::gamepad_touch | ( | input_t & | input, |
| const gamepad_touch_t & | touch ) |
Send a gamepad touch event to the OS.
Sends a gamepad touch event to the OS.
| input | The global input context. |
| touch | The touch event. |
| void platf::gamepad_update | ( | input_t & | input, |
| int | nr, | ||
| const gamepad_state_t & | gamepad_state ) |
Submit updated Sunshine gamepad state to the virtual device.
| input | The input context. |
| nr | The gamepad index to update. |
| gamepad_state | The gamepad button/axis state sent from the client. |
| platform_caps::caps_t platf::get_capabilities | ( | ) |
Get the supported platform capabilities to advertise to the client.
Returns the supported platform capabilities to advertise to the client.
| std::string platf::get_host_name | ( | ) |
Returns the current computer name in UTF-8.
| std::string platf::get_mac_address | ( | const std::string_view & | address | ) |
Return the hardware MAC address associated with a network address.
| address | Network address being parsed or filtered. |
| util::point_t platf::get_mouse_loc | ( | input_t & | input | ) |
Get the current mouse position on screen.
| input | The input_t instance to use. |
*Examples**
| bool platf::has_elevated_privileges | ( | bool | all_caps | ) |
Check is the current process is running with elevated privileges (e.g. system admin/etc.)
| all_caps | Bool that specifies whether to check all caps or only CAP_SYS_ADMIN |
| void platf::hscroll | ( | input_t & | input, |
| int | distance ) |
Apply a horizontal scroll event to the virtual mouse.
| input | Platform input backend that receives the event. |
| distance | High-resolution scroll distance reported by the client. |
|
nodiscard |
Initialize the platform-specific high precision timer.
Initialize the Linux high-precision timer file descriptor.
| input_t platf::input | ( | ) |
Create the platform input backend for a stream.
| void platf::keyboard_update | ( | input_t & | input, |
| uint16_t | modcode, | ||
| bool | release, | ||
| uint8_t | flags ) |
Press or release a virtual keyboard key.
| input | Platform input backend that receives the event. |
| modcode | Modifier key code to update. |
| release | Whether the key or button event is a release. |
| flags | Bit flags that modify the requested operation. |
| void platf::move_mouse | ( | input_t & | input, |
| int | deltaX, | ||
| int | deltaY ) |
Move mouse using the backend coordinate system.
| input | Platform input backend that receives the event. |
| deltaX | Delta x. |
| deltaY | Delta y. |
| bool platf::needs_encoder_reenumeration | ( | ) |
Check if GPUs/drivers have changed since the last call to this function.
Check whether DXGI reports that adapter or driver enumeration is stale.
Report whether encoder backends should be probed again before streaming.
true if a change has occurred or if it is unknown whether a change occurred.true because Linux GPU changes are not tracked by this backend.true because macOS GPU changes are not tracked by this backend. | void platf::open_url | ( | const std::string & | url | ) |
Open a url in the default web browser.
| url | The url to open. |
| void platf::pen_update | ( | client_input_t * | input, |
| const touch_port_t & | touch_port, | ||
| const pen_input_t & | pen ) |
Send a pen event to the OS.
Sends a pen event to the OS.
| input | The client-specific input context. |
| touch_port | The current viewport for translating to screen coordinates. |
| pen | The pen event. |
| bool platf::process_group_running | ( | std::uintptr_t | native_handle | ) |
Check if a process group still has running children.
| native_handle | The native handle of the process group. |
true if processes are still running. | bool platf::request_process_group_exit | ( | std::uintptr_t | native_handle | ) |
Attempt to gracefully terminate a process group.
| native_handle | The native handle of the process group. |
true if termination was successfully requested. | std::string platf::resolve_render_device | ( | ) |
Resolves the render device path to use for hardware encoding.
If config::video.adapter_name is set, returns that. Otherwise, auto-detects the GPU with a connected display via find_render_node_with_display(). Falls back to /dev/dri/renderD128 if detection fails.
| boost::process::v1::child platf::run_command | ( | bool | elevated, |
| bool | interactive, | ||
| const std::string & | cmd, | ||
| boost::filesystem::path & | working_dir, | ||
| const boost::process::v1::environment & | env, | ||
| FILE * | file, | ||
| std::error_code & | ec, | ||
| boost::process::v1::group * | group ) |
Launch a configured preparation or application command.
| elevated | Whether the command should run with elevated privileges. |
| interactive | Whether the command should run in an interactive session. |
| cmd | Command line to execute or inspect. |
| working_dir | Working directory for the child process. |
| env | Environment variables for the child process. |
| file | Optional stdio file handle connected to the child process. |
| ec | Error code returned by the asynchronous operation. |
| group | Process group used when launching the command. |
| void platf::scroll | ( | input_t & | input, |
| int | distance ) |
Apply a vertical scroll event to the virtual mouse.
| input | Platform input backend that receives the event. |
| distance | High-resolution scroll distance reported by the client. |
| bool platf::send | ( | send_info_t & | send_info | ) |
Send the serialized response over the active socket.
| send_info | Socket addresses, buffers, and sizes for the send operation. |
| bool platf::send_batch | ( | batched_send_info_t & | send_info | ) |
Send multiple fixed-size UDP payload blocks using the platform backend.
| send_info | Socket addresses, buffers, and sizes for the send operation. |
| void platf::set_thread_name | ( | const std::string & | name | ) |
Name the current thread for use with development tools.
| name | Human-readable name to assign. |
|
nodiscard |
Main entry point for publication of our service on macOS.
This function initiates a connection to the macOS mDNS service and requests to register our Sunshine service. Registration will occur asynchronously (unless it fails immediately, which is probably only possible if the host machine is misconfigured).
nullptr (if the registration fails immediately) or a uniqur_ptr<deinit_t>, which will manage polling for a response from the mDNS service, and then, when deconstructed, will deregister the service. | std::vector< supported_gamepad_t > & platf::supported_gamepads | ( | input_t * | input | ) |
Gets the supported gamepads for this platform backend.
This may be called prior to platf::input()!
| input | Pointer to the platform's input_t or nullptr. |
| void platf::touch_update | ( | client_input_t * | input, |
| const touch_port_t & | touch_port, | ||
| const touch_input_t & | touch ) |
Send a touch event to the OS.
Sends a touch event to the OS.
| input | The client-specific input context. |
| touch_port | The current viewport for translating to screen coordinates. |
| touch | The touch event. |
| void platf::unicode | ( | input_t & | input, |
| char * | utf8, | ||
| int | size ) |
Submit UTF-8 text input to the keyboard backend.
| input | Platform input backend that receives the event. |
| utf8 | UTF-8 text submitted by the client. |
| size | Number of bytes or elements requested. |
|
constexpr |
Moonlight speaker order for stereo audio.
|
constexpr |
Moonlight speaker order for 5.1 surround audio.
|
constexpr |
Moonlight speaker order for 7.1 surround audio.