[Wine] Re: [Phantasy Star Online: Blue Burst] gurus & advice needed

dk wineforum-user at winehq.org
Tue Oct 4 17:14:35 CDT 2011


Apologies for not posting sooner - I've been very busy.

Rosanne approved version 1.24.3; it's now live in the appdb. I tried to consolidate the information specific to that version and mirrored it here: 

https://sites.google.com/site/winepso/

I'll try to update that for 1.25.10 (Tethealla) this weekend. 


Cloudef wrote:
> ..it seems like the typing bug is fixed on latest Wine. At least I could create character just fine..


Hmm, interesting. I submitted test data for 1.3.29 and they're both still broken for me. 1.24.3 did (very briefly) type but as soon as I pressed the Esc key it stopped working. Every attempt since then has been broken.

As far as recent updates I didn't notice anything in the changelogs and the most recent changes to imm32 were from July of last year. (if I'm reading that right - please take a look)

imm32 history:
http://wine.git.sourceforge.net/git/gitweb.cgi?p=wine/wine;a=history;f=dlls/imm32/imm.c;h=28f482c2dad46a2d6ae8f6e69caeb5c0bd148a54;hb=HEAD

I also looked at imm.c from the 1.3.29 source and there doesn't appear to be any changes.

Here are the functions that appear repeatedly in my log when I run the game and test for bug #27293:

Code:
..
fixme:imm:ImmDisableIME (0): stub
fixme:imm:ImeHandleNotify WM_IME_NOTIFY:IMN_SETCOMPOSITIONWINDOW
fixme:imm:NotifyIME IMC_SETCANDIDATEPOS
fixme:imm:ImeHandleNotify WM_IME_NOTIFY:IMN_SETCANDIDATEPOS
fixme:imm:ImmGetDescriptionW (0x4090409, 0xacf3e0, 255): semi stub
fixme:imm:ImmGetOpenStatus (0x13ba80): semi-stub
..



and the related code from imm.c:

ImmDisableIME (also affects bugs #22805, #17302, #12975, #5163, #27716, #17667)

Code:
BOOL WINAPI ImmDisableIME(DWORD idThread)
{
    FIXME("(%d): stub\n", idThread);
    return TRUE;
}



ImmSetCompositionWindow

Code:
BOOL WINAPI ImmSetCompositionWindow(
  HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
{
    BOOL reshow = FALSE;
    InputContextData *data = hIMC;

    TRACE("(%p, %p)\n", hIMC, lpCompForm);
    TRACE("\t%x, (%i,%i), (%i,%i - %i,%i)\n",lpCompForm->dwStyle,
          lpCompForm->ptCurrentPos.x, lpCompForm->ptCurrentPos.y, lpCompForm->rcArea.top,
          lpCompForm->rcArea.left, lpCompForm->rcArea.bottom, lpCompForm->rcArea.right);

    if (!data)
        return FALSE;

    data->IMC.cfCompForm = *lpCompForm;

    if (IsWindowVisible(IMM_GetThreadData()->hwndDefault))
    {
        reshow = TRUE;
        ShowWindow(IMM_GetThreadData()->hwndDefault,SW_HIDE);
    }

    /* FIXME: this is a partial stub */

    if (reshow)
        ShowWindow(IMM_GetThreadData()->hwndDefault,SW_SHOWNOACTIVATE);

    ImmInternalSendIMENotify(data, IMN_SETCOMPOSITIONWINDOW, 0);
    return TRUE;
}



ImmSetCandidateWindow

Code:
BOOL WINAPI ImmSetCandidateWindow(
  HIMC hIMC, LPCANDIDATEFORM lpCandidate)
{
    InputContextData *data = hIMC;

    TRACE("(%p, %p)\n", hIMC, lpCandidate);

    if (!data || !lpCandidate)
        return FALSE;

    TRACE("\t%x, %x, (%i,%i), (%i,%i - %i,%i)\n",
            lpCandidate->dwIndex, lpCandidate->dwStyle,
            lpCandidate->ptCurrentPos.x, lpCandidate->ptCurrentPos.y,
            lpCandidate->rcArea.top, lpCandidate->rcArea.left,
            lpCandidate->rcArea.bottom, lpCandidate->rcArea.right);

    if ( lpCandidate->dwIndex >= (sizeof(data->IMC.cfCandForm) / sizeof(CANDIDATEFORM)) )
        return FALSE;

    data->IMC.cfCandForm[lpCandidate->dwIndex] = *lpCandidate;
    ImmNotifyIME(hIMC, NI_CONTEXTUPDATED, 0, IMC_SETCANDIDATEPOS);
    ImmInternalSendIMENotify(data, IMN_SETCANDIDATEPOS, 1 << lpCandidate->dwIndex);

    return TRUE;
}



ImmGetDescriptionW (also affects bug #28423)

Code:
UINT WINAPI ImmGetDescriptionW(HKL hKL, LPWSTR lpszDescription, UINT uBufLen)
{
  static const WCHAR name[] = { 'W','i','n','e',' ','X','I','M',0 };

  FIXME("(%p, %p, %d): semi stub\n", hKL, lpszDescription, uBufLen);

  if (!uBufLen) return lstrlenW( name );
  lstrcpynW( lpszDescription, name, uBufLen );
  return lstrlenW( lpszDescription );
}



ImmGetOpenStatus (also affects bugs #4781, #19593, #18415, #15963, #14900, #10636, #26744, #23696, #16035)

Code:
BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
{
  InputContextData *data = hIMC;
  static int i;

    if (!data)
        return FALSE;

    TRACE("(%p): semi-stub\n", hIMC);

    if (!i++)
      FIXME("(%p): semi-stub\n", hIMC);

  return data->IMC.fOpen;
}



ImeHandleNotify (also affects bugs #25786, #8034, #19593) 
I'm not sure what's going on with this one - I'm not sure where that fixme is printed from. 

Those related bugs are only applications that people took the time to submit bugs for. A quick Google search lists a number of other applications that aren't currently in bugzilla.

Cloudef, are you able to Esc out of the character customization screen, re-enter and find that typing still works? Are you using any overrides? Anything else installed on the same prefix? Any registry tweaks? What distro are you using? Maybe there's something else in your environment that allows it to fail gracefully - we could at least list it as a workaround if we can identify what it is.







More information about the wine-users mailing list