diff --git a/include/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared_general.hpp b/include/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared_general.hpp index e874751..14cf03b 100644 --- a/include/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared_general.hpp +++ b/include/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared_general.hpp @@ -10,6 +10,6 @@ uint64_t ftd3_get_capture_size(CaptureData* capture_data); std::string ftd3_get_serial(std::string serial_string, int &curr_serial_extra_id); void ftd3_insert_device(std::vector &devices_list, std::string serial_string, int &curr_serial_extra_id, uint32_t usb_speed, bool is_driver); void data_output_update(int inner_index, size_t read_data, CaptureData* capture_data, std::chrono::time_point &base_time, bool is_3d); -bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status); +bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status, bool is_driver); #endif diff --git a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_driver_acquisition.cpp b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_driver_acquisition.cpp index 802b22f..c96d1dd 100644 --- a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_driver_acquisition.cpp +++ b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_driver_acquisition.cpp @@ -57,7 +57,7 @@ static void fast_capture_call(FTD3XXReceivedDataBuffer* received_buffer, Capture bool could_use_3d = get_3d_enabled(&capture_data->status, true); bool stored_3d_status = true; - bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status); + bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status, true); if(!result_3d_setup) return; @@ -80,7 +80,7 @@ static void fast_capture_call(FTD3XXReceivedDataBuffer* received_buffer, Capture if(!wait_all_fast_capture_call_async_transfers(received_buffer, capture_data)) return; - result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status); + result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status, true); if(!result_3d_setup) return; @@ -116,13 +116,13 @@ static bool safe_capture_call(FTD3XXReceivedDataBuffer* received_buffer, Capture void* handle = ((ftd3_device_device_handlers*)capture_data->handle)->driver_handle; bool could_use_3d = get_3d_enabled(&capture_data->status, true); bool stored_3d_status = true; - bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status); + bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status, true); if(!result_3d_setup) return true; while(capture_data->status.connected && capture_data->status.running) { if(could_use_3d && (stored_3d_status != capture_data->status.requested_3d)) { - result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status); + result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status, true); if(!result_3d_setup) return true; } diff --git a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_acquisition.cpp b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_acquisition.cpp index 06afabd..139e31f 100644 --- a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_acquisition.cpp +++ b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_acquisition.cpp @@ -176,7 +176,7 @@ static void ftd3_libusb_capture_main_loop_processing(FTD3LibusbCaptureReceivedDa bool could_use_3d = get_3d_enabled(&capture_data->status, true); bool stored_3d_status = true; - bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status); + bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status, false); if(!result_3d_setup) return; @@ -192,7 +192,7 @@ static void ftd3_libusb_capture_main_loop_processing(FTD3LibusbCaptureReceivedDa return; } - result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status); + result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status, false); if(!result_3d_setup) return; diff --git a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_comms.cpp b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_comms.cpp index f34fee4..208c8ac 100644 --- a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_comms.cpp +++ b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_libusb_comms.cpp @@ -236,7 +236,7 @@ static int ftd3_libusb_insert_device(std::vector &devices_list, l bool result_setup = ftd3_libusb_setup_connection(handle, &claimed_cmd, &claimed_bulk); uint32_t usb_speed = 0x200; libusb_speed read_speed = (libusb_speed)libusb_get_device_speed(usb_device); - if((read_speed >= LIBUSB_SPEED_SUPER) || ((read_speed == LIBUSB_SPEED_UNKNOWN) && (usb_descriptor->bcdUSB >= 0x300))) + if((read_speed >= LIBUSB_SPEED_SUPER) || (usb_descriptor->bcdUSB >= 0x300)) usb_speed = 0x300; if(result_setup) ftd3_insert_device(devices_list, (std::string)(serial), curr_serial_extra_id, usb_speed, false); diff --git a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared.cpp b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared.cpp index 28b9960..57a1c20 100644 --- a/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared.cpp +++ b/source/CaptureDeviceSpecific/3DSCapture_FTD3/3dscapture_ftd3_shared.cpp @@ -212,7 +212,7 @@ bool connect_ftd3(bool print_failed, CaptureData* capture_data, CaptureDevice* d return true; } -bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status) { +bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status, bool is_driver) { CaptureStatus tmp_status; tmp_status.device = capture_data->status.device; tmp_status.connected = capture_data->status.connected; @@ -249,7 +249,7 @@ bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& sto return false; } - if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result)))) { + if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result || (first_pass && is_driver))))) { capture_error_print(print_failed, capture_data, "Stream failed"); preemptive_close_connection(capture_data); return false; @@ -262,7 +262,7 @@ bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& sto return false; } - if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result)))) { + if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result || (first_pass && is_driver))))) { capture_error_print(print_failed, capture_data, "Stream failed"); preemptive_close_connection(capture_data); return false;