mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.25k stars 1.24k forks source link

EQ shelf controls leaked when no sound IO or broadcast is configured #13238

Open ronso0 opened 1 month ago

ronso0 commented 1 month ago

Bug Description

warning [Main] The following 2 controls were leaked:
warning [Main] "[Mixer Profile]" "HiEQFrequency" QObject(0x0)
warning [Main] "[Mixer Profile]" "LoEQFrequency" QObject(0x0)

I noticed this repeatedly, now I managed to reproduce it:

Otoh, if I select a valid device, Apply/Okay, then clear the Main output, controls are not leaked :shrug:

FWIW making the controls std::unique_ptr<ControlPotmeter> has no effect. https://github.com/mixxxdj/mixxx/blob/8f647908af460e53fe8a860b6ce0964a93a55112/src/effects/effectsmanager.h#L115-L116

Version

at least 2.4 and later

OS

No response

ronso0 commented 1 month ago

It seems the leaked controls are a side effect. After this

  • click Reconfigure
  • (no selection for Main), click Okay (or Apply + Okay)

we should actually see a the next dialog "Mixxx was configured without any output sound devices."

Conclusion:

Apply doesn't apply what we see Sound preferences, or rather the internal state is not displayed in the GUI, like missing but still 'configured' devices are not displayed in the comboboxes. edit: not quite, it's just that without changes (accept no main output) the 'modified' flag is still false and slotApply() does nothing.

Might be related to #6077

ronso0 commented 1 month ago

(still no clue how that relates to the EQ controls)

ronso0 commented 1 month ago

It seems the leaked controls are a side effect. After this

  • click Reconfigure
  • (no selection for Main), click Okay (or Apply + Okay)

FYI this also seems to be the reason why sometimes tracks don't load (overview progress stuck).

daschuer commented 3 weeks ago

13312 and #13333 are merged. Can we consider this one as fixed?

ronso0 commented 3 weeks ago

13333 is unrelated, and #13312 only avoids the problematic situation.

I prefer to leave this open so someone may take a look and maybe finds the root cause. I suspect it's some missing nullptr check or something related to the main output and/or the output effect chain in EngineMixer.