Use Sunshine encoder hang workaround
This commit is contained in:
@@ -1939,30 +1939,6 @@ namespace video {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::chrono::steady_clock::time_point last_frame_timestamp;
|
std::chrono::steady_clock::time_point last_frame_timestamp;
|
||||||
std::chrono::steady_clock::time_point last_encoded_timestamp = std::chrono::steady_clock::now();
|
|
||||||
bool stop_encoding = false;
|
|
||||||
|
|
||||||
std::thread alive_check_thread([&last_encoded_timestamp, &stop_encoding]{
|
|
||||||
uint8_t fail_count = 0;
|
|
||||||
std::chrono::steady_clock::time_point _last_timestamp = last_encoded_timestamp;
|
|
||||||
for (;;) {
|
|
||||||
if (stop_encoding) return;
|
|
||||||
std::this_thread::sleep_for(1s);
|
|
||||||
if (last_encoded_timestamp == _last_timestamp) {
|
|
||||||
fail_count += 1;
|
|
||||||
if (fail_count > 3) {
|
|
||||||
BOOST_LOG(error) << "Hang detected!!! Aborting..."sv;
|
|
||||||
proc::proc.terminate(true);
|
|
||||||
std::this_thread::sleep_for(1s);
|
|
||||||
abort();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
fail_count = 0;
|
|
||||||
_last_timestamp = last_encoded_timestamp;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
// Break out of the encoding loop if any of the following are true:
|
// Break out of the encoding loop if any of the following are true:
|
||||||
@@ -2018,13 +1994,9 @@ namespace video {
|
|||||||
}
|
}
|
||||||
|
|
||||||
last_frame_timestamp = *frame_timestamp;
|
last_frame_timestamp = *frame_timestamp;
|
||||||
last_encoded_timestamp = std::chrono::steady_clock::now();
|
|
||||||
|
|
||||||
session->request_normal_frame();
|
session->request_normal_frame();
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_encoding = true;
|
|
||||||
alive_check_thread.join();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input::touch_port_t make_port(platf::display_t *display, const config_t &config) {
|
input::touch_port_t make_port(platf::display_t *display, const config_t &config) {
|
||||||
|
|||||||
Reference in New Issue
Block a user