build(deps): bump third-party/lizardbyte-common from 06cd442 to 011ad2b (#5457)

* build(deps): bump third-party/lizardbyte-common

Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `06cd442` to `011ad2b`.
- [Release notes](https://github.com/LizardByte/lizardbyte-common/releases)
- [Commits](06cd442b80...011ad2bb13)

---
updated-dependencies:
- dependency-name: third-party/lizardbyte-common
  dependency-version: 011ad2bb139083dcf4ec21f9c09f07470891a668
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* style: run clang-format across C++ sources

Reformatted conditionals, loops, and long function calls across core, platform, NVENC, and test helper code to match updated formatting rules, including minor spacing normalization in type declarations. These are style-only edits with no intended behavior changes.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
This commit is contained in:
dependabot[bot]
2026-07-28 08:08:12 -04:00
committed by GitHub
parent 6f58be350e
commit 965c91a428
24 changed files with 80 additions and 167 deletions

View File

@@ -535,13 +535,11 @@ namespace display_device {
std::optional<parsed_remapping_entry_t> parse_remapping_entry(const config::video_t::dd_t::mode_remapping_entry_t &entry, const remapping_type_e type) { std::optional<parsed_remapping_entry_t> parse_remapping_entry(const config::video_t::dd_t::mode_remapping_entry_t &entry, const remapping_type_e type) {
parsed_remapping_entry_t result {}; parsed_remapping_entry_t result {};
if (is_resolution_mapped(type) && (!parse_resolution_string(entry.requested_resolution, result.requested_resolution) || if (is_resolution_mapped(type) && (!parse_resolution_string(entry.requested_resolution, result.requested_resolution) || !parse_resolution_string(entry.final_resolution, result.final_resolution))) {
!parse_resolution_string(entry.final_resolution, result.final_resolution))) {
return std::nullopt; return std::nullopt;
} }
if (is_fps_mapped(type) && (!parse_refresh_rate_string(entry.requested_fps, result.requested_fps, false) || if (is_fps_mapped(type) && (!parse_refresh_rate_string(entry.requested_fps, result.requested_fps, false) || !parse_refresh_rate_string(entry.final_refresh_rate, result.final_refresh_rate))) {
!parse_refresh_rate_string(entry.final_refresh_rate, result.final_refresh_rate))) {
return std::nullopt; return std::nullopt;
} }

View File

@@ -63,8 +63,7 @@ namespace http {
config::nvhttp.pkey = (dir / ("pkey-"s + unique_id)).string(); config::nvhttp.pkey = (dir / ("pkey-"s + unique_id)).string();
} }
if ((!fs::exists(config::nvhttp.pkey) || !fs::exists(config::nvhttp.cert)) && if ((!fs::exists(config::nvhttp.pkey) || !fs::exists(config::nvhttp.cert)) && create_creds(config::nvhttp.pkey, config::nvhttp.cert)) {
create_creds(config::nvhttp.pkey, config::nvhttp.cert)) {
return -1; return -1;
} }
if (!user_creds_exist(config::sunshine.credentials_file)) { if (!user_creds_exist(config::sunshine.credentials_file)) {

View File

@@ -935,8 +935,7 @@ namespace input {
// Right-alt maps to meta, so it must not also register as ALT // Right-alt maps to meta, so it must not also register as ALT
int modifiers = packet->modifiers; int modifiers = packet->modifiers;
if (config::input.key_rightalt_to_key_win && if (config::input.key_rightalt_to_key_win && input->right_alt_pressed && !input->left_alt_pressed) {
input->right_alt_pressed && !input->left_alt_pressed) {
modifiers &= ~MODIFIER_ALT; modifiers &= ~MODIFIER_ALT;
} }
@@ -1557,14 +1556,12 @@ namespace input {
*/ */
batch_result_e batch(PSS_TOUCH_PACKET dest, PSS_TOUCH_PACKET src) { batch_result_e batch(PSS_TOUCH_PACKET dest, PSS_TOUCH_PACKET src) {
// Only batch hover or move events // Only batch hover or move events
if (dest->eventType != LI_TOUCH_EVENT_MOVE && if (dest->eventType != LI_TOUCH_EVENT_MOVE && dest->eventType != LI_TOUCH_EVENT_HOVER) {
dest->eventType != LI_TOUCH_EVENT_HOVER) {
return batch_result_e::terminate_batch; return batch_result_e::terminate_batch;
} }
// Don't batch beyond state changing events // Don't batch beyond state changing events
if (src->eventType != LI_TOUCH_EVENT_MOVE && if (src->eventType != LI_TOUCH_EVENT_MOVE && src->eventType != LI_TOUCH_EVENT_HOVER) {
src->eventType != LI_TOUCH_EVENT_HOVER) {
return batch_result_e::terminate_batch; return batch_result_e::terminate_batch;
} }
@@ -1591,8 +1588,7 @@ namespace input {
*/ */
batch_result_e batch(PSS_PEN_PACKET dest, PSS_PEN_PACKET src) { batch_result_e batch(PSS_PEN_PACKET dest, PSS_PEN_PACKET src) {
// Only batch hover or move events // Only batch hover or move events
if (dest->eventType != LI_TOUCH_EVENT_MOVE && if (dest->eventType != LI_TOUCH_EVENT_MOVE && dest->eventType != LI_TOUCH_EVENT_HOVER) {
dest->eventType != LI_TOUCH_EVENT_HOVER) {
return batch_result_e::terminate_batch; return batch_result_e::terminate_batch;
} }
@@ -1624,8 +1620,7 @@ namespace input {
*/ */
batch_result_e batch(PSS_CONTROLLER_TOUCH_PACKET dest, PSS_CONTROLLER_TOUCH_PACKET src) { batch_result_e batch(PSS_CONTROLLER_TOUCH_PACKET dest, PSS_CONTROLLER_TOUCH_PACKET src) {
// Only batch hover or move events // Only batch hover or move events
if (dest->eventType != LI_TOUCH_EVENT_MOVE && if (dest->eventType != LI_TOUCH_EVENT_MOVE && dest->eventType != LI_TOUCH_EVENT_HOVER) {
dest->eventType != LI_TOUCH_EVENT_HOVER) {
return batch_result_e::terminate_batch; return batch_result_e::terminate_batch;
} }
@@ -1636,8 +1631,7 @@ namespace input {
} }
// Don't batch beyond state changing events // Don't batch beyond state changing events
if (src->eventType != LI_TOUCH_EVENT_MOVE && if (src->eventType != LI_TOUCH_EVENT_MOVE && src->eventType != LI_TOUCH_EVENT_HOVER) {
src->eventType != LI_TOUCH_EVENT_HOVER) {
return batch_result_e::terminate_batch; return batch_result_e::terminate_batch;
} }

View File

@@ -604,12 +604,7 @@ namespace NVENC_NAMESPACE {
return false; return false;
} }
std::vector<GUID> encode_guids(encode_guid_count); std::vector<GUID> encode_guids(encode_guid_count);
if (nvenc_failed(nvenc->nvEncGetEncodeGUIDs( if (nvenc_failed(nvenc->nvEncGetEncodeGUIDs(encoder, encode_guids.data(), static_cast<std::uint32_t>(encode_guids.size()), &encode_guid_count))) {
encoder,
encode_guids.data(),
static_cast<std::uint32_t>(encode_guids.size()),
&encode_guid_count
))) {
BOOST_LOG(error) << "NvEnc: NvEncGetEncodeGUIDs() failed: " << last_nvenc_error_string; BOOST_LOG(error) << "NvEnc: NvEncGetEncodeGUIDs() failed: " << last_nvenc_error_string;
return false; return false;
} }
@@ -658,13 +653,7 @@ namespace NVENC_NAMESPACE {
.version = NV_ENC_PRESET_CONFIG_VER, .version = NV_ENC_PRESET_CONFIG_VER,
.presetCfg = {.version = NV_ENC_CONFIG_VER}, .presetCfg = {.version = NV_ENC_CONFIG_VER},
}; };
if (nvenc_failed(nvenc->nvEncGetEncodePresetConfigEx( if (nvenc_failed(nvenc->nvEncGetEncodePresetConfigEx(encoder, init_params.encodeGUID, init_params.presetGUID, init_params.tuningInfo, &preset_config))) {
encoder,
init_params.encodeGUID,
init_params.presetGUID,
init_params.tuningInfo,
&preset_config
))) {
BOOST_LOG(error) << "NvEnc: NvEncGetEncodePresetConfigEx() failed: " << last_nvenc_error_string; BOOST_LOG(error) << "NvEnc: NvEncGetEncodePresetConfigEx() failed: " << last_nvenc_error_string;
return false; return false;
} }

View File

@@ -68,20 +68,7 @@ namespace NVENC_NAMESPACE {
location = (T) GetProcAddress(cuda_functions.dll, symbol); location = (T) GetProcAddress(cuda_functions.dll, symbol);
return location != nullptr; return location != nullptr;
}; };
if (!load_function(cuda_functions.cuInit, "cuInit") || if (!load_function(cuda_functions.cuInit, "cuInit") || !load_function(cuda_functions.cuD3D11GetDevice, "cuD3D11GetDevice") || !load_function(cuda_functions.cuCtxCreate, "cuCtxCreate_v2") || !load_function(cuda_functions.cuCtxDestroy, "cuCtxDestroy_v2") || !load_function(cuda_functions.cuCtxPushCurrent, "cuCtxPushCurrent_v2") || !load_function(cuda_functions.cuCtxPopCurrent, "cuCtxPopCurrent_v2") || !load_function(cuda_functions.cuMemAllocPitch, "cuMemAllocPitch_v2") || !load_function(cuda_functions.cuMemFree, "cuMemFree_v2") || !load_function(cuda_functions.cuGraphicsD3D11RegisterResource, "cuGraphicsD3D11RegisterResource") || !load_function(cuda_functions.cuGraphicsUnregisterResource, "cuGraphicsUnregisterResource") || !load_function(cuda_functions.cuGraphicsMapResources, "cuGraphicsMapResources") || !load_function(cuda_functions.cuGraphicsUnmapResources, "cuGraphicsUnmapResources") || !load_function(cuda_functions.cuGraphicsSubResourceGetMappedArray, "cuGraphicsSubResourceGetMappedArray") || !load_function(cuda_functions.cuMemcpy2D, "cuMemcpy2D_v2")) {
!load_function(cuda_functions.cuD3D11GetDevice, "cuD3D11GetDevice") ||
!load_function(cuda_functions.cuCtxCreate, "cuCtxCreate_v2") ||
!load_function(cuda_functions.cuCtxDestroy, "cuCtxDestroy_v2") ||
!load_function(cuda_functions.cuCtxPushCurrent, "cuCtxPushCurrent_v2") ||
!load_function(cuda_functions.cuCtxPopCurrent, "cuCtxPopCurrent_v2") ||
!load_function(cuda_functions.cuMemAllocPitch, "cuMemAllocPitch_v2") ||
!load_function(cuda_functions.cuMemFree, "cuMemFree_v2") ||
!load_function(cuda_functions.cuGraphicsD3D11RegisterResource, "cuGraphicsD3D11RegisterResource") ||
!load_function(cuda_functions.cuGraphicsUnregisterResource, "cuGraphicsUnregisterResource") ||
!load_function(cuda_functions.cuGraphicsMapResources, "cuGraphicsMapResources") ||
!load_function(cuda_functions.cuGraphicsUnmapResources, "cuGraphicsUnmapResources") ||
!load_function(cuda_functions.cuGraphicsSubResourceGetMappedArray, "cuGraphicsSubResourceGetMappedArray") ||
!load_function(cuda_functions.cuMemcpy2D, "cuMemcpy2D_v2")) {
BOOST_LOG(error) << "NvEnc: missing CUDA functions in " << dll_name; BOOST_LOG(error) << "NvEnc: missing CUDA functions in " << dll_name;
FreeLibrary(cuda_functions.dll); FreeLibrary(cuda_functions.dll);
cuda_functions = {}; cuda_functions = {};
@@ -93,14 +80,9 @@ namespace NVENC_NAMESPACE {
if (cuda_functions.dll) { if (cuda_functions.dll) {
IDXGIDevicePtr dxgi_device; IDXGIDevicePtr dxgi_device;
IDXGIAdapterPtr dxgi_adapter; IDXGIAdapterPtr dxgi_adapter;
if (d3d_device && if (d3d_device && SUCCEEDED(d3d_device->QueryInterface(IID_PPV_ARGS(&dxgi_device))) && SUCCEEDED(dxgi_device->GetAdapter(&dxgi_adapter))) {
SUCCEEDED(d3d_device->QueryInterface(IID_PPV_ARGS(&dxgi_device))) &&
SUCCEEDED(dxgi_device->GetAdapter(&dxgi_adapter))) {
CUdevice cuda_device; CUdevice cuda_device;
if (cuda_succeeded(cuda_functions.cuInit(0)) && if (cuda_succeeded(cuda_functions.cuInit(0)) && cuda_succeeded(cuda_functions.cuD3D11GetDevice(&cuda_device, dxgi_adapter)) && cuda_succeeded(cuda_functions.cuCtxCreate(&cuda_context, CU_CTX_SCHED_BLOCKING_SYNC, cuda_device)) && cuda_succeeded(cuda_functions.cuCtxPopCurrent(&cuda_context))) {
cuda_succeeded(cuda_functions.cuD3D11GetDevice(&cuda_device, dxgi_adapter)) &&
cuda_succeeded(cuda_functions.cuCtxCreate(&cuda_context, CU_CTX_SCHED_BLOCKING_SYNC, cuda_device)) &&
cuda_succeeded(cuda_functions.cuCtxPopCurrent(&cuda_context))) {
device = cuda_context; device = cuda_context;
} else { } else {
BOOST_LOG(error) << "NvEnc: couldn't create CUDA interop context: error " << last_cuda_error; BOOST_LOG(error) << "NvEnc: couldn't create CUDA interop context: error " << last_cuda_error;
@@ -143,25 +125,18 @@ namespace NVENC_NAMESPACE {
} }
if (!cuda_d3d_input_texture) { if (!cuda_d3d_input_texture) {
if (cuda_failed(cuda_functions.cuGraphicsD3D11RegisterResource( if (cuda_failed(cuda_functions.cuGraphicsD3D11RegisterResource(&cuda_d3d_input_texture, d3d_input_texture, CU_GRAPHICS_REGISTER_FLAGS_NONE))) {
&cuda_d3d_input_texture,
d3d_input_texture,
CU_GRAPHICS_REGISTER_FLAGS_NONE
))) {
BOOST_LOG(error) << "NvEnc: cuGraphicsD3D11RegisterResource() failed: error " << last_cuda_error; BOOST_LOG(error) << "NvEnc: cuGraphicsD3D11RegisterResource() failed: error " << last_cuda_error;
return false; return false;
} }
} }
if (!cuda_surface) { if (!cuda_surface) {
if (cuda_failed(cuda_functions.cuMemAllocPitch( if (cuda_failed(cuda_functions.cuMemAllocPitch(&cuda_surface, &cuda_surface_pitch,
&cuda_surface,
&cuda_surface_pitch,
// Planar 16-bit YUV // Planar 16-bit YUV
encoder_params.width * 2, encoder_params.width * 2,
encoder_params.height * 3, encoder_params.height * 3,
16 16))) {
))) {
BOOST_LOG(error) << "NvEnc: cuMemAllocPitch() failed: error " << last_cuda_error; BOOST_LOG(error) << "NvEnc: cuMemAllocPitch() failed: error " << last_cuda_error;
return false; return false;
} }
@@ -256,8 +231,7 @@ namespace NVENC_NAMESPACE {
} }
nvenc_d3d11_on_cuda::autopop_context nvenc_d3d11_on_cuda::push_context() { nvenc_d3d11_on_cuda::autopop_context nvenc_d3d11_on_cuda::push_context() {
if (cuda_context && if (cuda_context && cuda_succeeded(cuda_functions.cuCtxPushCurrent(cuda_context))) {
cuda_succeeded(cuda_functions.cuCtxPushCurrent(cuda_context))) {
return {*this, cuda_context}; return {*this, cuda_context};
} else { } else {
BOOST_LOG(error) << "NvEnc: cuCtxPushCurrent() failed: error " << last_cuda_error; BOOST_LOG(error) << "NvEnc: cuCtxPushCurrent() failed: error " << last_cuda_error;

View File

@@ -190,8 +190,7 @@ namespace cuda {
auto hwframe_ctx = (AVHWFramesContext *) hw_frames_ctx->data; auto hwframe_ctx = (AVHWFramesContext *) hw_frames_ctx->data;
if (hwframe_ctx->sw_format != AV_PIX_FMT_NV12 && if (hwframe_ctx->sw_format != AV_PIX_FMT_NV12 && hwframe_ctx->sw_format != AV_PIX_FMT_YUV444P) {
hwframe_ctx->sw_format != AV_PIX_FMT_YUV444P) {
BOOST_LOG(error) << "cuda::cuda_t doesn't support any format other than AV_PIX_FMT_NV12 and AV_PIX_FMT_YUV444P"sv; BOOST_LOG(error) << "cuda::cuda_t doesn't support any format other than AV_PIX_FMT_NV12 and AV_PIX_FMT_YUV444P"sv;
return -1; return -1;
} }
@@ -469,10 +468,7 @@ namespace cuda {
auto hw_frames_ctx = (AVHWFramesContext *) hw_frames_ctx_buf->data; auto hw_frames_ctx = (AVHWFramesContext *) hw_frames_ctx_buf->data;
if (hw_frames_ctx->sw_format != AV_PIX_FMT_NV12 && if (hw_frames_ctx->sw_format != AV_PIX_FMT_NV12 && hw_frames_ctx->sw_format != AV_PIX_FMT_YUV444P && hw_frames_ctx->sw_format != AV_PIX_FMT_P010LE && hw_frames_ctx->sw_format != AV_PIX_FMT_YUV444P16LE) {
hw_frames_ctx->sw_format != AV_PIX_FMT_YUV444P &&
hw_frames_ctx->sw_format != AV_PIX_FMT_P010LE &&
hw_frames_ctx->sw_format != AV_PIX_FMT_YUV444P16LE) {
BOOST_LOG(error) << "cuda::gl_cuda_vram_t doesn't support any format other than AV_PIX_FMT_NV12, AV_PIX_FMT_P010LE, AV_PIX_FMT_YUV444P and AV_PIX_FMT_YUV444P16LE"sv; BOOST_LOG(error) << "cuda::gl_cuda_vram_t doesn't support any format other than AV_PIX_FMT_NV12, AV_PIX_FMT_P010LE, AV_PIX_FMT_YUV444P and AV_PIX_FMT_YUV444P16LE"sv;
return -1; return -1;
} }

View File

@@ -272,8 +272,7 @@ const KeyCodeMap kKeyCodesMap[] = {
key_map key_map
); );
if (temp_map >= kKeyCodesMap + sizeof(kKeyCodesMap) / sizeof(kKeyCodesMap[0]) || if (temp_map >= kKeyCodesMap + sizeof(kKeyCodesMap) / sizeof(kKeyCodesMap[0]) || temp_map->win_keycode != keycode || temp_map->mac_keycode == -1) {
temp_map->win_keycode != keycode || temp_map->mac_keycode == -1) {
return -1; return -1;
} }

View File

@@ -90,8 +90,7 @@ namespace platf {
#pragma clang diagnostic ignored "-Wtautological-pointer-compare" #pragma clang diagnostic ignored "-Wtautological-pointer-compare"
if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:((NSOperatingSystemVersion) {10, 15, 0})] && if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:((NSOperatingSystemVersion) {10, 15, 0})] &&
// Double check that these weakly-linked symbols have been loaded: // Double check that these weakly-linked symbols have been loaded:
CGPreflightScreenCaptureAccess != nullptr && CGRequestScreenCaptureAccess != nullptr && CGPreflightScreenCaptureAccess != nullptr && CGRequestScreenCaptureAccess != nullptr && !CGPreflightScreenCaptureAccess()) {
!CGPreflightScreenCaptureAccess()) {
BOOST_LOG(error) << "No screen capture permission!"sv; BOOST_LOG(error) << "No screen capture permission!"sv;
BOOST_LOG(error) << "Please activate it in 'System Preferences' -> 'Privacy' -> 'Screen Recording'"sv; BOOST_LOG(error) << "Please activate it in 'System Preferences' -> 'Privacy' -> 'Screen Recording'"sv;
CGRequestScreenCaptureAccess(); CGRequestScreenCaptureAccess();

View File

@@ -377,9 +377,7 @@ namespace platf::audio {
} }
// Prefer the native channel layout of captured audio device when channel counts match // Prefer the native channel layout of captured audio device when channel counts match
if (mixer_waveformat->nChannels == format.channel_count && if (mixer_waveformat->nChannels == format.channel_count && mixer_waveformat->wFormatTag == WAVE_FORMAT_EXTENSIBLE && mixer_waveformat->cbSize >= 22) {
mixer_waveformat->wFormatTag == WAVE_FORMAT_EXTENSIBLE &&
mixer_waveformat->cbSize >= 22) {
auto waveformatext_pointer = reinterpret_cast<const WAVEFORMATEXTENSIBLE *>(mixer_waveformat.get()); auto waveformatext_pointer = reinterpret_cast<const WAVEFORMATEXTENSIBLE *>(mixer_waveformat.get());
capture_waveformat.dwChannelMask = waveformatext_pointer->dwChannelMask; capture_waveformat.dwChannelMask = waveformatext_pointer->dwChannelMask;
} }
@@ -765,8 +763,7 @@ namespace platf::audio {
for ( for (
status = audio_capture->GetNextPacketSize(&packet_size); status = audio_capture->GetNextPacketSize(&packet_size);
SUCCEEDED(status) && packet_size > 0; SUCCEEDED(status) && packet_size > 0;
status = audio_capture->GetNextPacketSize(&packet_size) status = audio_capture->GetNextPacketSize(&packet_size)) {
) {
DWORD buffer_flags; DWORD buffer_flags;
status = audio_capture->GetBuffer( status = audio_capture->GetBuffer(
(BYTE **) &sample_aligned.samples, (BYTE **) &sample_aligned.samples,

View File

@@ -555,9 +555,7 @@ namespace platf::dxgi {
void apply_colorspace(const ::video::sunshine_colorspace_t &colorspace) { void apply_colorspace(const ::video::sunshine_colorspace_t &colorspace) {
auto color_vectors = ::video::color_vectors_from_colorspace(colorspace, true); auto color_vectors = ::video::color_vectors_from_colorspace(colorspace, true);
if (format == DXGI_FORMAT_AYUV || if (format == DXGI_FORMAT_AYUV || format == DXGI_FORMAT_R16_UINT || format == DXGI_FORMAT_Y410) {
format == DXGI_FORMAT_R16_UINT ||
format == DXGI_FORMAT_Y410) {
color_vectors = ::video::color_vectors_from_colorspace(colorspace, false); color_vectors = ::video::color_vectors_from_colorspace(colorspace, false);
} }
@@ -1393,8 +1391,7 @@ namespace platf::dxgi {
auto alpha_cursor_img = make_cursor_alpha_image(img_data, shape_info); auto alpha_cursor_img = make_cursor_alpha_image(img_data, shape_info);
auto xor_cursor_img = make_cursor_xor_image(img_data, shape_info); auto xor_cursor_img = make_cursor_xor_image(img_data, shape_info);
if (!set_cursor_texture(device.get(), cursor_alpha, std::move(alpha_cursor_img), shape_info) || if (!set_cursor_texture(device.get(), cursor_alpha, std::move(alpha_cursor_img), shape_info) || !set_cursor_texture(device.get(), cursor_xor, std::move(xor_cursor_img), shape_info)) {
!set_cursor_texture(device.get(), cursor_xor, std::move(xor_cursor_img), shape_info)) {
return capture_e::error; return capture_e::error;
} }
} }

View File

@@ -127,8 +127,7 @@ namespace platf::dxgi {
display->output->GetDesc(&output_desc); display->output->GetDesc(&output_desc);
auto monitor_factory = winrt::get_activation_factory<winrt::GraphicsCaptureItem, IGraphicsCaptureItemInterop>(); auto monitor_factory = winrt::get_activation_factory<winrt::GraphicsCaptureItem, IGraphicsCaptureItemInterop>();
if (monitor_factory == nullptr || if (monitor_factory == nullptr || FAILED(status = monitor_factory->CreateForMonitor(output_desc.Monitor, winrt::guid_of<winrt::IGraphicsCaptureItem>(), winrt::put_abi(item)))) {
FAILED(status = monitor_factory->CreateForMonitor(output_desc.Monitor, winrt::guid_of<winrt::IGraphicsCaptureItem>(), winrt::put_abi(item)))) {
BOOST_LOG(error) << "Screen capture is not supported on this device for this release of Windows: failed to acquire display: [0x"sv << util::hex(status).to_string_view() << ']'; BOOST_LOG(error) << "Screen capture is not supported on this device for this release of Windows: failed to acquire display: [0x"sv << util::hex(status).to_string_view() << ']';
return -1; return -1;
} }

View File

@@ -401,8 +401,7 @@ namespace platf {
uint16_t normalizedSmallMotor = smallMotor << 8; uint16_t normalizedSmallMotor = smallMotor << 8;
// Don't resend duplicate rumble data // Don't resend duplicate rumble data
if (normalizedSmallMotor != gamepad.last_rumble.data.rumble.highfreq || if (normalizedSmallMotor != gamepad.last_rumble.data.rumble.highfreq || normalizedLargeMotor != gamepad.last_rumble.data.rumble.lowfreq) {
normalizedLargeMotor != gamepad.last_rumble.data.rumble.lowfreq) {
// We have to use the client-relative index when communicating back to the client // We have to use the client-relative index when communicating back to the client
gamepad_feedback_msg_t msg = gamepad_feedback_msg_t::make_rumble( gamepad_feedback_msg_t msg = gamepad_feedback_msg_t::make_rumble(
gamepad.client_relative_index, gamepad.client_relative_index,
@@ -430,9 +429,7 @@ namespace platf {
if (gamepad.gp.get() == target) { if (gamepad.gp.get() == target) {
// Don't resend duplicate RGB data // Don't resend duplicate RGB data
if (r != gamepad.last_rgb_led.data.rgb_led.r || if (r != gamepad.last_rgb_led.data.rgb_led.r || g != gamepad.last_rgb_led.data.rgb_led.g || b != gamepad.last_rgb_led.data.rgb_led.b) {
g != gamepad.last_rgb_led.data.rgb_led.g ||
b != gamepad.last_rgb_led.data.rgb_led.b) {
// We have to use the client-relative index when communicating back to the client // We have to use the client-relative index when communicating back to the client
gamepad_feedback_msg_t msg = gamepad_feedback_msg_t::make_rgb_led(gamepad.client_relative_index, r, g, b); gamepad_feedback_msg_t msg = gamepad_feedback_msg_t::make_rgb_led(gamepad.client_relative_index, r, g, b);
gamepad.feedback_queue->raise(msg); gamepad.feedback_queue->raise(msg);
@@ -822,8 +819,7 @@ namespace platf {
// Try to find a matching pointer ID // Try to find a matching pointer ID
for (UINT32 i = 0; i < ARRAYSIZE(raw->touchInfo); i++) { for (UINT32 i = 0; i < ARRAYSIZE(raw->touchInfo); i++) {
if (raw->touchInfo[i].touchInfo.pointerInfo.pointerId == pointerId && if (raw->touchInfo[i].touchInfo.pointerInfo.pointerId == pointerId && raw->touchInfo[i].touchInfo.pointerInfo.pointerFlags != POINTER_FLAG_NONE) {
raw->touchInfo[i].touchInfo.pointerInfo.pointerFlags != POINTER_FLAG_NONE) {
if (eventType == LI_TOUCH_EVENT_DOWN && (raw->touchInfo[i].touchInfo.pointerInfo.pointerFlags & POINTER_FLAG_INCONTACT)) { if (eventType == LI_TOUCH_EVENT_DOWN && (raw->touchInfo[i].touchInfo.pointerInfo.pointerFlags & POINTER_FLAG_INCONTACT)) {
BOOST_LOG(warning) << "Pointer "sv << pointerId << " already down. Did the client drop an up/cancel event?"sv; BOOST_LOG(warning) << "Pointer "sv << pointerId << " already down. Did the client drop an up/cancel event?"sv;
} }
@@ -982,9 +978,7 @@ namespace platf {
auto raw = (client_input_raw_t *) input; auto raw = (client_input_raw_t *) input;
// Bail if we're not running on an OS that supports virtual touch input // Bail if we're not running on an OS that supports virtual touch input
if (!raw->global->fnCreateSyntheticPointerDevice || if (!raw->global->fnCreateSyntheticPointerDevice || !raw->global->fnInjectSyntheticPointerInput || !raw->global->fnDestroySyntheticPointerDevice) {
!raw->global->fnInjectSyntheticPointerInput ||
!raw->global->fnDestroySyntheticPointerDevice) {
BOOST_LOG(warning) << "Touch input requires Windows 10 1809 or later"sv; BOOST_LOG(warning) << "Touch input requires Windows 10 1809 or later"sv;
return; return;
} }
@@ -1108,9 +1102,7 @@ namespace platf {
auto raw = (client_input_raw_t *) input; auto raw = (client_input_raw_t *) input;
// Bail if we're not running on an OS that supports virtual pen input // Bail if we're not running on an OS that supports virtual pen input
if (!raw->global->fnCreateSyntheticPointerDevice || if (!raw->global->fnCreateSyntheticPointerDevice || !raw->global->fnInjectSyntheticPointerInput || !raw->global->fnDestroySyntheticPointerDevice) {
!raw->global->fnInjectSyntheticPointerInput ||
!raw->global->fnDestroySyntheticPointerDevice) {
BOOST_LOG(warning) << "Pen input requires Windows 10 1809 or later"sv; BOOST_LOG(warning) << "Pen input requires Windows 10 1809 or later"sv;
return; return;
} }

View File

@@ -100,8 +100,7 @@ namespace {
bool nt_set_timer_resolution_max() { bool nt_set_timer_resolution_max() {
ULONG maximum; ULONG maximum;
ULONG minimum; ULONG minimum;
if (ULONG current; !NT_SUCCESS(NtQueryTimerResolution(&minimum, &maximum, &current)) || if (ULONG current; !NT_SUCCESS(NtQueryTimerResolution(&minimum, &maximum, &current)) || !NT_SUCCESS(NtSetTimerResolution(maximum, TRUE, &current))) {
!NT_SUCCESS(NtSetTimerResolution(maximum, TRUE, &current))) {
return false; return false;
} }
return true; return true;
@@ -110,8 +109,7 @@ namespace {
bool nt_set_timer_resolution_min() { bool nt_set_timer_resolution_min() {
ULONG maximum; ULONG maximum;
ULONG minimum; ULONG minimum;
if (ULONG current; !NT_SUCCESS(NtQueryTimerResolution(&minimum, &maximum, &current)) || if (ULONG current; !NT_SUCCESS(NtQueryTimerResolution(&minimum, &maximum, &current)) || !NT_SUCCESS(NtSetTimerResolution(minimum, TRUE, &current))) {
!NT_SUCCESS(NtSetTimerResolution(minimum, TRUE, &current))) {
return false; return false;
} }
return true; return true;

View File

@@ -270,8 +270,7 @@ namespace nvprefs {
status = NvAPI_DRS_GetSetting(session_handle, profile_handle, PREFERRED_PSTATE_ID, &setting); status = NvAPI_DRS_GetSetting(session_handle, profile_handle, PREFERRED_PSTATE_ID, &setting);
if (!get_nvprefs_options().sunshine_high_power_mode) { if (!get_nvprefs_options().sunshine_high_power_mode) {
if (status == NVAPI_OK && if (status == NVAPI_OK && setting.settingLocation == NVDRS_CURRENT_PROFILE_LOCATION) {
setting.settingLocation == NVDRS_CURRENT_PROFILE_LOCATION) {
// User requested to not use high power mode for sunshine.exe, // User requested to not use high power mode for sunshine.exe,
// remove the setting from application profile if it's been set previously // remove the setting from application profile if it's been set previously
@@ -285,9 +284,7 @@ namespace nvprefs {
info_message(std::wstring(L"Removed PREFERRED_PSTATE for ") + sunshine_application_path); info_message(std::wstring(L"Removed PREFERRED_PSTATE for ") + sunshine_application_path);
} }
} else if (status != NVAPI_OK || } else if (status != NVAPI_OK || setting.settingLocation != NVDRS_CURRENT_PROFILE_LOCATION || setting.u32CurrentValue != PREFERRED_PSTATE_PREFER_MAX) {
setting.settingLocation != NVDRS_CURRENT_PROFILE_LOCATION ||
setting.u32CurrentValue != PREFERRED_PSTATE_PREFER_MAX) {
// Set power setting if needed // Set power setting if needed
setting = {}; setting = {};
setting.version = NVDRS_SETTING_VER1; setting.version = NVDRS_SETTING_VER1;

View File

@@ -204,8 +204,7 @@ namespace nvprefs {
} }
// Restore global profile settings with undo data // Restore global profile settings with undo data
if (pimpl->driver_settings.restore_global_profile_to_undo(*pimpl->undo_data) && if (pimpl->driver_settings.restore_global_profile_to_undo(*pimpl->undo_data) && pimpl->driver_settings.save_settings()) {
pimpl->driver_settings.save_settings()) {
// Global profile settings sucessfully restored, can delete undo file // Global profile settings sucessfully restored, can delete undo file
if (!pimpl->undo_file->delete_file()) { if (!pimpl->undo_file->delete_file()) {
error_message("Couldn't delete undo file"); error_message("Couldn't delete undo file");

View File

@@ -301,8 +301,7 @@ namespace proc {
} else if (_process.running()) { } else if (_process.running()) {
// The app is still running only if the initial process launched is still running // The app is still running only if the initial process launched is still running
return _app_id; return _app_id;
} else if (_app.auto_detach && _process.native_exit_code() == 0 && } else if (_app.auto_detach && _process.native_exit_code() == 0 && std::chrono::steady_clock::now() - _app_launch_time < 5s) {
std::chrono::steady_clock::now() - _app_launch_time < 5s) {
BOOST_LOG(info) << "App exited gracefully within 5 seconds of launch. Treating the app as a detached command."sv; BOOST_LOG(info) << "App exited gracefully within 5 seconds of launch. Treating the app as a detached command."sv;
BOOST_LOG(info) << "Adjust this behavior in the Applications tab or apps.json if this is not what you want."sv; BOOST_LOG(info) << "Adjust this behavior in the Applications tab or apps.json if this is not what you want."sv;
placebo = true; placebo = true;

View File

@@ -1289,8 +1289,7 @@ namespace rtsp_stream {
// Check that any required encryption is enabled // Check that any required encryption is enabled
auto encryption_mode = net::encryption_mode_for_address(sock.remote_endpoint().address()); auto encryption_mode = net::encryption_mode_for_address(sock.remote_endpoint().address());
if (encryption_mode == config::ENCRYPTION_MODE_MANDATORY && if (encryption_mode == config::ENCRYPTION_MODE_MANDATORY && (config.encryptionFlagsEnabled & (SS_ENC_VIDEO | SS_ENC_AUDIO)) != (SS_ENC_VIDEO | SS_ENC_AUDIO)) {
(config.encryptionFlagsEnabled & (SS_ENC_VIDEO | SS_ENC_AUDIO)) != (SS_ENC_VIDEO | SS_ENC_AUDIO)) {
BOOST_LOG(error) << "Rejecting client that cannot comply with mandatory encryption requirement"sv; BOOST_LOG(error) << "Rejecting client that cannot comply with mandatory encryption requirement"sv;
respond(sock, session, &option, 403, "Forbidden", req->sequenceNumber, {}); respond(sock, session, &option, 403, "Forbidden", req->sequenceNumber, {});

View File

@@ -1711,13 +1711,11 @@ namespace stream {
session->video.cipher->encrypt(std::string_view {(char *) inspect, (size_t) blocksize}, prefix->tag, (uint8_t *) inspect, &iv); session->video.cipher->encrypt(std::string_view {(char *) inspect, (size_t) blocksize}, prefix->tag, (uint8_t *) inspect, &iv);
} }
if (x - next_shard_to_send + 1 >= send_batch_size || if (x - next_shard_to_send + 1 >= send_batch_size || x + 1 == shards.size()) {
x + 1 == shards.size()) {
// Do pacing within the frame. // Do pacing within the frame.
// Also trigger pacing before the first send_batch() of the frame // Also trigger pacing before the first send_batch() of the frame
// to account for the last send_batch() of the previous frame. // to account for the last send_batch() of the previous frame.
if (ratecontrol_group_packets_sent >= ratecontrol_packets_in_1ms || if (ratecontrol_group_packets_sent >= ratecontrol_packets_in_1ms || ratecontrol_frame_packets_sent == 0) {
ratecontrol_frame_packets_sent == 0) {
auto due = ratecontrol_frame_start + auto due = ratecontrol_frame_start +
std::chrono::duration_cast<std::chrono::nanoseconds>(1ms) * std::chrono::duration_cast<std::chrono::nanoseconds>(1ms) *
ratecontrol_frame_packets_sent / ratecontrol_packets_in_1ms; ratecontrol_frame_packets_sent / ratecontrol_packets_in_1ms;

View File

@@ -3138,9 +3138,7 @@ namespace video {
auto encoder_codec_name = encoder.codec_from_config(config).name; auto encoder_codec_name = encoder.codec_from_config(config).name;
if ((encoder.flags & YUV444_SUPPORT) && if ((encoder.flags & YUV444_SUPPORT) && disp->is_codec_supported(encoder_codec_name, config) && validate_config(disp, encoder, config) >= 0) {
disp->is_codec_supported(encoder_codec_name, config) &&
validate_config(disp, encoder, config) >= 0) {
flag_map[encoder_t::YUV444] = true; flag_map[encoder_t::YUV444] = true;
} else { } else {
flag_map[encoder_t::YUV444] = false; flag_map[encoder_t::YUV444] = false;
@@ -3180,9 +3178,7 @@ namespace video {
auto encoder_codec_name = encoder.codec_from_config(config).name; auto encoder_codec_name = encoder.codec_from_config(config).name;
if ((encoder.flags & YUV444_SUPPORT) && if ((encoder.flags & YUV444_SUPPORT) && disp->is_codec_supported(encoder_codec_name, config) && validate_config(disp, encoder, config) >= 0) {
disp->is_codec_supported(encoder_codec_name, config) &&
validate_config(disp, encoder, config) >= 0) {
flag_map[encoder_t::DYNAMIC_RANGE_YUV444] = true; flag_map[encoder_t::DYNAMIC_RANGE_YUV444] = true;
} else { } else {
flag_map[encoder_t::DYNAMIC_RANGE_YUV444] = false; flag_map[encoder_t::DYNAMIC_RANGE_YUV444] = false;
@@ -3312,29 +3308,25 @@ namespace video {
} }
// Skip it if it doesn't support the specified codec at all // Skip it if it doesn't support the specified codec at all
if ((active_hevc_mode >= 2 && !encoder->hevc[encoder_t::PASSED]) || if ((active_hevc_mode >= 2 && !encoder->hevc[encoder_t::PASSED]) || (active_av1_mode >= 2 && !encoder->av1[encoder_t::PASSED])) {
(active_av1_mode >= 2 && !encoder->av1[encoder_t::PASSED])) {
pos++; pos++;
continue; continue;
} }
// Skip it if it doesn't support HDR on the specified codec // Skip it if it doesn't support HDR on the specified codec
if ((active_hevc_mode == 5 && !encoder->hevc[encoder_t::DYNAMIC_RANGE] && !encoder->hevc[encoder_t::DYNAMIC_RANGE_YUV444]) || if ((active_hevc_mode == 5 && !encoder->hevc[encoder_t::DYNAMIC_RANGE] && !encoder->hevc[encoder_t::DYNAMIC_RANGE_YUV444]) || (active_av1_mode == 5 && !encoder->av1[encoder_t::DYNAMIC_RANGE] && !encoder->av1[encoder_t::DYNAMIC_RANGE_YUV444])) {
(active_av1_mode == 5 && !encoder->av1[encoder_t::DYNAMIC_RANGE] && !encoder->av1[encoder_t::DYNAMIC_RANGE_YUV444])) {
pos++; pos++;
continue; continue;
} }
// Skip it if it doesn't support HDR on the specified codec // Skip it if it doesn't support HDR on the specified codec
if ((active_hevc_mode == 4 && !encoder->hevc[encoder_t::DYNAMIC_RANGE_YUV444]) || if ((active_hevc_mode == 4 && !encoder->hevc[encoder_t::DYNAMIC_RANGE_YUV444]) || (active_av1_mode == 4 && !encoder->av1[encoder_t::DYNAMIC_RANGE_YUV444])) {
(active_av1_mode == 4 && !encoder->av1[encoder_t::DYNAMIC_RANGE_YUV444])) {
pos++; pos++;
continue; continue;
} }
// Skip it if it doesn't support HDR on the specified codec // Skip it if it doesn't support HDR on the specified codec
if ((active_hevc_mode == 3 && !encoder->hevc[encoder_t::DYNAMIC_RANGE]) || if ((active_hevc_mode == 3 && !encoder->hevc[encoder_t::DYNAMIC_RANGE]) || (active_av1_mode == 3 && !encoder->av1[encoder_t::DYNAMIC_RANGE])) {
(active_av1_mode == 3 && !encoder->av1[encoder_t::DYNAMIC_RANGE])) {
pos++; pos++;
continue; continue;
} }

View File

@@ -61,8 +61,7 @@ namespace log_checker {
for (std::string line; std::getline(input, line);) { for (std::string line; std::getline(input, line);) {
line = remove_timestamp_prefix(line); line = remove_timestamp_prefix(line);
if (line.size() >= end_str.size() && if (line.size() >= end_str.size() && line.compare(line.size() - end_str.size(), end_str.size(), end_str) == 0) {
line.compare(line.size() - end_str.size(), end_str.size(), end_str) == 0) {
return true; return true;
} }
} }

View File

@@ -285,8 +285,7 @@ VOID WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv) {
case WAIT_OBJECT_0: case WAIT_OBJECT_0:
// The service is shutting down, so try to gracefully terminate Sunshine.exe. // The service is shutting down, so try to gracefully terminate Sunshine.exe.
// If it doesn't terminate in 20 seconds, we will forcefully terminate it. // If it doesn't terminate in 20 seconds, we will forcefully terminate it.
if (!RunTerminationHelper(console_token, process_info.dwProcessId) || if (!RunTerminationHelper(console_token, process_info.dwProcessId) || WaitForSingleObject(process_info.hProcess, 20000) != WAIT_OBJECT_0) {
WaitForSingleObject(process_info.hProcess, 20000) != WAIT_OBJECT_0) {
// If it won't terminate gracefully, kill it now // If it won't terminate gracefully, kill it now
TerminateProcess(process_info.hProcess, ERROR_PROCESS_ABORTED); TerminateProcess(process_info.hProcess, ERROR_PROCESS_ABORTED);
} }

52
uv.lock generated
View File

@@ -101,27 +101,27 @@ wheels = [
[[package]] [[package]]
name = "clang-format" name = "clang-format"
version = "21.1.8" version = "22.1.8"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/29/ed/019e682e9f8a5a5abf4258b293453092ef9524b540ada591ccfdff1246df/clang_format-21.1.8.tar.gz", hash = "sha256:99369fe76526ba6be6d7a8093fee6cd266bbf5ce72597a0d79a4ce9a625b28cf", size = 11509, upload-time = "2025-12-16T20:34:33.065Z" } sdist = { url = "https://files.pythonhosted.org/packages/bd/55/b48aba45ba2638a706df1680e3dcdf96f94aed8e884886192d411d7a0071/clang_format-22.1.8.tar.gz", hash = "sha256:61a23f4fc0ad1932e1b0300ca451108bf1e751eb89f478062d87f888db9190e6", size = 11508, upload-time = "2026-07-11T14:08:34.542Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/17/1d/4b1d85acb99a2ee3bad0b20cc3e82c58fbfb39bf4dd5856ac1f2c4f36e65/clang_format-21.1.8-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:f447091c346027a09728a0a96128fe058419fe06cf200ccc3dc98bcd4399e351", size = 1465604, upload-time = "2025-12-16T20:34:03.955Z" }, { url = "https://files.pythonhosted.org/packages/5d/d8/29b9db6098da1a011ca3f7560c3942fa81404dbbb4367c3bd1d5c435da3b/clang_format-22.1.8-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:fc2ac5bd0ea41af49968fb69426207806d5f7016cb8f4bfbd44f4f1ffe8d53f2", size = 1492639, upload-time = "2026-07-11T14:08:10.531Z" },
{ url = "https://files.pythonhosted.org/packages/84/38/a61466227a8a6bf22c583f7bd810e75c9a356cfc63c6a712a201103a4ad3/clang_format-21.1.8-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:9a78fabba6b382866819b42a7b220d235a3baf6128a40fb7bd590c037f69879b", size = 1459014, upload-time = "2025-12-16T20:34:05.929Z" }, { url = "https://files.pythonhosted.org/packages/2e/55/539cc1036dae16659f50500ca34838cc5b16cd3e98e3faaf164186b98093/clang_format-22.1.8-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:d1147107222c0dda3e4869e9e8c4a79f9ed1de83819e5274de42b82adf3d2129", size = 1482323, upload-time = "2026-07-11T14:08:12.076Z" },
{ url = "https://files.pythonhosted.org/packages/ab/5d/6720c895c5cfc01831fac55ecf849f10d03d6222700909af14f6047c933b/clang_format-21.1.8-py2.py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2a044953efab5f7d0261f3a76aabc01358592faac1b73af38d8c83db6e91a69", size = 1725482, upload-time = "2025-12-16T20:34:07.525Z" }, { url = "https://files.pythonhosted.org/packages/50/25/a9734da014eecc1f54c051ad643a28f2f6643dcc812ac59320e80e2b1a3b/clang_format-22.1.8-py2.py3-none-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48c3b8dcfe9d4e964ced0e744e0f1f8ddc711bce92e50f6cab21e10f54857d08", size = 1757825, upload-time = "2026-07-11T14:08:13.397Z" },
{ url = "https://files.pythonhosted.org/packages/54/0d/074b940884ced1b5c93e2e7fc8a941673519a938e7f31aeade321e3ab094/clang_format-21.1.8-py2.py3-none-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:143d2dffa71058d05ac5ad71321682e23d638bce22c8f2e3d01ed457d841a5f3", size = 1856680, upload-time = "2025-12-16T20:34:09.987Z" }, { url = "https://files.pythonhosted.org/packages/5d/19/76bf4dfba7d418f3da4fe89ace66856abd79c8c314e750d5f0fb754de6f5/clang_format-22.1.8-py2.py3-none-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:07312f8a74bda89b6ce32fae46c589cd7bb210a5d3fb2829a70e28ff449f5b80", size = 1888650, upload-time = "2026-07-11T14:08:14.722Z" },
{ url = "https://files.pythonhosted.org/packages/34/d5/46e22ae8c4385a7836db7403ced63ea8056c971cbb806bf0c6f0d2133acc/clang_format-21.1.8-py2.py3-none-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6a4b61a743dad5afc5e60be0c5c8f162f6cf27fff9eed56ec0bf65c2bcbd8a8d", size = 2031282, upload-time = "2025-12-16T20:34:11.565Z" }, { url = "https://files.pythonhosted.org/packages/5c/b0/25fb71006b581c4e1dc4680b61c61842836dd1adb860e02f898deed8a919/clang_format-22.1.8-py2.py3-none-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6d7382dd728431c0cecf3c7db6ac0904e162c7c18889696ab8dc0630ff9349b", size = 2070288, upload-time = "2026-07-11T14:08:15.98Z" },
{ url = "https://files.pythonhosted.org/packages/e0/2a/cad75567c312d945cc26aaee7e1b7135703fed9c7e7ad15c427bf6ad7a84/clang_format-21.1.8-py2.py3-none-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:94de66c5eeca1270825348687d384750d91f1d8d12216b2df0aea892859be33a", size = 2047763, upload-time = "2025-12-16T20:34:13.175Z" }, { url = "https://files.pythonhosted.org/packages/36/94/f7c185f2f7c9cbd60878a260a2a03cc4eef0b9b9fbe8eb5045fa9b5ccbe9/clang_format-22.1.8-py2.py3-none-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7763ce0f45b5ff0b5ca7a830d6061ce431dcb644211f9b2bb483bfa66d6c78ca", size = 2101885, upload-time = "2026-07-11T14:08:17.329Z" },
{ url = "https://files.pythonhosted.org/packages/a8/c2/403e7371b1ab0f6175d708ecc93cf18085ea9f903e8fe7d17c43df698f06/clang_format-21.1.8-py2.py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d12b864b596b80810cdd7f97556c485dc09cfe2952503958535f01359e025fbb", size = 1804755, upload-time = "2025-12-16T20:34:14.813Z" }, { url = "https://files.pythonhosted.org/packages/e5/88/b82c066fa807da4ca2518fecf79071361f6324b77375e5e92c059c0697fd/clang_format-22.1.8-py2.py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b00cff6bfd1f1686f073a4fdf1cb937dbd58bf7510c659477805c03afdea0816", size = 1841177, upload-time = "2026-07-11T14:08:18.828Z" },
{ url = "https://files.pythonhosted.org/packages/76/33/9e7db5fc4abefb25022d266957f666bfc263ae3e51abdd2c997d2880ceee/clang_format-21.1.8-py2.py3-none-manylinux_2_31_armv7l.whl", hash = "sha256:b81f1e909f5e7ef862a7818dc22b302a3ff407f3534e3395aa7ba26746cc890e", size = 1643208, upload-time = "2025-12-16T20:34:16.898Z" }, { url = "https://files.pythonhosted.org/packages/03/7c/996fc84930d96db84418fbd16d3935ba77f42f9078d7610e4eae3e0e9294/clang_format-22.1.8-py2.py3-none-manylinux_2_31_armv7l.whl", hash = "sha256:396f66b2237131ae7c5c9a9c34d50b1b9bee60ec6754e8b0dcb943850c747aa6", size = 1684807, upload-time = "2026-07-11T14:08:20.092Z" },
{ url = "https://files.pythonhosted.org/packages/aa/9f/43f4e384cb8943418f94943f682835f375f15b9cc64c526d73a7360f2b2f/clang_format-21.1.8-py2.py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e10a5dca18a04997ad55c082bc0759edc7e337b24a2373ded109634fde12662a", size = 2701696, upload-time = "2025-12-16T20:34:19.043Z" }, { url = "https://files.pythonhosted.org/packages/1b/42/423de2ddedd3e068f7b773d7a4a593266692bc6108a2dd8ad4403d2ae718/clang_format-22.1.8-py2.py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:02ff8ad2e6a60554cc6b9b34310f71adb04da39e94302e08e3a655b77e4dd31c", size = 2736272, upload-time = "2026-07-11T14:08:21.625Z" },
{ url = "https://files.pythonhosted.org/packages/5d/6a/378187d72a465cebd3dbf7cd455e33b4931daa33e815b7865e6e65591a72/clang_format-21.1.8-py2.py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:10f7d7004d70b5e03fd3f764fc19fae89cd38d68b3482162cb09cac47c12c7b0", size = 2481266, upload-time = "2025-12-16T20:34:20.336Z" }, { url = "https://files.pythonhosted.org/packages/c1/6b/fbb98122d35333012d47186d669c1bb9a1cb527faa9a4a12c43124662f8f/clang_format-22.1.8-py2.py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8fc6139349a64f82d24396c815f5584f56da8912482dceadd9e5d7a3f8c17d6c", size = 2515477, upload-time = "2026-07-11T14:08:23.166Z" },
{ url = "https://files.pythonhosted.org/packages/99/eb/2332edb1846d6832932191a590203a53ec69f585e718b51796335a1dcb6e/clang_format-21.1.8-py2.py3-none-musllinux_1_2_i686.whl", hash = "sha256:303d5fd53090422119136b1a458e98db429dedd5db0add50e70f885f8c95d82a", size = 2954000, upload-time = "2025-12-16T20:34:21.739Z" }, { url = "https://files.pythonhosted.org/packages/40/99/a5e00402fe8281754df679a1028132a28ea0c0024d363509d9c29944ab85/clang_format-22.1.8-py2.py3-none-musllinux_1_2_i686.whl", hash = "sha256:65df71f1eab12de161b9059483be55cb72490ec7fc7ca4915b5de49722a76a46", size = 2986602, upload-time = "2026-07-11T14:08:24.679Z" },
{ url = "https://files.pythonhosted.org/packages/7b/b5/eed5c95521b77d3cde024c3a23c7a80c46e78aa5b5a81c5cf935e7267588/clang_format-21.1.8-py2.py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:6b9e0b45cfaf4a18336a6db4666dd6a6aae840e38b038e6d568a65f43ade007c", size = 3076720, upload-time = "2025-12-16T20:34:23.139Z" }, { url = "https://files.pythonhosted.org/packages/ac/f7/4a02e8f7d54f71c7ee4ce48c35cbe8f2be1afb1fbbca543f8db43f56a959/clang_format-22.1.8-py2.py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:0223471f781647d476ce0e09a0512521043343313e42932d900f97a15eacb510", size = 3120341, upload-time = "2026-07-11T14:08:26.234Z" },
{ url = "https://files.pythonhosted.org/packages/14/55/7527fbe31423a1bb53653c2a2b20aa34a73ec33b99199bceaec0f5907295/clang_format-21.1.8-py2.py3-none-musllinux_1_2_s390x.whl", hash = "sha256:4dd0fee9eaee9915ba7fa08e60ee9ddfba1f754d10d71164482d9eb387c431f0", size = 3160892, upload-time = "2025-12-16T20:34:24.618Z" }, { url = "https://files.pythonhosted.org/packages/84/05/6bd5e7bea1679dbed37a94a3b47d2ef0110792f64fd5761b2301d5b34fd2/clang_format-22.1.8-py2.py3-none-musllinux_1_2_s390x.whl", hash = "sha256:41e00922840376f8d1239db8fb5bc6b1d313bd09752344a85b0f8071112e5c7e", size = 3217448, upload-time = "2026-07-11T14:08:27.799Z" },
{ url = "https://files.pythonhosted.org/packages/53/61/1623382bc78ef139c196473a5c76b840a071c9002cb5cd2694ac50327db9/clang_format-21.1.8-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:9731aecf954651004f184347d0c589d4e91a39ccda21262ee17c60f80a4408b2", size = 2812487, upload-time = "2025-12-16T20:34:26.505Z" }, { url = "https://files.pythonhosted.org/packages/56/e3/3fcba146f12b9fbad24034136718d113dfacac03b1cf8273b2aa7bd641b0/clang_format-22.1.8-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:734d22be5c9d3a72a841444817aae8168c8f4bdccb08de491f05673e42ec7304", size = 2848689, upload-time = "2026-07-11T14:08:29.283Z" },
{ url = "https://files.pythonhosted.org/packages/53/e1/74f2000d44e4904472e5685afb98d19566c515026214733f02bbdc73d6d8/clang_format-21.1.8-py2.py3-none-win32.whl", hash = "sha256:2f5883ca83f718d8c2272e98b3cbda422fec520824b5a1e335c631dc6d812da7", size = 1271310, upload-time = "2025-12-16T20:34:28.179Z" }, { url = "https://files.pythonhosted.org/packages/2e/2b/5a7f2fba71179331b51bb547a02808a56aa515f8637adf035fd34c1d3b0b/clang_format-22.1.8-py2.py3-none-win32.whl", hash = "sha256:a796192453ae56c61e975fc56ee7defb4187013fc3de798cbe608cfe326762aa", size = 1298699, upload-time = "2026-07-11T14:08:30.63Z" },
{ url = "https://files.pythonhosted.org/packages/69/7a/c49c8af9135c6a6dfb9cd103328ba7b6551643dce71b57e58ea940884015/clang_format-21.1.8-py2.py3-none-win_amd64.whl", hash = "sha256:a7606da55e31ebf5b63dd75800392e6cca7c595a74100c2cebcda2d742130732", size = 1426467, upload-time = "2025-12-16T20:34:29.805Z" }, { url = "https://files.pythonhosted.org/packages/08/60/c6783b3190a8f741107a44912a11c39c1a51e254e86a4c43cb0151cea0dd/clang_format-22.1.8-py2.py3-none-win_amd64.whl", hash = "sha256:5fe6ad3e9399d589aff5ead432568a84cdcbbd621f1708340819efd74cbf8176", size = 1465069, upload-time = "2026-07-11T14:08:31.935Z" },
{ url = "https://files.pythonhosted.org/packages/ad/d3/8790b539afb6cb0d4474705d3750e78a1f0847ab6d3ef1b00dd1ae52f364/clang_format-21.1.8-py2.py3-none-win_arm64.whl", hash = "sha256:1aa10b3f647268361d08bf4f17ce70964b8d9c04d5539e7d8acbebd14dc4a49c", size = 1327254, upload-time = "2025-12-16T20:34:31.579Z" }, { url = "https://files.pythonhosted.org/packages/43/ca/7e1fa4a6044c37c37356bb18fc938d2811754231e448aaffc192dc3774ce/clang_format-22.1.8-py2.py3-none-win_arm64.whl", hash = "sha256:1fac18f32426c6fd7acde7087511bd80e2c549b2cd7477099582c216ae82fa63", size = 1344986, upload-time = "2026-07-11T14:08:33.183Z" },
] ]
[[package]] [[package]]
@@ -302,7 +302,7 @@ c = [
[package.metadata] [package.metadata]
requires-dist = [ requires-dist = [
{ name = "babel", marker = "extra == 'locale'", specifier = "==2.18.0" }, { name = "babel", marker = "extra == 'locale'", specifier = "==2.18.0" },
{ name = "clang-format", marker = "extra == 'lint-c'", specifier = "==21.1.8" }, { name = "clang-format", marker = "extra == 'lint-c'", specifier = "==22.1.8" },
{ name = "cmakelang", marker = "extra == 'lint-c'", specifier = "==0.6.13" }, { name = "cmakelang", marker = "extra == 'lint-c'", specifier = "==0.6.13" },
{ name = "flake8", marker = "extra == 'lint-python'", specifier = "==7.3.0" }, { name = "flake8", marker = "extra == 'lint-python'", specifier = "==7.3.0" },
{ name = "gcovr", marker = "extra == 'test-c'", specifier = "==8.6" }, { name = "gcovr", marker = "extra == 'test-c'", specifier = "==8.6" },
@@ -312,7 +312,7 @@ requires-dist = [
{ name = "lizardbyte-common", extras = ["locale"], marker = "extra == 'c'" }, { name = "lizardbyte-common", extras = ["locale"], marker = "extra == 'c'" },
{ name = "lizardbyte-common", extras = ["test-c"], marker = "extra == 'c'" }, { name = "lizardbyte-common", extras = ["test-c"], marker = "extra == 'c'" },
{ name = "lizardbyte-common", extras = ["test-python"], marker = "extra == 'dev'" }, { name = "lizardbyte-common", extras = ["test-python"], marker = "extra == 'dev'" },
{ name = "pytest", marker = "extra == 'test-python'", specifier = "==9.0.3" }, { name = "pytest", marker = "extra == 'test-python'", specifier = "==9.1.1" },
{ name = "pytest-cov", marker = "extra == 'test-python'", specifier = "==7.1.0" }, { name = "pytest-cov", marker = "extra == 'test-python'", specifier = "==7.1.0" },
] ]
provides-extras = ["dev", "c", "lint-c", "lint-python", "locale", "test-c", "test-python"] provides-extras = ["dev", "c", "lint-c", "lint-python", "locale", "test-c", "test-python"]
@@ -320,28 +320,28 @@ provides-extras = ["dev", "c", "lint-c", "lint-python", "locale", "test-c", "tes
[package.metadata.requires-dev] [package.metadata.requires-dev]
c = [ c = [
{ name = "babel", specifier = "==2.18.0" }, { name = "babel", specifier = "==2.18.0" },
{ name = "clang-format", specifier = "==21.1.8" }, { name = "clang-format", specifier = "==22.1.8" },
{ name = "cmakelang", specifier = "==0.6.13" }, { name = "cmakelang", specifier = "==0.6.13" },
{ name = "gcovr", specifier = "==8.6" }, { name = "gcovr", specifier = "==8.6" },
] ]
dev = [ dev = [
{ name = "babel", specifier = "==2.18.0" }, { name = "babel", specifier = "==2.18.0" },
{ name = "clang-format", specifier = "==21.1.8" }, { name = "clang-format", specifier = "==22.1.8" },
{ name = "cmakelang", specifier = "==0.6.13" }, { name = "cmakelang", specifier = "==0.6.13" },
{ name = "flake8", specifier = "==7.3.0" }, { name = "flake8", specifier = "==7.3.0" },
{ name = "gcovr", specifier = "==8.6" }, { name = "gcovr", specifier = "==8.6" },
{ name = "pytest", specifier = "==9.0.3" }, { name = "pytest", specifier = "==9.1.1" },
{ name = "pytest-cov", specifier = "==7.1.0" }, { name = "pytest-cov", specifier = "==7.1.0" },
] ]
lint-c = [ lint-c = [
{ name = "clang-format", specifier = "==21.1.8" }, { name = "clang-format", specifier = "==22.1.8" },
{ name = "cmakelang", specifier = "==0.6.13" }, { name = "cmakelang", specifier = "==0.6.13" },
] ]
lint-python = [{ name = "flake8", specifier = "==7.3.0" }] lint-python = [{ name = "flake8", specifier = "==7.3.0" }]
locale = [{ name = "babel", specifier = "==2.18.0" }] locale = [{ name = "babel", specifier = "==2.18.0" }]
test-c = [{ name = "gcovr", specifier = "==8.6" }] test-c = [{ name = "gcovr", specifier = "==8.6" }]
test-python = [ test-python = [
{ name = "pytest", specifier = "==9.0.3" }, { name = "pytest", specifier = "==9.1.1" },
{ name = "pytest-cov", specifier = "==7.1.0" }, { name = "pytest-cov", specifier = "==7.1.0" },
] ]