diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d1e1955..f72bad43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,11 @@ Versioning](https://semver.org/spec/v2.0.0.html). to be released before informing Wine about the window's new screen coordinates. This prevents constant flickering when dragging plugin windows around with some plugin and window manager combinations. +- Since the above change limits the number of times a plugin GUI potentially has + to redraw when dragging the window around to once, the workaround added to + yabridge 5.0.2 for _Audio Nebula Aurora FM_ implementing drawing in a very + suboptimal way has be reverted. This removes flickering when resizing for a + lot of plugin GUIs again. - Yabridge now preemptively unsets the `WAYLAND_DISPLAY` environment variable when launching Wine. Upstream Wine currently does not yet have a Wayland driver, but future versions may. When that happens yabridge's X11 window diff --git a/src/wine-host/editor.cpp b/src/wine-host/editor.cpp index 5120d8fc..9b152e7f 100644 --- a/src/wine-host/editor.cpp +++ b/src/wine-host/editor.cpp @@ -448,7 +448,7 @@ void Editor::resize(uint16_t width, uint16_t height) { }); SetWindowPos(win32_window_.handle_, nullptr, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOREDRAW | SWP_NOACTIVATE | - SWP_NOOWNERZORDER | SWP_DEFERERASE); + SWP_NOOWNERZORDER | SWP_DEFERERASE | SWP_NOCOPYBITS); // Make sure that after the resize the screen coordinates always match // up properly. Without this Soundtoys Crystallizer might appear choppy @@ -1205,7 +1205,7 @@ LRESULT CALLBACK window_proc(HWND handle, handle, GWLP_USERDATA, static_cast(reinterpret_cast(editor))); } break; - // Setting `SWP_DEFERERASE` somewhat reduces flickering on + // Setting `SWP_NOCOPYBITS` somewhat reduces flickering on // `fix_local_coordinates()` calls with plugins that don't do double // buffering since it speeds up the redrawing process. case WM_WINDOWPOSCHANGING: { @@ -1216,7 +1216,7 @@ LRESULT CALLBACK window_proc(HWND handle, } WINDOWPOS* info = reinterpret_cast(lParam); - info->flags |= SWP_DEFERERASE; + info->flags |= SWP_DEFERERASE | SWP_NOCOPYBITS; } break; case WM_TIMER: { auto editor = reinterpret_cast(