2
0
forked from Ivasoft/DSView

Auto set as max scale when device changed

This commit is contained in:
dreamsourcelabTAI
2023-04-23 16:40:02 +08:00
parent 0c5d750109
commit 51290b4bf6
4 changed files with 38 additions and 17 deletions

View File

@@ -1699,15 +1699,21 @@ namespace pv
_msg->close(); _msg->close();
_msg = NULL; _msg = NULL;
} }
_sampling_bar->update_device_list();
reset_all_view(); reset_all_view();
load_device_config(); load_device_config();
_sampling_bar->update_device_list();
_logo_bar->dsl_connected(_session->get_device()->is_hardware()); _logo_bar->dsl_connected(_session->get_device()->is_hardware());
update_toolbar_view_status(); update_toolbar_view_status();
_session->device_event_object()->device_updated(); _session->device_event_object()->device_updated();
if (_device_agent->is_hardware())
_session->on_load_config_end();
if (_device_agent->get_work_mode() == LOGIC && _device_agent->is_file() == false)
_view->auto_set_max_scale();
if (_device_agent->is_file()) if (_device_agent->is_file())
{ {
check_session_file_version(); check_session_file_version();
@@ -1722,7 +1728,7 @@ namespace pv
} }
_session->start_capture(true); _session->start_capture(true);
} }
} }
break; break;
@@ -1737,12 +1743,18 @@ namespace pv
_view->timebase_changed(); _view->timebase_changed();
break; break;
case DSV_MSG_DEVICE_MODE_CHANGED: case DSV_MSG_DEVICE_MODE_CHANGED:
_sampling_bar->update_sample_rate_list();
_view->mode_changed(); _view->mode_changed();
reset_all_view(); reset_all_view();
load_device_config(); load_device_config();
update_toolbar_view_status(); update_toolbar_view_status();
_sampling_bar->update_sample_rate_list();
if (_device_agent->is_hardware())
_session->on_load_config_end();
if (_device_agent->get_work_mode() == LOGIC)
_view->auto_set_max_scale();
break; break;
case DSV_MSG_NEW_USB_DEVICE: case DSV_MSG_NEW_USB_DEVICE:

View File

@@ -240,7 +240,7 @@ namespace pv
_view_data->clear(); _view_data->clear();
_capture_data->clear(); _capture_data->clear();
_capture_data = _view_data; _capture_data = _view_data;
init_signals(); init_signals();
set_cur_snap_samplerate(_device_agent.get_sample_rate()); set_cur_snap_samplerate(_device_agent.get_sample_rate());
@@ -812,8 +812,7 @@ namespace pv
break; break;
} }
} }
dsv_info("SigSession::init_signals(), clear signals");
clear_signals(); clear_signals();
std::vector<view::Signal *>().swap(_signals); std::vector<view::Signal *>().swap(_signals);
@@ -2079,6 +2078,7 @@ namespace pv
if (cur_mode == LOGIC){ if (cur_mode == LOGIC){
clear_all_decode_task2(); clear_all_decode_task2();
clear_decode_result();
} }
_is_stream_mode = false; _is_stream_mode = false;
@@ -2091,14 +2091,15 @@ namespace pv
} }
} }
if (_view_data != _capture_data){ _capture_data->clear();
_capture_data->clear(); _view_data->clear();
_capture_data = _view_data; _capture_data = _view_data;
}
set_cur_snap_samplerate(_device_agent.get_sample_rate());
set_cur_samplelimits(_device_agent.get_sample_limit());
init_signals(); init_signals();
set_cur_snap_samplerate(_device_agent.get_sample_rate());
set_cur_samplelimits(_device_agent.get_sample_limit());
dsv_info("Switch work mode to:%d", mode); dsv_info("Switch work mode to:%d", mode);
broadcast_msg(DSV_MSG_DEVICE_MODE_CHANGED); broadcast_msg(DSV_MSG_DEVICE_MODE_CHANGED);
return true; return true;
@@ -2211,4 +2212,10 @@ namespace pv
return false; return false;
} }
void SigSession::on_load_config_end()
{
set_cur_snap_samplerate(_device_agent.get_sample_rate());
set_cur_samplelimits(_device_agent.get_sample_limit());
}
} // namespace pv } // namespace pv

View File

@@ -409,6 +409,8 @@ public:
return get_signal_snapshot()->have_data(); return get_signal_snapshot()->have_data();
} }
void on_load_config_end();
private: private:
void set_cur_samplelimits(uint64_t samplelimits); void set_cur_samplelimits(uint64_t samplelimits);
void set_cur_snap_samplerate(uint64_t samplerate); void set_cur_snap_samplerate(uint64_t samplerate);

View File

@@ -246,7 +246,7 @@ static int hw_dev_open(struct sr_dev_inst *sdi)
struct demo_context *const devc = sdi->priv; struct demo_context *const devc = sdi->priv;
if (sdi->status == SR_ST_ACTIVE) if (sdi->status == SR_ST_ACTIVE)
return; return SR_OK;
reset_demo_device(sdi); reset_demo_device(sdi);