On Thu, 2 Jul 2020 at 17:14, Gabriel Ivăncescu gabrielopcode@gmail.com wrote:
@@ -416,6 +416,7 @@ static HRESULT STDMETHODCALLTYPE DECLSPEC_HOTPATCH d3d11_swapchain_SetFullscreen wined3d_swapchain_get_desc(swapchain->wined3d_swapchain, &swapchain_desc); swapchain_desc.output = dxgi_output->wined3d_output; swapchain_desc.windowed = !fullscreen;
- swapchain_desc.flags |= WINED3D_SWAPCHAIN_TOPMOST_RESTORE; hr = wined3d_swapchain_state_set_fullscreen(state, &swapchain_desc, NULL); wined3d_mutex_unlock(); if (FAILED(hr))
@@ -2243,6 +2244,7 @@ static HRESULT STDMETHODCALLTYPE DECLSPEC_HOTPATCH d3d12_swapchain_SetFullscreen goto fail; wined3d_mutex_lock(); wined3d_desc.windowed = !fullscreen;
- wined3d_desc.flags |= WINED3D_SWAPCHAIN_TOPMOST_RESTORE; hr = wined3d_swapchain_state_set_fullscreen(swapchain->state, &wined3d_desc, NULL); wined3d_mutex_unlock(); if (FAILED(hr))
Any reason to not add this to DXGI_WINED3D_SWAPCHAIN_FLAGS?
- /* DXGI restores WS_EX_TOPMOST, unlike Direct3D 9 and below */
- if ((state->desc.flags & WINED3D_SWAPCHAIN_TOPMOST_RESTORE) && !(state->exstyle & WS_EX_TOPMOST))
window_pos_flags &= ~SWP_NOZORDER;
Wined3d doesn't particularly care about DXGI or d3d9. If you wanted to add a comment to this effect you'd add it to the place that sets the flag, but the flag also seems straightforward enough on its own.
@@ -2243,6 +2247,8 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st RECT *window_rect = NULL; if (state->desc.flags & WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT) window_rect = &state->original_window_rect;
if (swapchain_desc->flags & WINED3D_SWAPCHAIN_TOPMOST_RESTORE)
state->desc.flags |= WINED3D_SWAPCHAIN_TOPMOST_RESTORE;
We currently ignore flag changes in wined3d_swapchain_state_set_fullscreen(). That could be changed, but then you'd have to handle other flags potentially changing as well, and I don't think there's a need.
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 346d1d0..cee46d3 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -905,6 +905,7 @@ enum wined3d_shader_type #define WINED3D_SWAPCHAIN_GDI_COMPATIBLE 0x00008000u #define WINED3D_SWAPCHAIN_IMPLICIT 0x00010000u #define WINED3D_SWAPCHAIN_HOOK 0x00020000u +#define WINED3D_SWAPCHAIN_TOPMOST_RESTORE 0x00040000u
Ideally WINED3D_SWAPCHAIN_TOPMOST_RESTORE would simply be merged with WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT, but the naming should at least be consistent.