backend-infra-engineer: fix release build failures
This commit is contained in:
@@ -207,9 +207,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Shift+P",
|
.shortcut_hint = "Ctrl+Shift+P",
|
||||||
.visibility_flag = &show_control_panel_,
|
.visibility_flag = &show_control_panel_,
|
||||||
|
.priority = 10,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 10});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.ow_main",
|
panel_manager->RegisterPanel({.card_id = "palette.ow_main",
|
||||||
.display_name = "Overworld Main",
|
.display_name = "Overworld Main",
|
||||||
@@ -218,9 +218,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+1",
|
.shortcut_hint = "Ctrl+Alt+1",
|
||||||
.visibility_flag = &show_ow_main_panel_,
|
.visibility_flag = &show_ow_main_panel_,
|
||||||
|
.priority = 20,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 20});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.ow_animated",
|
panel_manager->RegisterPanel({.card_id = "palette.ow_animated",
|
||||||
.display_name = "Overworld Animated",
|
.display_name = "Overworld Animated",
|
||||||
@@ -229,9 +229,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+2",
|
.shortcut_hint = "Ctrl+Alt+2",
|
||||||
.visibility_flag = &show_ow_animated_panel_,
|
.visibility_flag = &show_ow_animated_panel_,
|
||||||
|
.priority = 30,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 30});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.dungeon_main",
|
panel_manager->RegisterPanel({.card_id = "palette.dungeon_main",
|
||||||
.display_name = "Dungeon Main",
|
.display_name = "Dungeon Main",
|
||||||
@@ -240,9 +240,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+3",
|
.shortcut_hint = "Ctrl+Alt+3",
|
||||||
.visibility_flag = &show_dungeon_main_panel_,
|
.visibility_flag = &show_dungeon_main_panel_,
|
||||||
|
.priority = 40,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 40});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.sprites",
|
panel_manager->RegisterPanel({.card_id = "palette.sprites",
|
||||||
.display_name = "Global Sprite Palettes",
|
.display_name = "Global Sprite Palettes",
|
||||||
@@ -251,9 +251,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+4",
|
.shortcut_hint = "Ctrl+Alt+4",
|
||||||
.visibility_flag = &show_sprite_panel_,
|
.visibility_flag = &show_sprite_panel_,
|
||||||
|
.priority = 50,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 50});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux1",
|
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux1",
|
||||||
.display_name = "Sprites Aux 1",
|
.display_name = "Sprites Aux 1",
|
||||||
@@ -262,9 +262,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+7",
|
.shortcut_hint = "Ctrl+Alt+7",
|
||||||
.visibility_flag = &show_sprites_aux1_panel_,
|
.visibility_flag = &show_sprites_aux1_panel_,
|
||||||
|
.priority = 51,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 51});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux2",
|
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux2",
|
||||||
.display_name = "Sprites Aux 2",
|
.display_name = "Sprites Aux 2",
|
||||||
@@ -273,9 +273,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+8",
|
.shortcut_hint = "Ctrl+Alt+8",
|
||||||
.visibility_flag = &show_sprites_aux2_panel_,
|
.visibility_flag = &show_sprites_aux2_panel_,
|
||||||
|
.priority = 52,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 52});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux3",
|
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux3",
|
||||||
.display_name = "Sprites Aux 3",
|
.display_name = "Sprites Aux 3",
|
||||||
@@ -284,9 +284,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+9",
|
.shortcut_hint = "Ctrl+Alt+9",
|
||||||
.visibility_flag = &show_sprites_aux3_panel_,
|
.visibility_flag = &show_sprites_aux3_panel_,
|
||||||
|
.priority = 53,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 53});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.equipment",
|
panel_manager->RegisterPanel({.card_id = "palette.equipment",
|
||||||
.display_name = "Equipment Palettes",
|
.display_name = "Equipment Palettes",
|
||||||
@@ -295,9 +295,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+5",
|
.shortcut_hint = "Ctrl+Alt+5",
|
||||||
.visibility_flag = &show_equipment_panel_,
|
.visibility_flag = &show_equipment_panel_,
|
||||||
|
.priority = 60,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 60});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.quick_access",
|
panel_manager->RegisterPanel({.card_id = "palette.quick_access",
|
||||||
.display_name = "Quick Access",
|
.display_name = "Quick Access",
|
||||||
@@ -306,9 +306,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+Q",
|
.shortcut_hint = "Ctrl+Alt+Q",
|
||||||
.visibility_flag = &show_quick_access_,
|
.visibility_flag = &show_quick_access_,
|
||||||
|
.priority = 70,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 70});
|
|
||||||
|
|
||||||
panel_manager->RegisterPanel({.card_id = "palette.custom",
|
panel_manager->RegisterPanel({.card_id = "palette.custom",
|
||||||
.display_name = "Custom Palette",
|
.display_name = "Custom Palette",
|
||||||
@@ -317,9 +317,9 @@ void PaletteEditor::Initialize() {
|
|||||||
.category = "Palette",
|
.category = "Palette",
|
||||||
.shortcut_hint = "Ctrl+Alt+C",
|
.shortcut_hint = "Ctrl+Alt+C",
|
||||||
.visibility_flag = &show_custom_palette_,
|
.visibility_flag = &show_custom_palette_,
|
||||||
|
.priority = 80,
|
||||||
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
|
||||||
.disabled_tooltip = "Load a ROM first",
|
.disabled_tooltip = "Load a ROM first"});
|
||||||
.priority = 80});
|
|
||||||
|
|
||||||
// Show control panel by default when Palette Editor is activated
|
// Show control panel by default when Palette Editor is activated
|
||||||
panel_manager->ShowPanel(session_id, "palette.control_panel");
|
panel_manager->ShowPanel(session_id, "palette.control_panel");
|
||||||
|
|||||||
@@ -86,9 +86,10 @@ absl::Status EmulatorResetCommandHandler::Execute(
|
|||||||
Rom* rom, const resources::ArgumentParser& parser,
|
Rom* rom, const resources::ArgumentParser& parser,
|
||||||
resources::OutputFormatter& formatter) {
|
resources::OutputFormatter& formatter) {
|
||||||
EmulatorClient client;
|
EmulatorClient client;
|
||||||
agent::Empty request;
|
agent::ControlRequest request;
|
||||||
|
request.set_action("reset");
|
||||||
auto response_or =
|
auto response_or =
|
||||||
client.CallRpc(&agent::EmulatorService::Stub::Reset, request);
|
client.CallRpc(&agent::EmulatorService::Stub::ControlEmulator, request);
|
||||||
if (!response_or.ok()) {
|
if (!response_or.ok()) {
|
||||||
return response_or.status();
|
return response_or.status();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,13 @@ const TestSuite kTestSuites[] = {
|
|||||||
std::string ExecuteCommand(const std::string& cmd) {
|
std::string ExecuteCommand(const std::string& cmd) {
|
||||||
std::array<char, 256> buffer;
|
std::array<char, 256> buffer;
|
||||||
std::string result;
|
std::string result;
|
||||||
|
#ifdef _WIN32
|
||||||
|
std::unique_ptr<FILE, decltype(&_pclose)> pipe(_popen(cmd.c_str(), "r"),
|
||||||
|
_pclose);
|
||||||
|
#else
|
||||||
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"),
|
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"),
|
||||||
pclose);
|
pclose);
|
||||||
|
#endif
|
||||||
if (!pipe) {
|
if (!pipe) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,6 +211,18 @@ grpc::Status EmulatorServiceImpl::PressButtons(grpc::ServerContext* context,
|
|||||||
return grpc::Status::OK;
|
return grpc::Status::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
grpc::Status EmulatorServiceImpl::ReleaseButtons(grpc::ServerContext* context,
|
||||||
|
const agent::ButtonRequest* request,
|
||||||
|
agent::CommandResponse* response) {
|
||||||
|
if (!emulator_) return grpc::Status(grpc::StatusCode::UNAVAILABLE, "Emulator not initialized.");
|
||||||
|
auto& input_manager = emulator_->input_manager();
|
||||||
|
for (int i = 0; i < request->buttons_size(); i++) {
|
||||||
|
input_manager.ReleaseButton(ToSnesButton(static_cast<agent::Button>(request->buttons(i))));
|
||||||
|
}
|
||||||
|
response->set_success(true);
|
||||||
|
return grpc::Status::OK;
|
||||||
|
}
|
||||||
|
|
||||||
grpc::Status EmulatorServiceImpl::HoldButtons(grpc::ServerContext* context,
|
grpc::Status EmulatorServiceImpl::HoldButtons(grpc::ServerContext* context,
|
||||||
const agent::ButtonHoldRequest* request,
|
const agent::ButtonHoldRequest* request,
|
||||||
agent::CommandResponse* response) {
|
agent::CommandResponse* response) {
|
||||||
|
|||||||
@@ -38,6 +38,9 @@ class EmulatorServiceImpl final : public agent::EmulatorService::Service {
|
|||||||
grpc::Status PressButtons(grpc::ServerContext* context,
|
grpc::Status PressButtons(grpc::ServerContext* context,
|
||||||
const agent::ButtonRequest* request,
|
const agent::ButtonRequest* request,
|
||||||
agent::CommandResponse* response) override;
|
agent::CommandResponse* response) override;
|
||||||
|
grpc::Status ReleaseButtons(grpc::ServerContext* context,
|
||||||
|
const agent::ButtonRequest* request,
|
||||||
|
agent::CommandResponse* response) override;
|
||||||
grpc::Status HoldButtons(grpc::ServerContext* context,
|
grpc::Status HoldButtons(grpc::ServerContext* context,
|
||||||
const agent::ButtonHoldRequest* request,
|
const agent::ButtonHoldRequest* request,
|
||||||
agent::CommandResponse* response) override;
|
agent::CommandResponse* response) override;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "core/asar_wrapper.h"
|
#include "core/asar_wrapper.h"
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
@@ -411,7 +412,11 @@ absl::StatusOr<AsarPatchResult> AsarWrapper::ApplyPatchWithBinary(
|
|||||||
// Execute using popen to capture output
|
// Execute using popen to capture output
|
||||||
std::array<char, 128> buffer;
|
std::array<char, 128> buffer;
|
||||||
std::string output;
|
std::string output;
|
||||||
|
#ifdef _WIN32
|
||||||
|
FILE* pipe = _popen(cmd.str().c_str(), "r");
|
||||||
|
#else
|
||||||
FILE* pipe = popen(cmd.str().c_str(), "r");
|
FILE* pipe = popen(cmd.str().c_str(), "r");
|
||||||
|
#endif
|
||||||
if (!pipe) {
|
if (!pipe) {
|
||||||
fs::remove(temp_rom, ec);
|
fs::remove(temp_rom, ec);
|
||||||
fs::remove(temp_symbols, ec);
|
fs::remove(temp_symbols, ec);
|
||||||
@@ -421,9 +426,9 @@ absl::StatusOr<AsarPatchResult> AsarWrapper::ApplyPatchWithBinary(
|
|||||||
while (fgets(buffer.data(), buffer.size(), pipe) != nullptr) {
|
while (fgets(buffer.data(), buffer.size(), pipe) != nullptr) {
|
||||||
output += buffer.data();
|
output += buffer.data();
|
||||||
}
|
}
|
||||||
|
#ifndef _WIN32
|
||||||
int exit_status = pclose(pipe);
|
int exit_status = pclose(pipe);
|
||||||
int exit_code = exit_status;
|
int exit_code = exit_status;
|
||||||
#ifndef _WIN32
|
|
||||||
if (exit_status != -1) {
|
if (exit_status != -1) {
|
||||||
if (WIFEXITED(exit_status)) {
|
if (WIFEXITED(exit_status)) {
|
||||||
exit_code = WEXITSTATUS(exit_status);
|
exit_code = WEXITSTATUS(exit_status);
|
||||||
@@ -431,6 +436,8 @@ absl::StatusOr<AsarPatchResult> AsarWrapper::ApplyPatchWithBinary(
|
|||||||
exit_code = 128 + WTERMSIG(exit_status);
|
exit_code = 128 + WTERMSIG(exit_status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int exit_code = _pclose(pipe);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!patch_dir.empty()) {
|
if (!patch_dir.empty()) {
|
||||||
|
|||||||
@@ -221,7 +221,13 @@ absl::StatusOr<std::string> VersionManager::RunCommandOutput(const std::string&
|
|||||||
|
|
||||||
std::array<char, 128> buffer;
|
std::array<char, 128> buffer;
|
||||||
std::string result;
|
std::string result;
|
||||||
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(full_cmd.c_str(), "r"), pclose);
|
#ifdef _WIN32
|
||||||
|
std::unique_ptr<FILE, decltype(&_pclose)> pipe(_popen(full_cmd.c_str(), "r"),
|
||||||
|
_pclose);
|
||||||
|
#else
|
||||||
|
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(full_cmd.c_str(), "r"),
|
||||||
|
pclose);
|
||||||
|
#endif
|
||||||
if (!pipe) {
|
if (!pipe) {
|
||||||
return absl::InternalError("popen() failed!");
|
return absl::InternalError("popen() failed!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ service EmulatorService {
|
|||||||
|
|
||||||
// --- Input & State ---
|
// --- Input & State ---
|
||||||
rpc PressButtons(ButtonRequest) returns (CommandResponse);
|
rpc PressButtons(ButtonRequest) returns (CommandResponse);
|
||||||
|
rpc ReleaseButtons(ButtonRequest) returns (CommandResponse);
|
||||||
rpc HoldButtons(ButtonHoldRequest) returns (CommandResponse);
|
rpc HoldButtons(ButtonHoldRequest) returns (CommandResponse);
|
||||||
rpc GetGameState(GameStateRequest) returns (GameStateResponse);
|
rpc GetGameState(GameStateRequest) returns (GameStateResponse);
|
||||||
rpc ReadMemory(MemoryRequest) returns (MemoryResponse);
|
rpc ReadMemory(MemoryRequest) returns (MemoryResponse);
|
||||||
|
|||||||
Reference in New Issue
Block a user