kmatheussen / radium

A graphical music editor. A next generation tracker.
http://users.notam02.no/~kjetism/radium/
GNU General Public License v2.0
835 stars 36 forks source link

problems with multiple monitors #1413

Closed ghost closed 6 months ago

ghost commented 6 months ago

i have an secondary monitor to my left, and when i start radium, it appears there instead of on my primary laptop monitor on my right

if i move the main window to the main monitor, the interface is laggy, particularly the editor scrolling. it isn't laggy if it stays in the other monitor, and it stays laggy if i move it from there and back

i'm using self-built radium from the most recent git commit on pop!_os 22.04. i imagine this would happen if i used the official binary

kmatheussen commented 6 months ago

I don't know much about these things. These things are controlled by Qt and the windows manager. I have to think about these things. One question, are you having different refresh rates on the two monitors? I guess that might explain the laggyness, caused by using wrong refresh rate when moving the main window to a different display.

ghost commented 6 months ago

changing my refresh rate to match like you suggested worked for me. and i'll live with it opening on the secondary monitor

hopefully you'll figure out the root cause

kmatheussen commented 6 months ago

Well, this is the root cause. To fix this, the program need to support reopening the editor, and that code is really bad caused by all kinds of hacks to make opengl perform better on the various platforms, and I don't want to make that code even harder to read. I guess the solution here would be to make it possible to configure which display the main window should open on.

kmatheussen commented 6 months ago

Can you try something? In line 2429 (or thereabout) in OpenGL/Widget.cpp, can you hardcode the the refresh rate to the monitor you want to show the main window on? E.g. if the refresh rate is 1260, change the code to look like this:

      ...
      double refresh_rate = get_refresh_rate();
      refresh_rate = 120.0;
      if (refresh_rate >= 0.5) {
      ...

Maybe that'll work.

kmatheussen commented 6 months ago

(I meant to write "if the refresh rate is 120")

kmatheussen commented 6 months ago

(And don't comment out the call to "get_refresh_rate()"!)

ghost commented 6 months ago

i hardcoded that variable to my monitor's default refresh rate (144.03) and i don't notice any more lagging at that rate

kmatheussen commented 6 months ago

So that fixed it? In case, maybe it's possible to fix generally then.

On Sun, Dec 24, 2023 at 11:07 AM acheney @.***> wrote:

i hardcoded that variable to my monitor's default refresh rate (144.03) and i don't notice any more lagging at that rate

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

kmatheussen commented 6 months ago

Can you try to run the program with the latest commit https://github.com/kmatheussen/radium/commit/3a1ed4d6bd60fb7b39ea755653e9bd557585ed9b and see if this fixes the problem without using any of the hacks suggested in this thread?

ghost commented 6 months ago

that commit seems to be working. i've tested moving the main window to both monitors

if more testing needs to be done let me know

kmatheussen commented 6 months ago

Good! I'm pretty sure it's fixed then. Can you check that correct "Monitor refresh rate" values is printed in "help -> about" after moving the main window between the two monitors?

ghost commented 6 months ago

yes, the correct rate is listed! awesome work!

kmatheussen commented 6 months ago

Thank you.

kmatheussen commented 6 months ago

Thanks for reporting.