Zhiyi Zhang : wined3d: Store a struct wined3d pointer in struct wined3d_swapchain_state.
Alexandre Julliard
julliard at winehq.org
Thu Oct 29 16:32:09 CDT 2020
Module: wine
Branch: master
Commit: c9e2deac39924473ac538ee22a2a0c0dbe3bad85
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c9e2deac39924473ac538ee22a2a0c0dbe3bad85
Author: Zhiyi Zhang <zzhang at 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 at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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,
More information about the wine-cvs
mailing list