ENH: GUI: add arm64 check logic for windows

jira: no-jira
Change-Id: Ic788d4ae9218b909eae5ce571d4436c39e77230a
(cherry picked from commit 323184e42c5f85c8738b03b890e5aaf3818e8858)
This commit is contained in:
lane.wei
2025-04-07 20:09:51 +08:00
committed by Noisyfox
parent 7af9802688
commit 320cd87f0b
5 changed files with 49 additions and 1 deletions

View File

@@ -1087,6 +1087,20 @@ GUI_App::GUI_App()
#endif #endif
reset_to_active(); reset_to_active();
#if defined(__WINDOWS__)
SYSTEM_INFO sysInfo;
GetNativeSystemInfo(&sysInfo);
switch (sysInfo.wProcessorArchitecture) {
case PROCESSOR_ARCHITECTURE_ARM64:
m_is_arm64 = true;
break;
case PROCESSOR_ARCHITECTURE_AMD64:
default:
m_is_arm64 = false;
break;
}
#endif
} }
void GUI_App::shutdown() void GUI_App::shutdown()

View File

@@ -238,6 +238,9 @@ private:
#ifdef __linux__ #ifdef __linux__
bool m_opengl_initialized{ false }; bool m_opengl_initialized{ false };
#endif #endif
#if defined(__WINDOWS__)
bool m_is_arm64{false};
#endif
//#ifdef _WIN32 //#ifdef _WIN32
@@ -583,6 +586,10 @@ public:
std::string get_download_model_url() {return m_mall_model_download_url;} std::string get_download_model_url() {return m_mall_model_download_url;}
std::string get_download_model_name() {return m_mall_model_download_name;} std::string get_download_model_name() {return m_mall_model_download_name;}
#if defined(__WINDOWS__)
bool is_running_on_arm64() { return m_is_arm64; }
#endif
void load_url(wxString url); void load_url(wxString url);
void open_mall_page_dialog(); void open_mall_page_dialog();
void open_publish_page_dialog(); void open_publish_page_dialog();

View File

@@ -804,6 +804,12 @@ void Http::set_extra_headers(std::map<std::string, std::string> headers)
extra_headers.swap(headers); extra_headers.swap(headers);
} }
std::map<std::string, std::string> Http::get_extra_headers()
{
std::lock_guard<std::mutex> l(g_mutex);
return extra_headers;
}
bool Http::ca_file_supported() bool Http::ca_file_supported()
{ {
::CURL *curl = ::curl_easy_init(); ::CURL *curl = ::curl_easy_init();

View File

@@ -90,6 +90,7 @@ public:
//BBS set global header for each http request //BBS set global header for each http request
static void set_extra_headers(std::map<std::string, std::string> headers); static void set_extra_headers(std::map<std::string, std::string> headers);
static std::map<std::string, std::string> get_extra_headers();
~Http(); ~Http();

View File

@@ -943,6 +943,16 @@ void PresetUpdater::priv::sync_plugins(std::string http_url, std::string plugin_
} }
} }
#if defined(__WINDOWS__)
if (GUI::wxGetApp().is_running_on_arm64()) {
//set to arm64 for plugins
std::map<std::string, std::string> current_headers = Slic3r::Http::get_extra_headers();
current_headers["X-BBL-OS-Type"] = "win_arm64";
Slic3r::Http::set_extra_headers(current_headers);
BOOST_LOG_TRIVIAL(info) << boost::format("set X-BBL-OS-Type to win_arm64");
}
#endif
try { try {
std::map<std::string, Resource> resources std::map<std::string, Resource> resources
{ {
@@ -953,6 +963,16 @@ void PresetUpdater::priv::sync_plugins(std::string http_url, std::string plugin_
catch (std::exception& e) { catch (std::exception& e) {
BOOST_LOG_TRIVIAL(warning) << format("[Orca Updater] sync_plugins: %1%", e.what()); BOOST_LOG_TRIVIAL(warning) << format("[Orca Updater] sync_plugins: %1%", e.what());
} }
#if defined(__WINDOWS__)
if (GUI::wxGetApp().is_running_on_arm64()) {
//set back
std::map<std::string, std::string> current_headers = Slic3r::Http::get_extra_headers();
current_headers["X-BBL-OS-Type"] = "windows";
Slic3r::Http::set_extra_headers(current_headers);
BOOST_LOG_TRIVIAL(info) << boost::format("set X-BBL-OS-Type back to windows");
}
#endif
bool result = get_cached_plugins_version(cached_version, force_upgrade); bool result = get_cached_plugins_version(cached_version, force_upgrade);
if (result) { if (result) {