[PATCH 6/6] winemac: Store driver thread data pointer in TEB.

Jacek Caban wine at gitlab.winehq.org
Mon May 23 19:47:26 CDT 2022


From: Jacek Caban <jacek at codeweavers.com>

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
---
 dlls/winemac.drv/macdrv.h      | 4 +---
 dlls/winemac.drv/macdrv_main.c | 8 ++------
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h
index 68ab74dc56e..04a8af81c53 100644
--- a/dlls/winemac.drv/macdrv.h
+++ b/dlls/winemac.drv/macdrv.h
@@ -114,13 +114,11 @@ struct macdrv_thread_data
     WORD                        keyc2scan[128];
 };
 
-extern DWORD thread_data_tls_index DECLSPEC_HIDDEN;
-
 extern struct macdrv_thread_data *macdrv_init_thread_data(void) DECLSPEC_HIDDEN;
 
 static inline struct macdrv_thread_data *macdrv_thread_data(void)
 {
-    return TlsGetValue(thread_data_tls_index);
+    return NtUserGetThreadInfo()->driver_data;
 }
 
 
diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c
index 2f05e55cb23..8c101576e99 100644
--- a/dlls/winemac.drv/macdrv_main.c
+++ b/dlls/winemac.drv/macdrv_main.c
@@ -46,8 +46,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(macdrv);
 
 C_ASSERT(NUM_EVENT_TYPES <= sizeof(macdrv_event_mask) * 8);
 
-DWORD thread_data_tls_index = TLS_OUT_OF_INDEXES;
-
 int topmost_float_inactive = TOPMOST_FLOAT_INACTIVE_NONFULLSCREEN;
 int capture_displays_for_fullscreen = 0;
 BOOL skip_single_buffer_flushes = FALSE;
@@ -463,8 +461,6 @@ static BOOL process_attach(void)
     setup_options();
     load_strings(macdrv_module);
 
-    if ((thread_data_tls_index = TlsAlloc()) == TLS_OUT_OF_INDEXES) return FALSE;
-
     macdrv_err_on = ERR_ON(macdrv);
     if (macdrv_start_cocoa_app(GetTickCount64()))
     {
@@ -493,7 +489,7 @@ void macdrv_ThreadDetach(void)
             CFRelease(data->keyboard_layout_uchr);
         HeapFree(GetProcessHeap(), 0, data);
         /* clear data in case we get re-entered from user32 before the thread is truly dead */
-        TlsSetValue(thread_data_tls_index, NULL);
+        NtUserGetThreadInfo()->driver_data = 0;
     }
 }
 
@@ -556,7 +552,7 @@ struct macdrv_thread_data *macdrv_init_thread_data(void)
     macdrv_compute_keyboard_layout(data);
 
     set_queue_display_fd(macdrv_get_event_queue_fd(data->queue));
-    TlsSetValue(thread_data_tls_index, data);
+    NtUserGetThreadInfo()->driver_data = data;
 
     NtUserActivateKeyboardLayout(data->active_keyboard_layout, 0);
     return data;
-- 
GitLab

https://gitlab.winehq.org/wine/wine/-/merge_requests/119



More information about the wine-devel mailing list