Commit 49a013cd authored by Alexandre Julliard's avatar Alexandre Julliard

When using desktop mode attach all thread inputs together, so that

keyboard focus works properly.
parent 73fd10c8
...@@ -91,7 +91,8 @@ static DWORD CALLBACK desktop_thread( LPVOID driver_data ) ...@@ -91,7 +91,8 @@ static DWORD CALLBACK desktop_thread( LPVOID driver_data )
*/ */
void X11DRV_create_desktop_thread(void) void X11DRV_create_desktop_thread(void)
{ {
HANDLE handle = CreateThread( NULL, 0, desktop_thread, NtCurrentTeb()->driver_data, 0, NULL ); HANDLE handle = CreateThread( NULL, 0, desktop_thread, NtCurrentTeb()->driver_data,
0, &desktop_tid );
if (!handle) if (!handle)
{ {
MESSAGE( "Could not create desktop thread\n" ); MESSAGE( "Could not create desktop thread\n" );
......
...@@ -57,6 +57,7 @@ unsigned int screen_width; ...@@ -57,6 +57,7 @@ unsigned int screen_width;
unsigned int screen_height; unsigned int screen_height;
unsigned int screen_depth; unsigned int screen_depth;
Window root_window; Window root_window;
DWORD desktop_tid = 0;
int dxgrab, usedga, usexvidmode; int dxgrab, usedga, usexvidmode;
int use_take_focus = 1; int use_take_focus = 1;
int managed_mode = 1; int managed_mode = 1;
...@@ -439,6 +440,7 @@ struct x11drv_thread_data *x11drv_init_thread_data(void) ...@@ -439,6 +440,7 @@ struct x11drv_thread_data *x11drv_init_thread_data(void)
data->cursor_window = None; data->cursor_window = None;
data->last_focus = 0; data->last_focus = 0;
NtCurrentTeb()->driver_data = data; NtCurrentTeb()->driver_data = data;
if (desktop_tid) AttachThreadInput( GetCurrentThreadId(), desktop_tid, TRUE );
return data; return data;
} }
......
...@@ -353,6 +353,7 @@ inline static Display *thread_display(void) { return x11drv_thread_data()->displ ...@@ -353,6 +353,7 @@ inline static Display *thread_display(void) { return x11drv_thread_data()->displ
extern Visual *visual; extern Visual *visual;
extern Window root_window; extern Window root_window;
extern DWORD desktop_tid;
extern unsigned int screen_width; extern unsigned int screen_width;
extern unsigned int screen_height; extern unsigned int screen_height;
extern unsigned int screen_depth; extern unsigned int screen_depth;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment