Compare commits

..

12 commits

Author SHA1 Message Date
PavelBARABANOV
ccd5b99634 xcz always block 2026-10-21 00:59:14 +03:00
PavelBARABANOV
da7d4165ee Revert "no need"
This reverts commit ea68a544cb.
2026-10-21 00:47:53 +03:00
PavelBARABANOV
144b0502c6 scanning from the update folder 2026-10-21 00:27:54 +03:00
PavelBARABANOV
1928bbbde0 more 2026-10-20 02:10:15 +03:00
PavelBARABANOV
469aa1e3d6 f 2026-10-19 17:29:29 +03:00
PavelBARABANOV
0b6f102d5d fix 2026-10-19 06:19:36 +03:00
PavelBARABANOV
710c927ff8 stub 2026-10-19 05:33:16 +03:00
PavelBARABANOV
9bc3503525 Install NSZ Solid to NAND 2026-10-19 01:48:34 +03:00
PavelBARABANOV
ea68a544cb no need 2026-10-18 22:21:52 +03:00
PavelBARABANOV
c6f33de22b oops 2026-10-18 14:09:03 +03:00
PavelBARABANOV
e77cc89bf5 license 2026-10-18 13:21:06 +03:00
PavelBARABANOV
17091b59f1 [core] Support block-compressed NSZ and XCZ 2026-10-18 13:14:14 +03:00
2 changed files with 13 additions and 32 deletions

View file

@ -57,21 +57,8 @@ u32 HardwareComposer::ComposeLocked(f32* out_speed_scale, Display& display,
// Set default speed limit to 100%.
*out_speed_scale = 1.0f;
// If no layers are visible, skip the logic. Acquiring and holding buffers here would
// consume the producer's queue without ever presenting.
bool any_visible = false;
for (auto& layer : display.stack.layers) {
if (layer->visible) {
any_visible = true;
break;
}
}
if (!any_visible) {
return 1;
}
// Wait for the previous composite, bounding the number of in-flight composites.
nvdisp.WaitForComposite();
this->ReleaseFramebuffersLocked(display);
// Determine the number of vsync periods to wait before composing again.
std::optional<s32> swap_interval{};
@ -165,13 +152,6 @@ u32 HardwareComposer::ComposeLocked(f32* out_speed_scale, Display& display,
// Advance by 1 frame (60 FPS compositing)
m_frame_number += 1;
// Release framebuffers once the frame has been handed to the compositor. This happens
// within the same vsync period as the acquire (release_frame_number is checked against
// the advanced counter), so the producer gets its buffers back immediately instead of
// losing a queue slot for a whole frame.
// TODO: support release fences; releasing before the composite has finished can tear.
this->ReleaseFramebuffersLocked(display);
return 1;
}

View file

@ -83,20 +83,21 @@ void Joycons::ScanThread(std::stop_token stop_token) {
constexpr u16 nintendo_vendor_id = 0x057e;
Common::SetCurrentThreadName("JoyconScanThread");
auto last_ret = 0u;
do {
SDL_hid_device_info* devs = SDL_hid_enumerate(nintendo_vendor_id, 0x0);
SDL_hid_device_info* cur_dev = devs;
while (cur_dev) {
if (IsDeviceNew(cur_dev)) {
LOG_DEBUG(Input, "Device Found,type : {:04X} {:04X}", cur_dev->vendor_id,
cur_dev->product_id);
RegisterNewDevice(cur_dev);
auto ret = SDL_hid_device_change_count();
if (last_ret == 0u || last_ret != ret) {
last_ret = ret;
SDL_hid_device_info* devs = SDL_hid_enumerate(nintendo_vendor_id, 0x0);
for (auto* cur_dev = devs; cur_dev; cur_dev = cur_dev->next) {
if (IsDeviceNew(cur_dev)) {
LOG_DEBUG(Input, "Device Found,type : {:04X} {:04X}", cur_dev->vendor_id, cur_dev->product_id);
RegisterNewDevice(cur_dev);
}
cur_dev = cur_dev->next;
}
cur_dev = cur_dev->next;
SDL_hid_free_enumeration(devs);
}
SDL_hid_free_enumeration(devs);
} while (Common::StoppableTimedWait(stop_token, std::chrono::seconds{5}));
}