cjcliffe / CubicSDR

Cross-Platform Software-Defined Radio Application
http://www.cubicsdr.com
GNU General Public License v2.0
2.02k stars 249 forks source link

no window refresh/update with wxWidgets-3.1.5 (Gtk+-3 backend) #886

Closed stefantalpalaru closed 3 years ago

stefantalpalaru commented 3 years ago

screenshot_2021-04-16_19:04:30

vsonnier commented 3 years ago

Either your wxWidgets was compiled without OpenGL support, or you don't have proper OpenGL. Both are mandatory. Have a look at the Wiki.

stefantalpalaru commented 3 years ago

Either your wxWidgets was compiled without OpenGL support, or you don't have proper OpenGL.

$ lddtree /usr/bin/CubicSDR
...
    libwx_gtk3u_gl-3.1-gtk3.so.5 => /usr/lib64/libwx_gtk3u_gl-3.1-gtk3.so.5
...
        libEGL.so.1 => /usr/lib64/libEGL.so.1
            libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0
...
    libGL.so.1 => /usr/lib64/libGL.so.1
        libGLX.so.0 => /usr/lib64/libGLX.so.0
stefantalpalaru commented 3 years ago

Configuring wxWidgets-3.1.5 with --disable-glcanvasegl fixed the problem.

Dantali0n commented 3 years ago

Configuring wxWidgets-3.1.5 with --disable-glcanvasegl fixed the problem.

Do you think this should be added to the wiki or is this some edge case due to your Graphics cards its egl implementation being funky.

Perhaps you could indicate the hardware and accompanying driver being used.

stefantalpalaru commented 3 years ago

Do you think this should be added to the wiki or is this some edge case due to your Graphics cards its egl implementation being funky.

I think it's a matter of the CubicSDR GLX context competing with a wxWidgets EGL context. I'm no expert, but from a summary reading it looks like you can't mix the two in the same application.

Sure, you can document that in the wiki for people building their own wxWidgets, but when 3.1.5 hits distro package repositories, with EGL built in by default, the problem is back.

A long-term solution would be to allow choosing between GLX and EGL in CubicSDR, at configuration time.

vsonnier commented 3 years ago

I think it's a matter of the CubicSDR GLX context competing with a wxWidgets EGL context. I'm no expert, but from a summary reading it looks like you can't mix the two in the same application.

Me neither, I just heard of EGL here... Since CubicSDR access OpenGL "raw" in the GL wxGL context, it then makes sense of disable EGL in wxWigets as @stefantalpalaru found because Cubic use wxWidgets statically so it is part of its DIY recipie.

I've changed the Wiki accordingly for both Linux, MacOS, and refered 3.1.5 as the right version to use.

Thanks @stefantalpalaru for your contribution ! Thanks @Dantali0n for your support as well.

vsonnier commented 3 years ago

I've updated the Travis scripts as well, referencing 3.1.5 with @stefantalpalaru fix.

vsonnier commented 3 years ago

I think the issue can be closed now.