Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
id: setup_release
uses: LizardByte/actions/actions/release_setup@200eaeb897a2b065a65cb6f16b41077432007490 # v2026.605.34721
with:
dotnet: true
github_token: ${{ secrets.GITHUB_TOKEN }}

build:
Expand Down
9 changes: 8 additions & 1 deletion cmake/build_version.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,25 @@ if(DEFINED ENV{BUILD_VERSION} AND NOT "$ENV{BUILD_VERSION}" STREQUAL "") # cmak
set(CMAKE_PROJECT_VERSION "${PROJECT_VERSION}")
endif()

if(PROJECT_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
if(PROJECT_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)(\\.([0-9]+))?$")
set(PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(CMAKE_PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
set(CMAKE_PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
set(PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
set(CMAKE_PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
if(CMAKE_MATCH_5)
set(PROJECT_VERSION_TWEAK "${CMAKE_MATCH_5}")
else()
set(PROJECT_VERSION_TWEAK 0)
endif()
set(CMAKE_PROJECT_VERSION_TWEAK "${PROJECT_VERSION_TWEAK}")
endif()

message(STATUS "PROJECT_VERSION: ${PROJECT_VERSION}")
message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}")
message(STATUS "PROJECT_VERSION_MINOR: ${PROJECT_VERSION_MINOR}")
message(STATUS "PROJECT_VERSION_PATCH: ${PROJECT_VERSION_PATCH}")
message(STATUS "PROJECT_VERSION_TWEAK: ${PROJECT_VERSION_TWEAK}")
message(STATUS "GITHUB_BRANCH: ${GITHUB_BRANCH}")
message(STATUS "GITHUB_COMMIT: ${GITHUB_COMMIT}")
1 change: 1 addition & 0 deletions cmake/packaging/common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_TWEAK ${PROJECT_VERSION_TWEAK})
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cpack_artifacts)
set(CPACK_PACKAGE_CONTACT "https://app.lizardbyte.dev")
set(CPACK_PACKAGE_DESCRIPTION ${CMAKE_PROJECT_DESCRIPTION})
Expand Down
3 changes: 2 additions & 1 deletion src/platform/windows/driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ elseif(LIBVIRTUALHID_WDK_ARCH STREQUAL "win32" OR LIBVIRTUALHID_WDK_ARCH STREQUA
else()
message(FATAL_ERROR "Unsupported WDK architecture: ${LIBVIRTUALHID_WDK_ARCH}")
endif()
set(LIBVIRTUALHID_DRIVER_VERSION "${PROJECT_VERSION}.0")
set(LIBVIRTUALHID_DRIVER_VERSION
"${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_TWEAK}")

set(_lvh_wdk_roots)
foreach(lvh_wdk_root IN ITEMS
Expand Down
25 changes: 17 additions & 8 deletions src/platform/windows/driver/libvirtualhid_umdf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,13 @@
// standard includes
#include <algorithm>
#include <atomic>
#include <charconv>
#include <cstdint>
#include <cstring>
#include <map>
#include <memory>
#include <mutex>
#include <optional>
#include <sstream>
#include <string>
#include <vector>

// local includes
Expand Down Expand Up @@ -296,13 +295,23 @@ namespace {
}

void set_device_path(std::uint64_t driver_device_id, char (&device_path)[LVH_WINDOWS_MAX_DEVICE_PATH_SIZE]) {
std::ostringstream stream;
stream << LVH_WINDOWS_CONTROL_DEVICE_PATH << '#' << driver_device_id;
constexpr auto path_prefix_size = sizeof(LVH_WINDOWS_CONTROL_DEVICE_PATH) - 1U;
constexpr auto separator_size = 1U;
static_assert(path_prefix_size + separator_size < LVH_WINDOWS_MAX_DEVICE_PATH_SIZE);

const auto path = stream.str();
const auto copied_size = std::min(path.size(), sizeof(device_path) - 1U);
std::memcpy(device_path, path.data(), copied_size);
device_path[copied_size] = '\0';
std::memcpy(device_path, LVH_WINDOWS_CONTROL_DEVICE_PATH, path_prefix_size);
device_path[path_prefix_size] = '#';

const auto output = std::to_chars(
device_path + path_prefix_size + separator_size,
device_path + sizeof(device_path) - 1U,
driver_device_id
);
if (output.ec == std::errc {}) {
*output.ptr = '\0';
} else {
device_path[path_prefix_size + separator_size] = '\0';
}
}

void handle_create_gamepad_request(WDFREQUEST request) {
Expand Down