From a4947ddd4329fcf2361ad4a7dacfa1ce466ae1ce Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 13 Jan 2025 14:59:30 +0200 Subject: [PATCH 1/2] avoid viewer exception when creating new device_model fails --- tools/realsense-viewer/realsense-viewer.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tools/realsense-viewer/realsense-viewer.cpp b/tools/realsense-viewer/realsense-viewer.cpp index 57347bc1e6..13b65cd90f 100644 --- a/tools/realsense-viewer/realsense-viewer.cpp +++ b/tools/realsense-viewer/realsense-viewer.cpp @@ -205,7 +205,20 @@ bool refresh_devices(std::mutex& m, if (device_models.size() == 0 && dev.supports(RS2_CAMERA_INFO_NAME) && std::string(dev.get_info(RS2_CAMERA_INFO_NAME)) != "Platform Camera" && std::string(dev.get_info(RS2_CAMERA_INFO_NAME)).find("IP Device") == std::string::npos) { - device_models.emplace_back(new device_model(dev, error_message, viewer_model)); + try + { + device_models.emplace_back(new device_model(dev, error_message, viewer_model)); + } + catch (const std::exception& e) + { + auto dev_name_itr = std::find(begin(device_names), end(device_names), get_device_name(dev)); + if (dev_name_itr != end(device_names)) + { + device_names.erase(dev_name_itr); + } + throw e; + } + viewer_model.not_model->add_log( rsutils::string::from() << ( *device_models.rbegin() )->dev.get_info( RS2_CAMERA_INFO_NAME ) << " was selected as a default device" ); From 667e737d08910503a76169713afe6c63e050dbe5 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 13 Jan 2025 16:04:48 +0200 Subject: [PATCH 2/2] log added --- tools/realsense-viewer/realsense-viewer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/realsense-viewer/realsense-viewer.cpp b/tools/realsense-viewer/realsense-viewer.cpp index 13b65cd90f..70b216f9f6 100644 --- a/tools/realsense-viewer/realsense-viewer.cpp +++ b/tools/realsense-viewer/realsense-viewer.cpp @@ -211,6 +211,7 @@ bool refresh_devices(std::mutex& m, } catch (const std::exception& e) { + log(RS2_LOG_SEVERITY_ERROR, "Exception raised on device_model creation"); auto dev_name_itr = std::find(begin(device_names), end(device_names), get_device_name(dev)); if (dev_name_itr != end(device_names)) {