Skip to content

Commit 0f018ed

Browse files
committed
FilterGraphEditor: push/pop font around each menu item to ensure proper behavior when popup menus are in a new platform window. Fixes #932.
1 parent 03e60ed commit 0f018ed

File tree

2 files changed

+139
-0
lines changed

2 files changed

+139
-0
lines changed

release-notes/v0.1.1.md

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
# ngscopeclient v0.1.1-rc2 release notes
2+
3+
This release is identical code-wise to RC1 and fixes a packaging issue on Windows related to point release version strings.
4+
5+
## Platform Support
6+
7+
### Supported Platforms
8+
9+
We have tested ngscopeclient on the following platforms and ship official binaries for them.
10+
11+
* Windows 11 (x86-64)
12+
* MacOS 13 or newer (x86-64)
13+
* MacOS 15 or newer (Apple Silicon / arm64)
14+
* Linux
15+
* Arch (x86-64)
16+
* Debian 12 "Bookworm" (x86-64)
17+
* Debian 13 "Trixie" (x86-64)
18+
* Fedora 42 (x86-64)
19+
* Ubuntu 22.04 (x86-64)
20+
* Ubuntu 24.04 (x86-64)
21+
22+
### Unsupported client platforms
23+
24+
We have not tested on ARM Windows or Linux, or Linux distros not listed as supported. We welcome test results, successful or otherwise, if you compile from source on these platforms.
25+
26+
## Instrument Support
27+
28+
Check the PDF or online user manual for details on driver feature limitations, which drivers support each model, etc.
29+
30+
A "slow" marking indicates that the device is supported, but known to have poor performance due to instrument firmware
31+
limitations. (Many benchtop scopes, even relatively high end ones, are not well optimized for remote control. Delays of hundreds of milliseconds between the trigger and the API reporting availability of data, and multiple seconds to actually download waveform data, are not uncommon on entry level instruments)
32+
33+
Quick summary of known working models (other similar ones may work but are not tested):
34+
* Agilent: DSO5000, DSO6000/MSO6000, DSOX1200, MSOX-2000, MSOX-3000, MSOX-3000T (slow)
35+
* Alientek: DP100
36+
* Andy Haas: Haasoscope Pro
37+
* ASEQ Instruments: LR1
38+
* Batronix: Magnova
39+
* Copper Mountain: Tested on S5180B, all other models use same host software and should also work
40+
* Digilent: Analog Discovery 2, Analog Discovery Pro
41+
* edy555: NanoVNA
42+
* EEVengers: ThunderScope
43+
* Erik Kaashoek: TinySA Ultra
44+
* Ettus Research: UHD-based SDRs (receive only)
45+
* Generic: CSV streaming data over socket, Linux socketcan
46+
* GW Instek: GPD-X303S
47+
* Keysight: MSOX-2000, MSOX-3000, MSOX-3000T (slow), DCA 86100A
48+
* Kuaiqu: SSPS-S, SPPS*D, SPPS-D, R-SPPS
49+
* Microphase: AntSDR (running UHD firmware, IIO not supported)
50+
* MultiLane: ML4039-BTP
51+
* Owon: XDG 2000/3000, XDM1041/1241
52+
* Pico: 3000D, 6000E, PicoVNA 106/108 (using PicoVNA 5 software)
53+
* Riden: RD series
54+
* Rigol: DG4000, DS1100D/E (slow), DS1000Z (slow), MSO5000 (slow), DHO800 (slow), DHO900 (slow), DP832/832A
55+
* Rohde & Schwarz: HMC8012, HMC804x, RTM3000 (partial), RTO6
56+
* Siglent: SDG2000X, SDL1000X/X-E, SDS1000X-E (slow), SDS2000X-E (slow), SDS800X HD (slow), SDS1000X HD (slow),
57+
SDS2000X+ (slow), SDS2000X HD (slow), SDS3000X HD (slow), SDS5000X (slow), SDS6000A, SDS7000A, SPD3303X/X-E, SSG5000X
58+
* Simulator: oscilloscope, power supply
59+
* SiniLink: XYS3580
60+
* Tektronix: MSO5/6 (slow, instrument firmware occasionally crashes)
61+
* Teledyne LeCroy: DDA5000A, HDO9000, SDA 8Zi, WaveRunner Xi/8000/9000, WaveSurfer 3000 tested and known to work. All
62+
MAUI-based scopes use the same remoting API and are very likely to work but we didn't have access to every model to
63+
test. The WaveSurfer line have underpowered CPUs and are significantly slower for remote operation than higher end models.
64+
65+
## What's New (since v0.1)
66+
67+
### New application features
68+
69+
* Filters: 8B/10B decode now tries more aggressively to recover comma sync after bitslipping when decoding jittery or noisy data, rather than giving decode errors for the remainder of the waveform (https://github.com/ngscopeclient/scopehal/issues/1025)
70+
* Filters: Added basic decoding for PCIe message TLPs (hex type and body but no upper layer)
71+
* Filters: Initial implementation of PCIe BDF decoding for destination addresses in configuration write TLPs (https://github.com/ngscopeclient/scopehal/issues/1030)
72+
* General: Added --help and --version command line arguments (https://github.com/ngscopeclient/scopehal-apps/pull/931)
73+
74+
### New driver features
75+
76+
* Batronix: initial Magnova scope support (https://github.com/ngscopeclient/scopehal/pull/1031)
77+
* SiniLink: Added driver for ModBus control of XYS3580 and related PSUs (https://github.com/ngscopeclient/scopehal/pull/1003)
78+
* ThunderScope: updates for SCPI / binary waveform format API changes in TS.NET
79+
80+
### Other changes
81+
82+
* GUI: Updated to latest upstream imgui (1.92.4 WIP)
83+
* GUI: Protocol analyzer now displays marker text in the rightmost column if there is no hexdump column, and stretches the column width to leave room for text (https://github.com/ngscopeclient/scopehal-apps/issues/926) rather than defaulting to the leftmost which might be too small to read clearly
84+
* Packaging: allow version to be embedded in tarballs rather than relying on git (https://github.com/ngscopeclient/scopehal/pull/1008)
85+
* Tests: Unit tests now use FFTW instead of FFTS because FFTS had portability issues and a GPL dependency is fine for unit tests we don't redistribute (https://github.com/ngscopeclient/scopehal/issues/757)
86+
87+
## Bugs fixed (since v0.1)
88+
89+
### General
90+
91+
* Filters: Incorrect loading of CSV files with Windows line endings (https://github.com/ngscopeclient/scopehal/issues/1002)
92+
* Filters: PCIe link training decode got confused if the waveform started with the link in L0 then it dropped (https://github.com/ngscopeclient/scopehal/issues/1024)
93+
* GUI: Crash in protocol analyzer dialog caused by deleting packet manager during a partial filter graph refresh (https://github.com/ngscopeclient/scopehal-apps/issues/925)
94+
* GUI: Crash with vk::OutOfHostMemoryError when application is minimized on a Windows system with an Intel ARC GPU (https://github.com/ngscopeclient/scopehal-apps/issues/893)
95+
* GUI: Crash with YAML::ParserException when instrument path contains a backslash (https://github.com/ngscopeclient/scopehal-apps/issues/915)
96+
* GUI: Changing the color of a waveform in the properties dialog did not redraw in the new color until the waveform was moved or the scope triggered again (https://github.com/ngscopeclient/scopehal-apps/issues/924)
97+
* GUI: DPI scaling issues in the filter graph editor (https://github.com/ngscopeclient/scopehal-apps/issues/868)
98+
* GUI: Font size in filter graph editor popup menus would change slightly if the menu went out of the parent window (https://github.com/ngscopeclient/scopehal-apps/issues/932)
99+
* GUI: Typing a new trigger position into the text box in the trigger properties dialog does not actually change the trigger position in hardware (no github ticket)
100+
* GUI: Protocol analyzer dialogs still show the old title if a filter is renamed (https://github.com/ngscopeclient/scopehal-apps/issues/923)
101+
* Packaging: tarballs didn't tag binaries with the hash since no .git folder was included and there was no other way to pass that info along (https://github.com/ngscopeclient/scopehal-apps/pull/910)
102+
* Packaging: Incorrect version dependencies on Debian/Ubuntu packages (https://github.com/ngscopeclient/scopehal-apps/issues/896)
103+
* Tests: Incorrect buffer size calculation in DeEmbedFilter unit test causing intermittent crashes of the test case in CI (no github ticket)
104+
105+
### Drivers
106+
107+
* Agilent: problems with DSO-X 2022A since it only has eight digital channels (https://github.com/ngscopeclient/scopehal/pull/1015)
108+
* LeCroy: Crash with std::out_of_range when acquiring wavefrom on WaveSurfer 3000/3000Z (https://github.com/ngscopeclient/scopehal/issues/1026)
109+
* Siglent: many crashes and malfunctions especially with SDS HD series scopes (https://github.com/ngscopeclient/scopehal/pull/1023)
110+
* Siglent: function generator configuration refreshes too fast, causing device firmware to freeze (https://github.com/ngscopeclient/scopehal/pull/1008)
111+
* ThunderScope: trigger position would occasionally be corrupted and get stuck at -9223 seconds (no github ticket)
112+
* ThunderScope, Pico, Digilent: when waiting for a trigger event the socket TX buffer would never be flushed causing changes to instrument settings to not take effect
113+
114+
## Known bugs and issues
115+
116+
It's not perfect, but if we waited until it was we'd never ship. Here's a few of the most notable quirks you might run into.
117+
118+
* Toolbar icons for "single trigger" and "force trigger" are not visually distinct (https://github.com/ngscopeclient/scopehal-apps/issues/791)
119+
* Area-under-curve filter is missing proper Y axis grid lines
120+
(https://github.com/ngscopeclient/scopehal-apps/issues/891)
121+
* Docking anchors act funny on MacOS (https://github.com/ngscopeclient/scopehal-apps/issues/871)
122+
* Title bars of free floating dock spaces have too-large fonts (https://github.com/ngscopeclient/scopehal-apps/issues/869)
123+
* Newly added channels can spawn in plots which are not currently visible making them hard to find (https://github.com/ngscopeclient/scopehal-apps/issues/657)
124+
* Newly added filters may not have same gain/offset as the plot they spawn in (https://github.com/ngscopeclient/scopehal-apps/issues/652)
125+
* Eye patterns forget color ramp setting when dragged to a new plot (https://github.com/ngscopeclient/scopehal-apps/issues/556)
126+
* GUI light mode is impractical to use. Many color defaults are set assuming dark mode and have poor contrast when light mode is selected unless dozens of preferences are individually updated to match, and toolbar icons don't have light mode variants (https://github.com/ngscopeclient/scopehal-apps/issues/526)
127+
* Filter graph nodes are reference counted and should (occasionally this does not happen due to dangling reference bugs) self-delete when all consumers of their output (waveform views, filter inputs, etc.) are removed. This is non-ideal from a user experience perspective, but can't be fixed without substantial refactorings (planned for v0.2) and we didn't want to delay shipping v0.1 any further. v0.2 will eliminate the homegrown reference counting in favor of std::shared_ptr which should completely eliminate this class of bug, as well as making the filter graph bidirectionally traversable which will enable manual deletion of filters and many optimizations such as not computing filter block outputs which are not being displayed or used in computations (https://github.com/ngscopeclient/scopehal/issues/992).
128+
* OS integration including drag-and-drop to open files, double clicking files to open, etc. is incomplete on some platforms (https://github.com/ngscopeclient/scopehal-apps/issues/890)
129+
* Menu bar on MacOS is attached to the application like on other OSes, rather than at the top of the screen in the native menu (https://github.com/ngscopeclient/scopehal-apps/issues/510)

src/ngscopeclient/FilterGraphEditor.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1745,6 +1745,8 @@ void FilterGraphEditor::FilterSubmenu(StreamDescriptor stream, const string& nam
17451745

17461746
if(ImGui::BeginMenu(name.c_str()))
17471747
{
1748+
ImGui::PushFont(nullptr, 0);
1749+
17481750
//Find all filters in this category and sort them alphabetically
17491751
vector<string> sortedNames;
17501752
for(auto it : refs)
@@ -1785,6 +1787,7 @@ void FilterGraphEditor::FilterSubmenu(StreamDescriptor stream, const string& nam
17851787
}
17861788
}
17871789

1790+
ImGui::PopFont();
17881791
ImGui::EndMenu();
17891792
}
17901793
}
@@ -2509,6 +2512,8 @@ void FilterGraphEditor::DoAddMenu()
25092512

25102513
if(ImGui::BeginMenu("Import"))
25112514
{
2515+
ImGui::PushFont(nullptr, 0);
2516+
25122517
//Do all of the menu items
25132518
for(auto fname : sortedNames)
25142519
{
@@ -2523,11 +2528,15 @@ void FilterGraphEditor::DoAddMenu()
25232528
if(ImGui::MenuItem(shortname.c_str()))
25242529
m_parent->CreateFilter(fname, nullptr, StreamDescriptor(nullptr, 0));
25252530
}
2531+
2532+
ImGui::PopFont();
25262533
ImGui::EndMenu();
25272534
}
25282535

25292536
if(ImGui::BeginMenu("Generate"))
25302537
{
2538+
ImGui::PushFont(nullptr, 0);
2539+
25312540
//Do all of the menu items
25322541
for(auto fname : sortedNames)
25332542
{
@@ -2543,6 +2552,7 @@ void FilterGraphEditor::DoAddMenu()
25432552
m_parent->CreateFilter(fname, nullptr, StreamDescriptor(nullptr, 0));
25442553
}
25452554

2555+
ImGui::PopFont();
25462556
ImGui::EndMenu();
25472557
}
25482558

0 commit comments

Comments
 (0)