Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: simplify waveform combobox #13220

Open
wants to merge 17 commits into
base: main
Choose a base branch
from

Conversation

acolombier
Copy link
Contributor

@acolombier acolombier commented May 7, 2024

This addresses #6428 #13226

This current uses RGB only and the RGB L/R is unused.

By default, it prioritises the GL version if AllShader isn't available, is that the best approach?

Kooha-2024-05-08-18-15-40-10MB.mp4

@JoergAtGithub
Copy link
Member

The idea is to merge #13151 and than retire all classic GL and GLSL waveforms.

Since #12994 we have also first waveform type specific sub options, I could imagine, that we use such an aub option for L/R support as well.

@acolombier
Copy link
Contributor Author

acolombier commented May 8, 2024

Are we planning to remove MIXXX_USE_QOPENGL in this case?
I guess that doesn't not invalidate this PR, since this is already decoupling the rendering backend complexity away from the waveform type.
When it comes to RGB L/R, is it really something that people use? On LateNight default colour scheme, it just make the waveform even more rainbow looking and hard to follow. We could add a check box when RGB is selected, but since this task is to simplify the UX, I'm wondering if this is really necessary


Joerg replied

When it comes to RGB L/R, is it really something that people use?

Yes, we had the discussion already, this is why it got implemented. The old GLSL waveforms had this (but looking different), and to deprecated them requires feature-equality.

@acolombier
Copy link
Contributor Author

(not sure why you edited my message?)
It doesn't quite make sense as of why there will be two separate waveform renderer tho. Arguably, if this is used, the same option should be done for the HSV waveform.
Anyway, I'm going to add another checkbox.

@github-actions github-actions bot added the build label May 8, 2024
@acolombier
Copy link
Contributor Author

I have merged the RGB L/R and RGB in a single renderer, and introduced rendering option, which can be reused with HSV in the future, giving slip mode renderer as a free bonus. Happy to move this commit in a dedicated PR. Would be great if @m0dB could have a quick look on that section!

@acolombier acolombier force-pushed the feat/simplify-waveform-combobox branch from 5c47786 to abd6302 Compare May 8, 2024 17:17
@acolombier
Copy link
Contributor Author

Right, I think this is pretty much ready. The only outstanding question I have is, should I hide the Acceleration checkbox is not available/only available? Since I do the following for the L/R option, it might keep it consistent

@JoergAtGithub
Copy link
Member

JoergAtGithub commented May 8, 2024

(not sure why you edited my message?)

I did not edit it intentional - sorry - I just intended to reply

@acolombier acolombier force-pushed the feat/simplify-waveform-combobox branch from abd6302 to 0907c2e Compare May 9, 2024 14:02
@acolombier
Copy link
Contributor Author

Right, that should be ready for review now.
Once #13151 (and #12641) are in, it should be straight forward to retire the legacy waveforms.

@acolombier acolombier marked this pull request as ready for review May 9, 2024 14:04
@ywwg
Copy link
Member

ywwg commented May 9, 2024

this is a great quality-of-life fix! thank you

@acolombier acolombier marked this pull request as draft May 10, 2024 19:37
@m0dB
Copy link
Contributor

m0dB commented May 11, 2024

This is nice.

@acolombier acolombier force-pushed the feat/simplify-waveform-combobox branch from 8077ed0 to 10c4e51 Compare May 12, 2024 16:00
@acolombier
Copy link
Contributor Author

acolombier commented May 12, 2024

I've updated the UI and behaviour according to what #13226 mentioned. @m0dB I have already added the High details option so hopefully will make the integration with #13151 seamless.

Code is a bit dirty in some places, especially in the factory, but hopefully with your help, we can make it good enough.

Here is the demo:

Kooha-2024-05-12-16-58-50.mp4

@acolombier acolombier marked this pull request as ready for review May 12, 2024 16:03
@acolombier acolombier force-pushed the feat/simplify-waveform-combobox branch from 264bb21 to 1352d7b Compare May 14, 2024 11:23
@acolombier
Copy link
Contributor Author

@ywwg I have added full coverage on the waveform type upgrade. Please let me know if I have covered your usecase correctly. Also removed the VSync if not in dev mode

@acolombier acolombier requested review from ywwg and m0dB May 21, 2024 15:31
@acolombier acolombier force-pushed the feat/simplify-waveform-combobox branch from f6bd919 to 9536d13 Compare May 21, 2024 16:05
@m0dB
Copy link
Contributor

m0dB commented May 22, 2024

I have created a PR on top of this PR (I hope that works, git wise) to get rid of all the code duplication in the allshader waveformwidget, reducing it to a single one + some cleanup of waveformwidgetfactory.

acolombier#2

allshader::WaveformRendererSignalBase::Options expectedOptions;
};

QList<test_case> testCases = {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spec available here

@ywwg
Copy link
Member

ywwg commented May 22, 2024

I hope that works, git wise

that should work, yes

@acolombier acolombier requested a review from Swiftb0y May 22, 2024 17:22
@acolombier
Copy link
Contributor Author

I have hidden the acceleration checkbox on Mac. Note that it will still be show if running with --developer or if the acceleration backend isn't the recommended one (all-shader, happens if you override the setting in INI)

@m0dB could you confirm it hides properly?

@m0dB
Copy link
Contributor

m0dB commented May 22, 2024

could you confirm it hides properly?

Not entirely, the combobox is a bit smaller than the other full-width comboboxes.

That said, I created acolombier#3 and checked that the non-accelerated waveform types work correctly on macOS, so we might as well enable them? Not very useful on macOS I guess, but at least we keep the UI and the behaviour identical across platforms.

We don't seem to have stacked and simple software waveform types though. I guess they should be disabled in the combobox when non-accelerated is selected?

@acolombier
Copy link
Contributor Author

Not entirely, the combobox is a bit smaller than the other full-width comboboxes.

Which backend were you using? All-shader? Otherwise, it is expected it shows it.

we might as well enable them?

As our Mac developer, I'll follow your call the matter! :)
We mentioned in our sync Monday that macs have a fairly unified set of hardware, which all support the all-shader one, so I thought it might make sense to default to all shader and simplify the UI, but I also like the unified UI across platform so happy either way.

We don't seem to have stacked and simple software waveform types though. I guess they should be disabled in the combobox when non-accelerated is selected?

I went the other way around and made the combobox leading the decision with I think is a better UX: if you selected Simple or Stacked it will enable the checkbox (enable hardware) and disable the option. This way, a user can understand no software fallback is available but also don't have to toggle the checkbox first before selecting the new waveform type.
I guess I could add a tooltip too?

@acolombier
Copy link
Contributor Author

acolombier commented May 23, 2024

@ Mixxx's Core Team could we look at merging that PR ASAP, and potentially to a thorough retroactive review? I agree to address comments and concerns in one or more follow up PRs, but this would help me and @m0dB to stop that PR to grow out of proportion

@ywwg
Copy link
Member

ywwg commented May 23, 2024

sorry, which PR?

Copy link
Member

@Swiftb0y Swiftb0y left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, mostly nitpicks to be addressed some other time, only thing that needs work is the upgrade code which currently looks like a bug to me.

src/preferences/dialog/dlgprefwaveform.cpp Outdated Show resolved Hide resolved
src/preferences/upgrade.cpp Outdated Show resolved Hide resolved
src/preferences/upgrade.cpp Outdated Show resolved Hide resolved
src/preferences/upgrade.cpp Outdated Show resolved Hide resolved
src/preferences/dialog/dlgprefwaveform.h Outdated Show resolved Hide resolved
src/preferences/dialog/dlgprefwaveform.cpp Outdated Show resolved Hide resolved
src/waveform/waveformwidgetfactory.cpp Show resolved Hide resolved
src/waveform/waveformwidgetfactory.cpp Show resolved Hide resolved
src/waveform/widgets/waveformwidgettype.h Outdated Show resolved Hide resolved
m0dB and others added 2 commits May 24, 2024 11:56
@acolombier acolombier force-pushed the feat/simplify-waveform-combobox branch from 5e12b2c to af24756 Compare May 24, 2024 11:59
@acolombier
Copy link
Contributor Author

I think we got everything in order now

Copy link
Member

@Swiftb0y Swiftb0y left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Any1 else wanting to take a look (just in case I missed any grave errors, not for trivial stuff like I nitpicked in this round)?

src/preferences/upgrade.cpp Outdated Show resolved Hide resolved
src/preferences/upgrade.cpp Outdated Show resolved Hide resolved
src/preferences/upgrade.cpp Show resolved Hide resolved
src/preferences/upgrade.cpp Show resolved Hide resolved
@ronso0
Copy link
Member

ronso0 commented May 25, 2024

I didn't look into the ui file in detail, just want to share a few thoughts on the UI/UX:

  • I think it'd look better if Acceleration, Stereo and High Details are in one row
  • the label "This function requires ..." should only be shown if waveforms are enabled and acceleration is disabled
  • for consistency, all waveform-related options should be greyed out (end-of-track, play position, ...)
  • while working on allow changing the waveform overview type without reloading the skin #13273 I noticed we should move the overview options into their own section, because if we do disable all waveform options, the overview options are in between those disabled options which is a bit confusing IMO
    Maybe move the Overview options to the top so they're more discoverable than below the Waveform option?
    Maybe use QGroupBoxes for waveform and overview?

I'll check if I can provide some demo commits tomorrow.

@acolombier
Copy link
Contributor Author

Thanks for your input @ronso0
Are you okay with this being improved in a follow up PR?

@ronso0
Copy link
Member

ronso0 commented May 25, 2024

Sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants