From 684bb1dcbc48230f4f39841375aa736aaeb0df3d Mon Sep 17 00:00:00 2001 From: Lorenzooone Date: Mon, 11 Nov 2024 08:36:40 +0100 Subject: [PATCH] Fix locking to wrong mutex --- .../ISNitro/usb_is_nitro_acquisition.cpp | 4 ++-- source/CaptureDeviceSpecific/usb_ds_3ds_capture.cpp | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/CaptureDeviceSpecific/ISNitro/usb_is_nitro_acquisition.cpp b/source/CaptureDeviceSpecific/ISNitro/usb_is_nitro_acquisition.cpp index b1fbbdd..75eface 100644 --- a/source/CaptureDeviceSpecific/ISNitro/usb_is_nitro_acquisition.cpp +++ b/source/CaptureDeviceSpecific/ISNitro/usb_is_nitro_acquisition.cpp @@ -257,7 +257,7 @@ void wait_all_is_nitro_transfers_done(CaptureData* capture_data, ISNitroCaptureR transfer_data = is_nitro_capture_recv_data[i].cb_data.transfer_data; is_nitro_capture_recv_data[i].cb_data.transfer_data_access.unlock(); if(transfer_data) - is_nitro_capture_recv_data[i].cb_data.is_transfer_done_mutex->specific_lock(i); + is_nitro_capture_recv_data[i].cb_data.is_transfer_done_mutex->specific_timed_lock(i); } while(transfer_data); } } @@ -271,7 +271,7 @@ void wait_all_is_nitro_buffers_free(CaptureData* capture_data, ISNitroCaptureRec } for(int i = 0; i < NUM_CAPTURE_RECEIVED_DATA_BUFFERS; i++) while(is_nitro_capture_recv_data[i].in_use) - is_nitro_capture_recv_data[i].is_buffer_free_shared_mutex->specific_lock(i); + is_nitro_capture_recv_data[i].is_buffer_free_shared_mutex->specific_timed_lock(i); } void wait_one_is_nitro_buffer_free(CaptureData* capture_data, ISNitroCaptureReceivedData* is_nitro_capture_recv_data) { diff --git a/source/CaptureDeviceSpecific/usb_ds_3ds_capture.cpp b/source/CaptureDeviceSpecific/usb_ds_3ds_capture.cpp index 408b8d6..93a0397 100644 --- a/source/CaptureDeviceSpecific/usb_ds_3ds_capture.cpp +++ b/source/CaptureDeviceSpecific/usb_ds_3ds_capture.cpp @@ -354,6 +354,7 @@ static void process_usb_capture_result(usb_capture_status result, std::chrono::t *clock_start = curr_time; chosen_buffer->time_in = diff.count(); chosen_buffer->index = (*chosen_buffer->last_index) + 1; + chosen_buffer->is_buffer_usage_done->specific_try_lock(chosen_buffer->real_index); chosen_buffer->in_use = true; (*chosen_buffer->last_index) += 1; chosen_buffer->is_there_ready_buffer->specific_unlock(chosen_buffer->real_index); @@ -377,18 +378,18 @@ static usb_ds_3ds_general_data* get_free_buffer(usb_ds_3ds_general_data* buffer_ } } if(!out_data) - buffer_data[0].is_there_ready_buffer->general_timed_lock(&dummy); + buffer_data[0].is_buffer_usage_done->general_timed_lock(&dummy); } return out_data; } static void wait_all_free_buffer(usb_ds_3ds_general_data* buffer_data) { for(int i = 0; i < NUM_DS_3DS_CONCURRENT_DATA_BUFFERS; i++) - buffer_data[i].index = (*buffer_data[i].last_index) - 1; + buffer_data[i].index = (*buffer_data[0].last_index) - 1; for(int i = 0; i < NUM_DS_3DS_CONCURRENT_DATA_BUFFERS; i++) { while(buffer_data[i].in_use) { buffer_data[i].is_there_ready_buffer->specific_unlock(i); - buffer_data[i].is_there_ready_buffer->specific_lock(i); + buffer_data[i].is_buffer_usage_done->specific_timed_lock(i); } } }