[Bug 35361] Multiple Steam games crash on keypress with in-game community overlay enabled (cross-process/thread IME must be prohibited)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Apr 13 15:36:19 CDT 2014


https://bugs.winehq.org/show_bug.cgi?id=35361

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net
            Summary|Multiple Steam games crash  |Multiple Steam games crash
                   |on keypress with in-game    |on keypress with in-game
                   |community overlay enabled   |community overlay enabled
                   |                            |(cross-process/thread IME
                   |                            |must be prohibited)

--- Comment #33 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

I think MSDN is pretty clear about these types of IME limitations:

http://msdn.microsoft.com/en-us/library/dd317789%28VS.85%29.aspx

--- quote ---
Developing IME-Aware Multiple-thread Applications

The IMM includes thread identification checking that determines if a calling
thread is the creator of a specified input method context handle (HIMC type) or
window handle (HWND type). If the thread is not the creator of the handle, the
called IMM function fails and a subsequent call to GetLastError returns
ERROR_INVALID_ACCESS.

Note: The current IMM architecture does not provide a synchronization facility
for access to IMM handles.

To use thread identification checking, your applications must adhere to the
following guidelines:

* A thread should not access the input context created by another thread.
* A thread should not associate an input context with a window created by
another thread, and vice versa.
--- quote ---

This of course implies that cross-process IME is prohibited by design.
Well, at least not without resorting to more or less intrusive process/dll
injection techniques.

Basically you need to check for violations of the requirements in IME APIs and
fail subsequently:

ImmAssociateContext
ImmGetContext
...

With that part fixed, the Steam in-game community overlay works (already
tested).

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list