mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-06 19:40:10 +02:00
Revert SWP_NOCOPYBITS removal from 9fd6603ce3
This was added on the request of Aurora FM's developer because they use thousands of child windows for rendering, but this causes unnecessary flickering in some situations and it should no longer be as needed now that `fix_local_coordinates()` is only called once when moving windows around.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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<LONG_PTR>(reinterpret_cast<size_t>(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<WINDOWPOS*>(lParam);
|
||||
info->flags |= SWP_DEFERERASE;
|
||||
info->flags |= SWP_DEFERERASE | SWP_NOCOPYBITS;
|
||||
} break;
|
||||
case WM_TIMER: {
|
||||
auto editor = reinterpret_cast<Editor*>(
|
||||
|
||||
Reference in New Issue
Block a user