Files
shadPS4/src/core/ipc/ipc.h
Vinicius Rangel 71f343d2d6 Impl sceSystemServiceLoadExec (#3647)
* Add support for restarting the emulator with new configurations

- Implement `Restart` function in `Emulator` to enable process relaunch with updated parameters.
- Modify `sceSystemServiceLoadExec` to use the restart functionality.

* Add logging for emulator restart and system service load execution

* Add IPC emulator PID output command

Impl `PID` output command to return the emulator process ID
- required for launches supporting emulator restart

* Add log file append mode support (used after restarting to keep the same log file)

* Keep game root between restarts

* add --wait-for-debugger option flag

* add --wait-for-pid flag

used for sync between parent & child process during restart

* impl restart via ipc

* fix override game root

* add qt flags to allow restart
2025-09-25 23:01:52 -03:00

44 lines
821 B
C++

// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/singleton.h"
#include <semaphore>
#include <string>
#include <thread>
#include <vector>
class IPC {
bool enabled{false};
std::jthread input_thread{};
std::binary_semaphore run_semaphore{0};
std::binary_semaphore start_semaphore{0};
public:
static IPC& Instance() {
return *Common::Singleton<IPC>::Instance();
}
void Init();
operator bool() const {
return enabled;
}
[[nodiscard]] bool IsEnabled() const {
return enabled;
}
void WaitForStart() {
start_semaphore.acquire();
}
void SendRestart(const std::vector<std::string>& args);
private:
[[noreturn]] void InputLoop();
};