http://bugs.winehq.org/show_bug.cgi?id=5946
--- Comment #14 from Niels Martin Hansen <nielsm(a)indvikleren.dk> 2009-01-24 10:58:42 ---
I don't know how common this technique is for getting text paths. (The more
"sanctioned" method I believe should be to repeatedly call GetGlyphOutlineW().)
But it can affect various kinds of graphical applications that need to draw
text in more advanced ways than GDI is able of.
I have looked a bit further into the Wine GDI32 source and found some things I
think look strange.
First of all, Wine's GetPath() will return -1 on error. Microsoft doesn't seem
to document the actual return on error, but it seems that TextSub expects a 0
return to signal error. I don't think this is the cause however.
Looking further, it appears that PATH_ExtTextOut() will abort if
GetGlyphOutlineW() returns zero. I don't know if this applies to Wine, but in
my own experiments, on Windows GetGlyphOutlineW() will return zero for space
characters. This might be the cause of the bug. However
WineEngGetGlyphOutline() seems to return GDI_ERROR (which is (~0d) ie.
non-zero) on error. I believe it may also return 0 if the glyph requires an
empty path to draw, such as I would expect space characters to do.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=5946
--- Comment #13 from Dan Kegel <dank(a)kegel.com> 2009-01-24 10:42:19 ---
Thanks for the info. Can you give us an idea how widespread
this problem is? i.e. what apps (or web sites) are affected?
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=8357
--- Comment #41 from Stephen Johnston <stephen.johnston(a)talktalk.net> 2009-01-24 10:21:35 ---
Short update on working status.
Occassionally crashed upon the "Enter World" being clicked howeve a wineboot
and try again works then.
Seems to freeze and again occassionally crash when in 1152x864 32bit mode and
also 1280x1024 32bit , however, the 1024x768 is much more stable.
hope this helps
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=5946
Niels Martin Hansen <nielsm(a)indvikleren.dk> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |nielsm(a)indvikleren.dk
--- Comment #12 from Niels Martin Hansen <nielsm(a)indvikleren.dk> 2009-01-24 10:10:39 ---
I have some experience hacking the VSFilter/TextSub source, and the cause of
this bug is most likely in how Wine stores and returns TrueType text path
outlines in metafile canvases. (Sorry if I use some wrong or inconsistent
terms, I usually don't work much with Windows GDI.)
TextSub (as I believe the rendering engine in VSFilter is called) does its own
rasterisation of text outlines, to be able to add further special effects than
the regular GDI is able of. To retrieve the text outlines, it creates a
metafile canvas and draws text into that, to extract the outlines afterwards.
The relevant code is in CText::CreatePath() in
http://guliverkli.svn.sourceforge.net/viewvc/guliverkli2/src/subtitles/RTS.…
Two different algorithms are used depending on whether inter-character spacing
is non-zero. This is (part of) the cause of the workaround martino describes
working, although it probably still has to do with a problem in Wine's
implementation of metafile canvases.
In the simple case (as seen by TextSub) where all the text is drawn as a single
path, first BeginPath(hdc) is called, then TextOut(hdc, 0, 0, txt, txtlen) is
called, followed by CloseFigure(hdc) and EndPath(hdc).
After this GetPath(hdc, NULL, NULL, 0) is used to retrieve first the number of
points in the path, then memory is allocated, and finally GetPath(hdc,
mpPathPoints, mpPathTypes, mPathPoints) is used to get the actual points.
I believe it is somewhere here the problem lies. I don't have a machine myself
to test on, but either Wine returns too few points, or it returns them in an
unexpected form, and it seems to be triggered by space characters in the string
to TextOut().
Lastly the path is cleared from the canvas by AbortPath(hdc).
The case where the inter-character spacing is specified to be non-zero, the
same sequence of operations is basically performed for each widecharacter in
the text that should be rendered. The advance for each character is retrieved
with GetTextExtentPoint32W().
The points retrieved for each character in the text are then appended to a list
of all points which are used for further rasterisation. This case where each
character is treated as a separate string works fine, accordint to reports.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=8030
--- Comment #20 from Mirek Slugen <thunder.m(a)email.cz> 2009-01-24 02:54:57 ---
(In reply to comment #19)
> I can start this game using WINE version 1.1.12 with the help of Transgaming
> SwiftShader Software Direct3D Renderer.
>
> I placed swiftshader's direct3d dll d3d8.dll, d3d9.dll in the game folder and
> made them native in the winecfg and the game started flawlessly.
>
> Determination:
>
> WINE's Direct Input is OK.
> WINE's Direct Sound is OK.
> WINE's Direct3D is not OK, because it was using Transgaming ShiftShader's
> Direct3D.
>
> Now, from my experiment, what I have found when using pure WINE along native
> d3dx9* dll the actual problem is below:
>
> fixme:d3d_surface:IWineD3DVolumeImpl_LockBox (0x4b6e6a8) : pBox=(nil) stub
>
> Please consider this.
>
I can confirm this, I can start game with SwiftShader, but not with original
wine d3d dlls. Tested on the same version of wine.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=8030
MD.IMAM HOSSAIN <imamdxl8805(a)gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |imamdxl8805(a)gmail.com
--- Comment #19 from MD.IMAM HOSSAIN <imamdxl8805(a)gmail.com> 2009-01-23 21:33:56 ---
I can start this game using WINE version 1.1.12 with the help of Transgaming
SwiftShader Software Direct3D Renderer.
I placed swiftshader's direct3d dll d3d8.dll, d3d9.dll in the game folder and
made them native in the winecfg and the game started flawlessly.
Determination:
WINE's Direct Input is OK.
WINE's Direct Sound is OK.
WINE's Direct3D is not OK, because it was using Transgaming ShiftShader's
Direct3D.
Now, from my experiment, what I have found when using pure WINE along native
d3dx9* dll the actual problem is below:
fixme:d3d_surface:IWineD3DVolumeImpl_LockBox (0x4b6e6a8) : pBox=(nil) stub
Please consider this.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=8669
Jeff Zaroyko <jeffz(a)jeffz.name> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |CLOSED
--- Comment #12 from Jeff Zaroyko <jeffz(a)jeffz.name> 2009-01-23 18:43:15 ---
closing duplicate
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=7385
Jeff Zaroyko <jeffz(a)jeffz.name> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |cedric.dewijs(a)tiscali.nl
--- Comment #15 from Jeff Zaroyko <jeffz(a)jeffz.name> 2009-01-23 18:43:00 ---
*** Bug 8669 has been marked as a duplicate of this bug. ***
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=8669
Jeff Zaroyko <jeffz(a)jeffz.name> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |DUPLICATE
--- Comment #11 from Jeff Zaroyko <jeffz(a)jeffz.name> 2009-01-23 18:43:00 ---
the patch from bug 7385 fixes the msadp32 crash, marking duplicate
*** This bug has been marked as a duplicate of bug 7385 ***
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
http://bugs.winehq.org/show_bug.cgi?id=7385
--- Comment #14 from Jeff Zaroyko <jeffz(a)jeffz.name> 2009-01-23 18:18:39 ---
(In reply to comment #12)
> (In reply to comment #11)
> > I'll post a patch as soon as I can.
> >
>
> Here it is:
> http://www.winehq.org/pipermail/wine-patches/2009-January/068200.html
>
> MS Golf 3.0 (demo), Descent Freespace (demo) and Oni should work correctly now.
> I can't test Colin McRae Rally since I don't own a copy of it. Ever17 uses a
> non-standard format for voices, and built-in msadp32.acm doesn't support it for
> now.
>
Excellent job Stefano, just tested Microsoft 3D Movie Maker and Descent
Freespace - they work great with your patch.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.