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

[Windows] VST using imgui-rs and baseview changes Ableton scaling and doesn't get the right window when Windows scaling isn't set to 100% #107

Open
Fredemus opened this issue Nov 17, 2021 · 3 comments

Comments

@Fredemus
Copy link
Contributor

Fredemus commented Nov 17, 2021

Hello, I've talked about this issue on the discord before but I thought I'd raise a proper issue with my findings.
For some reason, when the Windows scaling isn't 100% (under setttings -> display -> make everything bigger), my baseview/imgui-rs VST changes the scaling in Ableton and is served a too small window.

In FL Studio, the window is also too small but at least the scaling doesn't change. Fl Studio doesn't seem to ever scale up VSTs.

A VST that causes the issue can be found here: https://github.com/Fredemus/svf_filter

Before adding the vst, windows scaling set to 125%
before adding baseview vst
After adding the vst, windows scaling set to 125%. Note that Serum and the channels in Ableton got smaller.
after adding baseview vst

Interestingly, after adding the VST, then changing scaling to 100%, then back to 125% seems to solve the issue.

Edit: Forgot to mention, this problem didn't exist before this commit: ae2f28c

@y-fujii
Copy link

y-fujii commented Oct 8, 2023

This problem also occurs on Cubase 10.5 / Windows 11.
It was confirmed with nih-plug/gain_gui_egui, which uses baseview.

@BillyDM BillyDM mentioned this issue Mar 18, 2024
27 tasks
@prokopyl
Copy link
Member

While working on #174 I found this very suspicious piece of code:

baseview/src/win/window.rs

Lines 707 to 709 in 998ced8

SetProcessDpiAwarenessContext(
winapi::shared::windef::DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE,
);

This is called on baseview window creation, but it changes the DPI awareness for the entire process, which might explain why other windows like Ableton and Serum's are affected.

@glowcoil
Copy link
Member

I doubt that's the issue, since in the parented case that call is most likely just failing (source):

You must call this API before you call any APIs that depend on the DPI awareness (including before creating any UI in your process). Once API awareness is set for an app, any future calls to this API will fail. This is true regardless of whether you set the DPI awareness in the manifest or by using this API.

Though we definitely shouldn't be calling it in the parented case anyway.

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

No branches or pull requests

4 participants