[3/5] imm32: Create default IME window when creating a new window.

Aric Stewart aric at codeweavers.com
Thu Mar 3 11:00:09 CST 2016


Ok I have been chatting with Alexandre and also dusting off my own memories here.

The problem with hooks is that they create serious performance issues. Alexandre will likely not accept any patch that involves hooks.

What is likely a better approach is to move some of this code into user32. I know that on windows there is very close integration between imm32 and user32, beyond what we have in wine.

I am thinking maybe we need the default IME window creation in user32 and have it stored somewhere, like in the TEB, where it can be in existing thread data.

I was brainstorming with Alexandre so that I could give you some guidance, and he said that the user_thread_info block (user32/user_private.h stored in the TEB->Win32ClientInfo) would be acceptable, but the user_thread_info is private to user32, so there would have to be a way to get that to that data so that ImmGetDefaultIMEWnd can find that window.

I dont have the answers for that yet, but it is a starting point to try to figure this out.

I know when I implemented the IMMThreadData stuff in imm32 it was all mostly thing I felt like really belonged in the TEB, but I was not in a place where I needed to really advocated for that change.

There are other Reserved blocks in the TEB that you could argue imm32 could take over if you feel that to be better than the user_thread_info structure.

Unfortunately it sounds like hooks will not be acceptable for us.

-aric


On 3/2/16 7:54 AM, Akihiro Sagawa wrote:
> Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
> ---
>   dlls/imm32/imm.c         | 56 +++++++++++++++++++++++++++++++++++++++++++++++-
>   dlls/imm32/tests/imm32.c |  4 ++--
>   2 files changed, 57 insertions(+), 3 deletions(-)
> 
> 
> 
> 



More information about the wine-devel mailing list