|
27 | 27 | #include "llviewerprecompiledheaders.h" |
28 | 28 | #include "llvvmquery.h" |
29 | 29 |
|
| 30 | +#include <tuple> |
30 | 31 | #include "llcorehttputil.h" |
31 | 32 | #include "llcoros.h" |
32 | 33 | #include "llevents.h" |
@@ -143,13 +144,28 @@ namespace |
143 | 144 | #if LL_VELOPACK |
144 | 145 | std::string velopack_url = platforms[platform]["velopack_url"].asString(); |
145 | 146 | U32 updater_service = gSavedSettings.getU32("UpdaterServiceSetting"); |
146 | | - if (!velopack_url.empty() && (update_required || updater_service != 0)) |
| 147 | + std::string update_version = result["version"].asString(); |
| 148 | + const LLVersionInfo& vi = LLVersionInfo::instance(); |
| 149 | + S32 cur[] = { vi.getMajor(), vi.getMinor(), vi.getPatch() }; |
| 150 | + U64 cur_build = vi.getBuild(); |
| 151 | + S32 upd[] = { 0, 0, 0 }; |
| 152 | + U64 upd_build = 0; |
| 153 | + sscanf(update_version.c_str(), "%d.%d.%d.%llu", |
| 154 | + &upd[0], &upd[1], &upd[2], &upd_build); |
| 155 | + bool is_newer = std::tie(upd[0], upd[1], upd[2], upd_build) |
| 156 | + > std::tie(cur[0], cur[1], cur[2], cur_build); |
| 157 | + if (!velopack_url.empty() && !is_newer && !update_required) |
| 158 | + { |
| 159 | + LL_INFOS("VVM") << "VVM version " << update_version |
| 160 | + << " is not newer than running version " << version |
| 161 | + << ", skipping optional update" << LL_ENDL; |
| 162 | + } |
| 163 | + else if (!velopack_url.empty() && (update_required || updater_service != 0)) |
147 | 164 | { |
148 | 165 | LL_INFOS("VVM") << "Velopack update URL: " << velopack_url |
149 | 166 | << " required: " << update_required << LL_ENDL; |
150 | 167 | velopack_set_update_url(velopack_url); |
151 | 168 |
|
152 | | - std::string update_version = result["version"].asString(); |
153 | 169 | LLCoros::instance().launch("VelopackUpdateCheck", |
154 | 170 | [update_required, update_version, relnotes]() |
155 | 171 | { |
|
0 commit comments