![]() |
Sunshine latest
Self-hosted game stream host for Moonlight.
|
Miscellaneous definitions for Linux. More...
#include <fstream>
#include <iostream>
#include <arpa/inet.h>
#include <dlfcn.h>
#include <ifaddrs.h>
#include <netinet/udp.h>
#include <pwd.h>
#include <boost/asio/ip/address.hpp>
#include <boost/asio/ip/host_name.hpp>
#include <boost/process/v1.hpp>
#include <fcntl.h>
#include <unistd.h>
#include "graphics.h"
#include "misc.h"
#include "src/config.h"
#include "src/entry_handler.h"
#include "src/logging.h"
#include "src/platform/common.h"
#include "vaapi.h"
Classes | |
class | platf::linux_high_precision_timer |
class | platf::qos_t |
Macros | |
#define | _GNU_SOURCE 1 |
#define | SUNSHINE_GNUC_EXTENSION |
Typedefs | |
using | platf::ifaddr_t = util::safe_ptr<ifaddrs, freeifaddrs> |
Enumerations | |
enum | platf::source::source_e : std::size_t { platf::source::WAYLAND , platf::source::MAX_FLAGS } |
Functions | |
void | platf::adjust_thread_priority (thread_priority_e priority) |
std::filesystem::path | platf::appdata () |
Performs migration if necessary, then returns the appdata directory. | |
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) |
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. | |
std::string | platf::from_sockaddr (const sockaddr *const) |
std::pair< std::uint16_t, std::string > | platf::from_sockaddr_ex (const sockaddr *const) |
std::string | platf::get_host_name () |
Returns the current computer name in UTF-8. | |
ifaddr_t | platf::get_ifaddrs () |
std::string | platf::get_mac_address (const std::string_view &address) |
void * | dyn::handle (const std::vector< const char * > &libs) |
std::unique_ptr< deinit_t > | platf::init () |
int | dyn::load (void *handle, const std::vector< std::tuple< apiproc *, const char * > > &funcs, bool strict) |
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. | |
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. | |
void | platf::restart () |
void | platf::restart_on_exit () |
bp::child | platf::run_command (bool elevated, bool interactive, const std::string &cmd, boost::filesystem::path &working_dir, const bp::environment &env, FILE *file, std::error_code &ec, bp::group *group) |
Run a command on the users profile. | |
bool | platf::send (send_info_t &send_info) |
bool | platf::send_batch (batched_send_info_t &send_info) |
int | platf::set_env (const std::string &name, const std::string &value) |
Set an environment variable. | |
void | platf::streaming_will_start () |
void | platf::streaming_will_stop () |
struct sockaddr_in | platf::to_sockaddr (boost::asio::ip::address_v4 address, uint16_t port) |
struct sockaddr_in6 | platf::to_sockaddr (boost::asio::ip::address_v6 address, uint16_t port) |
int | platf::unset_env (const std::string &name) |
Unset an environment variable. | |
bool | platf::verify_wl () |
std::shared_ptr< display_t > | platf::wl_display (mem_type_e hwdevice_type, const std::string &display_name, const video::config_t &config) |
std::vector< std::string > | platf::wl_display_names () |
Variables | |
window_system_e | window_system |
Miscellaneous definitions for Linux.
enum platf::source::source_e : std::size_t |
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< 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::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. |
std::string platf::get_host_name | ( | ) |
Returns the current computer name in UTF-8.
bool platf::needs_encoder_reenumeration | ( | ) |
Check if GPUs/drivers have changed since the last call to this function.
Returns if GPUs/drivers have changed since the last call to this function.
true
if a change has occurred or if it is unknown whether a change occurred. void platf::open_url | ( | const std::string & | url | ) |
Open a url in the default web browser.
url | The url to open. |
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. bp::child platf::run_command | ( | bool | elevated, |
bool | interactive, | ||
const std::string & | cmd, | ||
boost::filesystem::path & | working_dir, | ||
const bp::environment & | env, | ||
FILE * | file, | ||
std::error_code & | ec, | ||
bp::group * | group ) |
Run a command on the users profile.
Launches a child process as the user, using the current user's environment and a specific working directory.
elevated | Specify whether to elevate the process. |
interactive | Specify whether this will run in a window or hidden. |
cmd | The command to run. |
working_dir | The working directory for the new process. |
env | The environment variables to use for the new process. |
file | A file object to redirect the child process's output to (may be nullptr ). |
ec | An error code, set to indicate any errors that occur during the launch process. |
group | A pointer to a bp::group object to which the new process should belong (may be nullptr ). |
bp::child
object representing the new process, or an empty bp::child
object if the launch fails. int platf::set_env | ( | const std::string & | name, |
const std::string & | value ) |
Set an environment variable.
name | The name of the environment variable. |
value | The value to set the environment variable to. |
int platf::unset_env | ( | const std::string & | name | ) |
Unset an environment variable.
name | The name of the environment variable. |