fix: a file view states its pin once, so the axis holds still
`set_data_pin()` takes a range and `pin_event_window()` a pre/post split; the file view handed the split to both. On a recording whose stamps start before zero that stored a pin that no longer held the data, so every second frame found the pin wrong and stated it in full again -- rewriting the group's x range and discarding the user's gesture with it. The view alternated between the file's span and the corrupted one at the frame rate: a flicker in which no pan, zoom or click survived. `[drop-probe]` now reports the view and the count of pin statements, which must stay at two for a whole run. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
345145c52b
commit
4235ee6225
6 files changed
+52
-6
No files matched your search
+9
-2
@@ -3863,10 +3863,17 @@ gboolean noise_probe_denoise(gpointer user) {
|
||||
gboolean drop_probe(gpointer user) {
|
||||
App* a = static_cast<App*>(user);
|
||||
if (a->window == nullptr || a->model->signals().empty()) return G_SOURCE_REMOVE;
|
||||
std::fprintf(stderr, "[drop-probe] signals=%zu channels=%zu rows=%d slots0=[%s|%s|%s|%s]\n",
|
||||
// `repins` beside the view: a file's extent is fixed, so the pin is stated once and only its
|
||||
// numbers are refreshed afterwards. A count that tracks the frame number is the pin being written
|
||||
// every frame, which flickers the view and swallows every gesture.
|
||||
const plot::Range view = a->rows->view_range();
|
||||
std::fprintf(stderr,
|
||||
"[drop-probe] signals=%zu channels=%zu rows=%d slots0=[%s|%s|%s|%s] "
|
||||
"view=[%.6f..%.6f] repins=%d\n",
|
||||
a->model->signals().size(), a->model->channels().size(), a->rows->row_count(),
|
||||
a->rows->row(0).name[0].c_str(), a->rows->row(0).name[1].c_str(),
|
||||
a->rows->row(0).name[2].c_str(), a->rows->row(0).name[3].c_str());
|
||||
a->rows->row(0).name[2].c_str(), a->rows->row(0).name[3].c_str(), view.min, view.max,
|
||||
a->dbg_file_repins);
|
||||
for (int signal = 0; signal < 2 && static_cast<std::size_t>(signal) < a->model->signals().size();
|
||||
++signal) {
|
||||
GValue value = G_VALUE_INIT;
|
||||
|
||||
Reference in new issue
Block a user