mirror of
https://github.com/LizardByte/Sunshine.git
synced 2025-02-28 22:13:29 +00:00
Fix stream not starting properly on Windows when option "cmd" omitted in apps.json
This commit is contained in:
parent
f06f5dde2f
commit
1c28214260
@ -7,9 +7,8 @@
|
|||||||
"name":"Steam BigPicture",
|
"name":"Steam BigPicture",
|
||||||
|
|
||||||
"output":"steam.txt",
|
"output":"steam.txt",
|
||||||
"cmd":"steam -tenfoot",
|
|
||||||
"prep-cmd":[
|
"prep-cmd":[
|
||||||
{ "do":"steam -shutdown" }
|
{"do":"steam \"steam://open/bigpicture\""}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -41,7 +41,7 @@ int exe(const std::string &cmd, bp::environment &env, file_t &file, std::error_c
|
|||||||
}
|
}
|
||||||
|
|
||||||
int proc_t::execute(int app_id) {
|
int proc_t::execute(int app_id) {
|
||||||
if(!_process.running() && _app_id != -1) {
|
if(!running() && _app_id != -1) {
|
||||||
// previous process exited on it's own, reset _process_handle
|
// previous process exited on it's own, reset _process_handle
|
||||||
_process_handle = bp::group();
|
_process_handle = bp::group();
|
||||||
|
|
||||||
@ -91,7 +91,10 @@ int proc_t::execute(int app_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BOOST_LOG(debug) << "Starting ["sv << proc.cmd << ']';
|
BOOST_LOG(debug) << "Starting ["sv << proc.cmd << ']';
|
||||||
if(proc.output.empty() || proc.output == "null"sv) {
|
if(proc.cmd.empty()) {
|
||||||
|
placebo = true;
|
||||||
|
}
|
||||||
|
else if(proc.output.empty() || proc.output == "null"sv) {
|
||||||
_process = bp::child(_process_handle, proc.cmd, _env, bp::std_out > bp::null, bp::std_err > bp::null, ec);
|
_process = bp::child(_process_handle, proc.cmd, _env, bp::std_out > bp::null, bp::std_err > bp::null, ec);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -109,7 +112,7 @@ int proc_t::execute(int app_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int proc_t::running() {
|
int proc_t::running() {
|
||||||
if(_process.running()) {
|
if(placebo || _process.running()) {
|
||||||
return _app_id;
|
return _app_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,6 +123,7 @@ void proc_t::terminate() {
|
|||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
|
|
||||||
// Ensure child process is terminated
|
// Ensure child process is terminated
|
||||||
|
placebo = false;
|
||||||
process_end(_process, _process_handle);
|
process_end(_process, _process_handle);
|
||||||
_app_id = -1;
|
_app_id = -1;
|
||||||
|
|
||||||
@ -265,9 +269,6 @@ std::optional<proc::proc_t> parse(const std::string& file_name) {
|
|||||||
if(cmd) {
|
if(cmd) {
|
||||||
ctx.cmd = parse_env_val(this_env, *cmd);
|
ctx.cmd = parse_env_val(this_env, *cmd);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
ctx.cmd = "sh -c \"while true; do sleep 10000; done;\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.name = std::move(name);
|
ctx.name = std::move(name);
|
||||||
ctx.prep_cmds = std::move(prep_cmds);
|
ctx.prep_cmds = std::move(prep_cmds);
|
||||||
|
@ -75,6 +75,9 @@ private:
|
|||||||
boost::process::environment _env;
|
boost::process::environment _env;
|
||||||
std::vector<ctx_t> _apps;
|
std::vector<ctx_t> _apps;
|
||||||
|
|
||||||
|
// If no command associated with _app_id, yet it's still running
|
||||||
|
bool placebo {};
|
||||||
|
|
||||||
boost::process::child _process;
|
boost::process::child _process;
|
||||||
boost::process::group _process_handle;
|
boost::process::group _process_handle;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user