Module: wine Branch: master Commit: c9e2deac39924473ac538ee22a2a0c0dbe3bad85 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c9e2deac39924473ac538ee22...
Author: Zhiyi Zhang zzhang@codeweavers.com Date: Wed Oct 28 14:38:44 2020 +0800
wined3d: Store a struct wined3d pointer in struct wined3d_swapchain_state.
Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/swapchain.c | 3 ++- dlls/wined3d/wined3d_main.c | 22 +++++++++------------- dlls/wined3d/wined3d_private.h | 4 ++-- 3 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index aa56634f3f3..847907c6d4c 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -1319,11 +1319,12 @@ static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *stat }
GetWindowRect(window, &state->original_window_rect); + state->wined3d = wined3d; state->device_window = window; state->parent = parent;
if (desc->flags & WINED3D_SWAPCHAIN_REGISTER_STATE) - wined3d_swapchain_state_register(state, wined3d); + wined3d_swapchain_state_register(state);
return hr; } diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index 7e96f874682..e1ed86e80ed 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -59,7 +59,6 @@ struct wined3d_window_hook struct wined3d_registered_swapchain_state { struct wined3d_swapchain_state *state; - struct wined3d *wined3d; DWORD thread_id; };
@@ -574,8 +573,8 @@ static LRESULT CALLBACK wined3d_wndproc(HWND window, UINT message, WPARAM wparam
static LRESULT CALLBACK wined3d_hook_proc(int code, WPARAM wparam, LPARAM lparam) { - struct wined3d_registered_swapchain_state *registered_state; struct wined3d_swapchain_desc swapchain_desc; + struct wined3d_swapchain_state *state; struct wined3d_wndproc *entry; struct wined3d_output *output; MSG *msg = (MSG *)lparam; @@ -589,26 +588,25 @@ static LRESULT CALLBACK wined3d_hook_proc(int code, WPARAM wparam, LPARAM lparam
for (i = 0; i < swapchain_state_table.state_count; ++i) { - registered_state = &swapchain_state_table.states[i]; + state = swapchain_state_table.states[i].state;
- if (registered_state->state->device_window != msg->hwnd) + if (state->device_window != msg->hwnd) continue;
- if ((entry = wined3d_find_wndproc(msg->hwnd, registered_state->wined3d)) + if ((entry = wined3d_find_wndproc(msg->hwnd, state->wined3d)) && (entry->flags & (WINED3D_REGISTER_WINDOW_NO_WINDOW_CHANGES | WINED3D_REGISTER_WINDOW_NO_ALT_ENTER))) continue;
- swapchain_desc = registered_state->state->desc; + swapchain_desc = state->desc; swapchain_desc.windowed = !swapchain_desc.windowed; - if (!(output = wined3d_get_output_from_window(registered_state->wined3d, - registered_state->state->device_window))) + if (!(output = wined3d_get_output_from_window(state->wined3d, state->device_window))) { - ERR("Failed to get output from window %p.\n", registered_state->state->device_window); + ERR("Failed to get output from window %p.\n", state->device_window); break; } swapchain_desc.output = output; - wined3d_swapchain_state_set_fullscreen(registered_state->state, &swapchain_desc, NULL); + wined3d_swapchain_state_set_fullscreen(state, &swapchain_desc, NULL);
wined3d_wndproc_mutex_unlock();
@@ -774,8 +772,7 @@ static struct wined3d_window_hook *wined3d_find_hook(DWORD thread_id) return NULL; }
-void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state, - struct wined3d *wined3d) +void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state) { struct wined3d_registered_swapchain_state *state_entry; struct wined3d_window_hook *hook; @@ -791,7 +788,6 @@ void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state,
state_entry = &swapchain_state_table.states[swapchain_state_table.state_count++]; state_entry->state = state; - state_entry->wined3d = wined3d; state_entry->thread_id = GetWindowThreadProcessId(state->device_window, NULL);
if ((hook = wined3d_find_hook(state_entry->thread_id))) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 6d7dcbc91dd..15380f5ac81 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -5072,6 +5072,7 @@ void wined3d_unordered_access_view_vk_update(struct wined3d_unordered_access_vie
struct wined3d_swapchain_state { + struct wined3d *wined3d; struct wined3d_swapchain_desc desc; struct wined3d_swapchain_state_parent *parent;
@@ -5085,8 +5086,7 @@ struct wined3d_swapchain_state };
void wined3d_swapchain_state_cleanup(struct wined3d_swapchain_state *state) DECLSPEC_HIDDEN; -void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state, - struct wined3d *wined3d) DECLSPEC_HIDDEN; +void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state) DECLSPEC_HIDDEN; void wined3d_swapchain_state_restore_from_fullscreen(struct wined3d_swapchain_state *state, HWND window, const RECT *window_rect) DECLSPEC_HIDDEN; HRESULT wined3d_swapchain_state_setup_fullscreen(struct wined3d_swapchain_state *state,