From 6f027941b41539d66cf216ae9da8c0109f3708ba Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 8 Dec 2025 18:45:24 -0800 Subject: [PATCH 1/3] github/steamrt4: Increase retention time To match the wine dll artifacts --- .github/workflows/steamrt4.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/steamrt4.yml b/.github/workflows/steamrt4.yml index 5519dbbd6..57002ba5f 100644 --- a/.github/workflows/steamrt4.yml +++ b/.github/workflows/steamrt4.yml @@ -75,5 +75,5 @@ jobs: overwrite: true name: steamrt4_steampipe_depot path: ${{runner.workspace}}/install/* - retention-days: 1 + retention-days: 60 compression-level: 9 From 91fab07ef1919c6127818b555b0b1e72025cf1db Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 9 Dec 2025 10:44:09 -0800 Subject: [PATCH 2/3] Steamrt: Add missing toolmanifest.vdf --- Source/Steam/CMakeLists.txt | 3 +++ Source/Steam/toolmanifest.vdf | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 Source/Steam/toolmanifest.vdf diff --git a/Source/Steam/CMakeLists.txt b/Source/Steam/CMakeLists.txt index 63309c460..eae1358d2 100644 --- a/Source/Steam/CMakeLists.txt +++ b/Source/Steam/CMakeLists.txt @@ -31,3 +31,6 @@ install(FILES emulator.json install(FILES ConfigTemplate.json DESTINATION / COMPONENT Runtime) +install(FILES toolmanifest.vdf + DESTINATION / + COMPONENT Runtime) diff --git a/Source/Steam/toolmanifest.vdf b/Source/Steam/toolmanifest.vdf new file mode 100644 index 000000000..f6e6dc956 --- /dev/null +++ b/Source/Steam/toolmanifest.vdf @@ -0,0 +1,8 @@ +"manifest" +{ + "commandline" "/FEXCompatTool %verb%" + "filter_exclusive_priority" "2" + "version" "2" + "use_tool_subprocess_reaper" "1" + "compatmanager_layer_name" "fex" +} From a44627df294dd4d9f64b43ce8264e8edfae74748 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 9 Dec 2025 10:44:47 -0800 Subject: [PATCH 3/3] Steamrt/ServerManager: Change loop over to a blocking read Discard any data and wait for EOF for now. That way we know when to exit. --- Source/Steam/ServerManager.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Source/Steam/ServerManager.cpp b/Source/Steam/ServerManager.cpp index 9d67d42d9..c6a5b94b0 100644 --- a/Source/Steam/ServerManager.cpp +++ b/Source/Steam/ServerManager.cpp @@ -3,6 +3,7 @@ #include "Common/FEXServerClient.h" #include +#include #include #include @@ -87,21 +88,20 @@ int main(int argc, const char** argv, char** const envp) { close(ServerFD); ServerFD = -1; - // stdin will be a pipe, so wait until that FD is closed. + // Do a blocking read, discarding any written data and wait for EOF. while (true) { - pollfd p { - .fd = STDIN_FILENO, - .events = POLLRDHUP, - .revents = 0, - }; - - int events = poll(&p, 1, -1); - if (events == -1 && errno == EINTR) { - continue; - } - - if (events > 0 && (p.revents & (POLLRDHUP | POLLERR | POLLHUP | POLLNVAL))) { - // Error or pressure-vessel hung-up. + char buf[4096]; + auto read_len = ::read(STDIN_FILENO, buf, sizeof(buf)); + if (read_len < 0) { + if (errno == EINTR || errno == EAGAIN) { + // Interrupted, try again. + continue; + } else { + // Error on read. + break; + } + } else if (read_len == 0) { + // EOF break; } }