You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thank you for your very useful component. Because IME and TSF's informations is very rare.
It's hard to develop my original text input UI system if this component didn't exist.
I'm using ImeSharp as my original customized verison.
But I have a problem.
System.AccessViolationException happened when end composition timing.
Happened here:
TextStore.cs
public Result RequestLock(TsfSharp.TsLfFlags dwLockFlags)
hrSession = _sink.OnLockGranted(dwLockFlags); // <<HERE
On ImeSharp.Demo the problem doesn't happened.
So I researched and found a bug(?).
TextStore.cs
public void OnEndComposition(ITfCompositionView view)
view.Dispose()
foreach(var item in _compViews)
item.Dispose();
_comvVIews.Clear();
In CTSFEditWnd::OnStartComposition() calling ITfCompositionView.AddRef()
In CTSFEditWnd::OnEndComposition() calling ITfCompositionView.Release()
COM object's reference counter are incremented and decremented.
But in TextStore.cs, No view.AddRef() calling but calling view.Dispose().
And also _compViews item's Dispose() called (I think it same ITfCompositionView object).
Dispose() calls Release() internally, so the reference counter unmatched.
I fixed it like this:
Adding OnStartComposition()
view.AddRef()
And remove OnUpdateComposition()
_compViews.Add(view)
And replace OnEndComposition()
_compViews.Remove(view)
view.Dispose()
I don't know well sharpgen's COM convert system.
So I might be misunderstanding the problem.
The text was updated successfully, but these errors were encountered:
Thank you for your very useful component. Because IME and TSF's informations is very rare.
It's hard to develop my original text input UI system if this component didn't exist.
I'm using ImeSharp as my original customized verison.
But I have a problem.
System.AccessViolationException happened when end composition timing.
Happened here:
TextStore.cs
On ImeSharp.Demo the problem doesn't happened.
So I researched and found a bug(?).
TextStore.cs
On windows TSF sample
https://github.com/microsoft/Windows-classic-samples/blob/7af17c73750469ed2b5732a49e5cb26cbb716094/Samples/Win7Samples/winui/tsf/tsfapp/context.cpp
In CTSFEditWnd::OnStartComposition() calling ITfCompositionView.AddRef()
In CTSFEditWnd::OnEndComposition() calling ITfCompositionView.Release()
COM object's reference counter are incremented and decremented.
But in TextStore.cs, No view.AddRef() calling but calling view.Dispose().
And also _compViews item's Dispose() called (I think it same ITfCompositionView object).
Dispose() calls Release() internally, so the reference counter unmatched.
I fixed it like this:
Adding OnStartComposition()
And remove OnUpdateComposition()
And replace OnEndComposition()
I don't know well sharpgen's COM convert system.
So I might be misunderstanding the problem.
The text was updated successfully, but these errors were encountered: