Commit Graph
21 Commits
Author SHA1 Message Date
Edouard Griffiths 62ce6c7b88 Merge pull request #2955 from rgetz/rgetz-fix-message-queue-leaks
tree wide: Fix message ownership and reporting for unhandled queue messages
2026-09-27 00:56:58 +02:00
Robin Getz c2b30d4fa8 tree wide: Fix message ownership and reporting for unhandled queue messages
MessageQueue::pop() transfers ownership of the popped message to the
caller, but many handleInputMessages() implementations only deleted
the message when handleMessage() returned true. When a message was not
handled, ownership had already been transferred from the queue and the
message was leaked.

This was identified while investigating an ASAN leak in the audio
subsystem.

Update the applicable handleInputMessages() implementations to always
delete messages after handleMessage() returns. Unhandled messages are
also logged with the component and message identifier so unexpected
message routing is visible during debugging.

This change:
- Ensures every message popped from a queue has its ownership resolved.
- Prevents leaks when handleMessage() returns false.
- Makes unhandled messages visible instead of silently discarding them.
- Preserves the existing message handling logic and does not require
  components to handle message types that are legitimately irrelevant
  to them.

The changes are intentionally mechanical and limited to the common
message queue ownership and diagnostic pattern.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-25 23:49:05 -04:00
Jon BenistonandClaude Opus 5 ddedd59568 Add MessageDialog and use it in place of the QMessageBox static functions
QMessageBox::information() and friends build the box on the stack, parent
it to the calling widget and run a nested event loop in exec(). If the
parent is closed while the box is open, which the Web API can do at any
time, the parent deletes the box and its children and the heap is
corrupted.

MessageDialog offers the same calls, but the box is heap allocated, given
Qt::WA_DeleteOnClose and shown rather than exec'd, so nothing runs a
nested event loop and the box owns its own lifetime. A box with the same
text as one already up is raised instead of a second being created.

The trade off is that information(), warning() and critical() return
immediately and cannot report which button was pressed. question() takes
a callback for the cases that need the answer.

Converts the call sites in the device, channel and feature GUIs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 17:16:49 +01:00
f4exb 63348eeee1 Make device title editable in the basic device settings. Fixes #2292 2026-01-28 03:05:39 +01:00
Daniele Forsi 8c3f7e3775 Remove unused includes and use more direct includes 2024-04-11 23:31:34 +02:00
f4exb 8ce5ca51e2 Apply PR #1888 changes to samplemimo plugins 2023-11-29 05:06:54 +01:00
f4exb 743260db96 Rewriting of copyright notices for plugins/samplemimo. Part of #1893 2023-11-18 06:40:23 +01:00
Jon Beniston 0dd466a900 Add DialogPositioner to ensure dialogs are fully on screen and remain on
screen when screen orientation changes.
Add DialPopup to allow dials to adjusted with a slider, which is easier
on touchscreens.
Add TableTapAndHold to support table context menus on touchscreens.
2022-12-20 10:31:15 +00:00
Jon Beniston ee8b8ade88 Device GUIs: Constain window size via minimumSize/maximumSize, rather than handling resizeEvent. Add maximum button. Hide size buttons when window size is fixed 2022-11-09 15:53:44 +00:00
f4exb da8f987ee9 TestMO source: Make settings assignments atomic. Part of #1329 2022-11-01 19:40:00 +01:00
f4exb 949a9e9380 Center frequency dials up to 9 digits and transverter delta frequency dial up to 12 digits. Fixes #1476 2022-10-15 03:04:29 +02:00
f4exb 9e5c629473 v7: API: added workspace handling for device, spectrum, feature and channel. Implements #1242 2022-05-13 22:24:48 +02:00
f4exb 5f9d14a56e Massive UI revamping (v7): Fixed sizing of some device windows. Part of #1209 2022-04-25 00:15:46 +02:00
f4exb 218237c466 Massive UI revamping (v7): Devices: set the border on the outer side of the window. Part of #1213 2022-04-24 02:13:18 +02:00
f4exb f7bfd10bd7 Massive UI revamping (v7): sample sink and mimo: make sure it is all fixed sized 2022-04-23 18:48:16 +02:00
f4exb 5a265d7fe3 Massive UI revamping (v7): fixed widget size handling: sample MIMO. Part of #1209 2022-04-21 21:44:57 +02:00
f4exb 40e34bdebd Massive UI revamping (v7): implemented device common settings from top bar and added documentation on device windows top and bottom bars 2022-04-17 01:31:50 +02:00
f4exb 32973132d9 Massive UI revamping (v7): unify custom widget borders 2022-04-10 02:19:26 +02:00
f4exb aad90aeabc Massive UI revamping (v7): devices basic 2022-04-07 16:32:03 +02:00
f4exb b5d501e6ab Spactrum: allow arbitrary FPS (API) or in a range of FPS (GUI) with possible no limit. Implements #772 2021-02-12 00:53:18 +01:00
f4exb 17a9d387c3 Test MO sync 2020-11-10 20:32:57 +01:00