forked from suyu/suyu
Merge pull request #7207 from ameerj/vs-2022
cmake: Update conan to support Visual Studio 2022
This commit is contained in:
commit
b65314dc21
3 changed files with 43 additions and 41 deletions
|
@ -411,12 +411,13 @@ if (CONAN_REQUIRED_LIBS)
|
||||||
# Download conan.cmake automatically, you can also just copy the conan.cmake file
|
# Download conan.cmake automatically, you can also just copy the conan.cmake file
|
||||||
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
|
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
|
||||||
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
|
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
|
||||||
file(DOWNLOAD "https://github.com/conan-io/cmake-conan/raw/v0.15/conan.cmake"
|
# TODO: Use a tagged release. The latest tagged release does not support VS2022 as of this writing.
|
||||||
|
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/43e385830ee35377dbd2dcbe8d5a9e750301ea00/conan.cmake"
|
||||||
"${CMAKE_BINARY_DIR}/conan.cmake")
|
"${CMAKE_BINARY_DIR}/conan.cmake")
|
||||||
endif()
|
endif()
|
||||||
include(${CMAKE_BINARY_DIR}/conan.cmake)
|
include(${CMAKE_BINARY_DIR}/conan.cmake)
|
||||||
|
|
||||||
conan_check(VERSION 1.24.0 REQUIRED)
|
conan_check(VERSION 1.41.0 REQUIRED)
|
||||||
|
|
||||||
# Manually add iconv to fix a dep conflict between qt and sdl2
|
# Manually add iconv to fix a dep conflict between qt and sdl2
|
||||||
# We don't need to add it through find_package or anything since the other two can find it just fine
|
# We don't need to add it through find_package or anything since the other two can find it just fine
|
||||||
|
|
|
@ -64,7 +64,7 @@ public:
|
||||||
using propagate_on_container_copy_assignment = std::true_type;
|
using propagate_on_container_copy_assignment = std::true_type;
|
||||||
using propagate_on_container_move_assignment = std::true_type;
|
using propagate_on_container_move_assignment = std::true_type;
|
||||||
using propagate_on_container_swap = std::true_type;
|
using propagate_on_container_swap = std::true_type;
|
||||||
using is_always_equal = std::true_type;
|
using is_always_equal = std::false_type;
|
||||||
|
|
||||||
constexpr AlignmentAllocator() noexcept = default;
|
constexpr AlignmentAllocator() noexcept = default;
|
||||||
|
|
||||||
|
@ -83,6 +83,11 @@ public:
|
||||||
struct rebind {
|
struct rebind {
|
||||||
using other = AlignmentAllocator<T2, Align>;
|
using other = AlignmentAllocator<T2, Align>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename T2, size_t Align2>
|
||||||
|
constexpr bool operator==(const AlignmentAllocator<T2, Align2>&) const noexcept {
|
||||||
|
return std::is_same_v<T, T2> && Align == Align2;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Common
|
} // namespace Common
|
||||||
|
|
|
@ -471,46 +471,42 @@ CalibrationConfigurationJob::CalibrationConfigurationJob(
|
||||||
std::function<void(u16, u16, u16, u16)> data_callback) {
|
std::function<void(u16, u16, u16, u16)> data_callback) {
|
||||||
|
|
||||||
std::thread([=, this] {
|
std::thread([=, this] {
|
||||||
constexpr u16 CALIBRATION_THRESHOLD = 100;
|
|
||||||
|
|
||||||
u16 min_x{UINT16_MAX};
|
|
||||||
u16 min_y{UINT16_MAX};
|
|
||||||
u16 max_x{};
|
|
||||||
u16 max_y{};
|
|
||||||
|
|
||||||
Status current_status{Status::Initialized};
|
Status current_status{Status::Initialized};
|
||||||
SocketCallback callback{[](Response::Version) {}, [](Response::PortInfo) {},
|
SocketCallback callback{
|
||||||
[&](Response::PadData data) {
|
[](Response::Version) {}, [](Response::PortInfo) {},
|
||||||
if (current_status == Status::Initialized) {
|
[&](Response::PadData data) {
|
||||||
// Receiving data means the communication is ready now
|
static constexpr u16 CALIBRATION_THRESHOLD = 100;
|
||||||
current_status = Status::Ready;
|
static constexpr u16 MAX_VALUE = UINT16_MAX;
|
||||||
status_callback(current_status);
|
|
||||||
}
|
|
||||||
if (data.touch[0].is_active == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LOG_DEBUG(Input, "Current touch: {} {}", data.touch[0].x,
|
|
||||||
data.touch[0].y);
|
|
||||||
min_x = std::min(min_x, static_cast<u16>(data.touch[0].x));
|
|
||||||
min_y = std::min(min_y, static_cast<u16>(data.touch[0].y));
|
|
||||||
if (current_status == Status::Ready) {
|
|
||||||
// First touch - min data (min_x/min_y)
|
|
||||||
current_status = Status::Stage1Completed;
|
|
||||||
status_callback(current_status);
|
|
||||||
}
|
|
||||||
if (data.touch[0].x - min_x > CALIBRATION_THRESHOLD &&
|
|
||||||
data.touch[0].y - min_y > CALIBRATION_THRESHOLD) {
|
|
||||||
// Set the current position as max value and finishes
|
|
||||||
// configuration
|
|
||||||
max_x = data.touch[0].x;
|
|
||||||
max_y = data.touch[0].y;
|
|
||||||
current_status = Status::Completed;
|
|
||||||
data_callback(min_x, min_y, max_x, max_y);
|
|
||||||
status_callback(current_status);
|
|
||||||
|
|
||||||
complete_event.Set();
|
if (current_status == Status::Initialized) {
|
||||||
}
|
// Receiving data means the communication is ready now
|
||||||
}};
|
current_status = Status::Ready;
|
||||||
|
status_callback(current_status);
|
||||||
|
}
|
||||||
|
const auto& touchpad_0 = data.touch[0];
|
||||||
|
if (touchpad_0.is_active == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LOG_DEBUG(Input, "Current touch: {} {}", touchpad_0.x, touchpad_0.y);
|
||||||
|
const u16 min_x = std::min(MAX_VALUE, static_cast<u16>(touchpad_0.x));
|
||||||
|
const u16 min_y = std::min(MAX_VALUE, static_cast<u16>(touchpad_0.y));
|
||||||
|
if (current_status == Status::Ready) {
|
||||||
|
// First touch - min data (min_x/min_y)
|
||||||
|
current_status = Status::Stage1Completed;
|
||||||
|
status_callback(current_status);
|
||||||
|
}
|
||||||
|
if (touchpad_0.x - min_x > CALIBRATION_THRESHOLD &&
|
||||||
|
touchpad_0.y - min_y > CALIBRATION_THRESHOLD) {
|
||||||
|
// Set the current position as max value and finishes configuration
|
||||||
|
const u16 max_x = touchpad_0.x;
|
||||||
|
const u16 max_y = touchpad_0.y;
|
||||||
|
current_status = Status::Completed;
|
||||||
|
data_callback(min_x, min_y, max_x, max_y);
|
||||||
|
status_callback(current_status);
|
||||||
|
|
||||||
|
complete_event.Set();
|
||||||
|
}
|
||||||
|
}};
|
||||||
Socket socket{host, port, std::move(callback)};
|
Socket socket{host, port, std::move(callback)};
|
||||||
std::thread worker_thread{SocketLoop, &socket};
|
std::thread worker_thread{SocketLoop, &socket};
|
||||||
complete_event.Wait();
|
complete_event.Wait();
|
||||||
|
|
Loading…
Reference in a new issue