<?xml version="1.0" ?>
<kc>

<title>Wine Traffic</title>

<author contact="http://www.theshell.com/~vinn">Brian Vincent</author>
<issue num="301" date="12 Dec 2005 00:00:00 -0800" />
<intro> <p>This is the 301st issue of the Wine Weekly News publication.
Its main goal is to break drill bits. It also serves to inform you of what's going on around Wine. Wine is an open source implementation of the Windows API on top of X and Unix.  Think of it as a Windows compatibility layer.  Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available.   You can find more info at <a href="http://www.winehq.org">www.winehq.org</a></p> </intro>
<stats posts="163" size="437" contrib="61" multiples="35" lastweek="32">

<person posts="13" size="12" who="julliard at winehq.org (Alexandre Julliard)" />
<person posts="8" size="15" who="stefandoesinger at gmx.at (Stefan D&#246;singer)" />
<person posts="7" size="21" who="fenix at club-internet.fr (Raphael)" />
<person posts="7" size="7" who="wine-devel at kievinfo.com (Vitaliy Margolen)" />
<person posts="6" size="10" who="mike at codeweavers.com (Mike McCormack)" />
<person posts="5" size="17" who="nguyenthetoan at gmail.com (Toan T Nguyen)" />
<person posts="5" size="9" who="comargo at gmail.com (Cyril Margorin)" />
<person posts="5" size="9" who="tom at dbservice.com (Tomas Carnecky)" />
<person posts="5" size="6" who="lionel.ulmer at free.fr (Lionel Ulmer)" />
<person posts="5" size="6" who="rob at codeweavers.com (Robert Shearman)" />
<person posts="4" size="13" who="reif at earthlink.net (Robert Reif)" />
<person posts="4" size="11" who="eric.pouech at wanadoo.fr (Eric Pouech)" />
<person posts="4" size="10" who="thunderbird2k at gmx.net (Roderick Colenbrander)" />
<person posts="4" size="5" who="truiken at gmail.com (James Hawkins)" />
<person posts="4" size="5" who="ivg2 at cornell.edu (Ivan Gyurdiev)" />
<person posts="4" size="4" who="scott at open-vote.org (Scott Ritchie)" />
<person posts="3" size="20" who="christian.gmeiner at students.fh-vorarlberg.ac.at (Christian Gmeiner)" />
<person posts="3" size="9" who="wijn at wanadoo.nl (Rein Klazes)" />
<person posts="3" size="6" who="willie at zeitgeistmedia.net (Willie Sippel)" />
<person posts="3" size="5" who="billmedland at mercuryspeed.com (Bill Medland)" />
<person posts="3" size="5" who="mjung at iss.tu-darmstadt.de (Michael Jung)" />
<person posts="3" size="3" who="stefandoesinger at gmx.at (Stefan D&#246;singer)" />
<person posts="3" size="3" who="dmitry at baikal.ru (Dmitry Timoshkov)" />
<person posts="3" size="2" who="h.davies1 at physics.ox.ac.uk (Huw D M Davies)" />
<person posts="3" size="2" who="marcus at jet.franken.de (Marcus Meissner)" />
<person posts="2" size="10" who="frick at sc-networks.de (Christoph Frick)" />
<person posts="2" size="5" who="cdonline at tesco.net (Colin Wright)" />
<person posts="2" size="3" who="anime4christ at gmail.com (Aleksey)" />
<person posts="2" size="2" who="pebl at math.ku.dk (Peter Berg Larsen)" />
<person posts="2" size="2" who="jrliggett at cox.net (James Liggett)" />
<person posts="2" size="2" who="marcelotduarte at gmail.com (Marcelo Duarte)" />
<person posts="2" size="1" who="proski at gnu.org (Pavel Roskin)" />
<person posts="2" size="1" who="cihan at uq.edu.au (Cihan Altinay)" />
<person posts="2" size="1" who="dimi at lattica.com (Dimi Paun)" />
<person posts="2" size="1" who="mike at plan99.net (Mike Hearn)" />
<person posts="1" size="141" who="ossman at cendio.se (Pierre Ossman)" />
<person posts="1" size="2" who="tony.lambregts at gmail.com (Tony Lambregts)" />
<person posts="1" size="2" who="rmkml at free.fr (rmkml)" />
<person posts="1" size="2" who="Stefan.Leichter at camLine.com (Stefan Leichter)" />
<person posts="1" size="1" who="andi at rhlx01.fht-esslingen.de (Andreas Mohr)" />
<person posts="1" size="1" who="vberon at mecano.gme.usherb.ca (Vincent B&#233;ron)" />
<person posts="1" size="1" who="p.beutner at gmx.net (Peter Beutner)" />
<person posts="1" size="1" who="bon at elektron.ikp.physik.tu-darmstadt.de (Uwe Bonnes)" />
<person posts="1" size="1" who="biuro at fornetmk.com (Biuro Fornet MK)" />
<person posts="1" size="1" who="keithdunwoody at yahoo.com (Keith Dunwoody)" />
<person posts="1" size="1" who="boaz at hishome.net (Boaz Harrosh)" />
<person posts="1" size="1" who="aric.cyr at gmail.com (Aric Cyr)" />
<person posts="1" size="1" who="saulius2 at ar.fi.lt (Saulius Krasuckas)" />
<person posts="1" size="1" who="kuba at mareimbrium.org (Kuba Ober)" />
<person posts="1" size="1" who="timschmidt at gmail.com (Tim Schmidt)" />
<person posts="1" size="1" who="peter at piments.com" />
<person posts="1" size="1" who="fenix at club-internet.fr" />
<person posts="1" size="1" who="wine at eternaldusk.com (Evil)" />
<person posts="1" size="0" who="twickline at gmail.com (Tom Wickline)" />
<person posts="1" size="0" who="k04jg02 at kzoo.edu (Joseph Garvin)" />
<person posts="1" size="0" who="mailinglists at inetmx.de (mailinglists)" />
<person posts="1" size="0" who="stefan at huehner.org (Stefan Huehner)" />
<person posts="1" size="0" who="paul.vriens at xs4all.nl (Paul Vriens)" />
<person posts="1" size="0" who="curritoamores at hotmail.com (Curro Amores)" />
<person posts="1" size="0" who="Paul.Vriens at xs4all.nl (Paul Vriens)" />

</stats>
<section 
	title="News: Wine 0.9.3"
	subject="News"
	archive="http://www.winehq.com/?announce=1.107"
	posts="1"
>
<topic>News</topic>
<mention>CodeWeavers</mention>
<mention>News</mention>

<p>Wow, it seems like we've had a lot of CVS drops lately.  Perhaps
that's because we've had a lot of commits.  The latest is Wine 0.9.3
which came out on Thursday.  Alexandre highlighted the following in
the announcement email:</p>
<quote who="Alexandre Julliard"><p>
What's new in this release:
<ul>
  <li> Many marshalling fixes in rpcrt4.</li>
  <li> Various OLE improvements and fixes.</li>
  <li> Better audio driver management in winecfg.</li>
  <li> Many wininet fixes.</li>
  <li> Several Web browser improvements.</li>
  <li> More dbghelp APIs implemented.</li>
  <li> Directory objects in wineserver.</li>
  <li> Lots of bug fixes.</li></ul>

</p></quote>

<p>It seems right now we're in that interesting period where CodeWeavers
is doing infrastructure changes and laying the groundwork for even more.
In particular, we're seeing RPC additions to support Outlook 2003, which
requires wire compatible DCOM to talk to Exchange.  As we've mentioned in the 
past, the directory objects support has been added to get us toward implementing
an ntoskrnl.exe that will support loading copy protection drivers like
Safedisc.  Finally, other folks have been hard at work getting other
parts of Wine working better.</p>

<p>If CodeWeavers sticks to the roadmap they outlined
late last summer, then you can expect this kind of work to taper off in the 
coming months as they stabilize for a new release.  (Of course, that means 
Wine also gets the same fixes!)
</p>

</section>
<section
	title="Accelerating DirectDraw"
	subject="DirectDraw over Direct3D"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-December/043059.html"
	posts="18"
>
<topic>DirectX</topic>
<p>Roderick Colenbrander had an idea for speeding up Wine's DirectDraw
implementation:</p>
<quote who="Roderick Colenbrander"><p>
As you all might know 2d games tend to be slow on Wine. For a lot of games the 
main bottleneck is depth conversion which happens in cases when the depth 
requested by the game and the X desktop color are not the same.
</p><p>
As a way to speedup 2d Lionel assisted me with hacking wine's ddraw to let it 
use parts of the Direct3D backend. The final rendering is then done using 
OpenGL and the end result is that the videocard does the color conversion for 
us. The patch greatly improves the performance of 2d games which don't use 
GetDC/ReleaseDC a lot.
</p><p>
While the patch fixes the conversion bottleneck for various games it doesn't 
handle 8bit paletted which is used by games like StarCraft as OpenGL doesn't 
support this by default. The second patch which I attached as well adds 
support for this. On cards (at least all nvidia cards from geforce 1 to the 
fx) that support the opengl paletted texture extension this extension is 
used. It makes StarCraft very fast atleast on my Athlon XP2000 system with a 
GeforceFX where the game was slow before. As not all cards support paletted 
textures I emulated this using a simple fragment shader. (a 1D texture 
containing the palette is used as a lookup table)
</p><p>
The 
<a href="http://www.winehq.org/pipermail/wine-devel/attachments/20051204/ca64706a/ddraw_over_d3d-0001.patch">attached</a>
<a href="http://www.winehq.org/pipermail/wine-devel/attachments/20051204/ca64706a/paletted_texture-0001.patch">patches</a> 
are still experimental and likely contain bugs so please test them. When the 
patches are applied set 'HKCU\Software\Wine\DirectDraw\UseDDrawOverD3D' to Y 
else it won't do anything :)
</p><p>
Further note that lots of games like to use multiple threads for graphics... 
using the patch games use 'd3d' (or actually opengl) which adds more 
multithreaded d3d games :) Games like Command &amp; Conquer, Red Alert, Total 
Annihilation and lots of others became multithreaded. (they crash quite 
quickly due to some critical section in x11drv)
</p><p>
All have fun with the patches and please report any issues that appear so that 
I can fix the patches and submit them to wine-patches.</p></quote>

<p>Jesse Allen asked some questions about it:</p>
<quote who="Jesse Allen"><p>
Is Starcraft really that slow?   How does this compare with using DGA?
 I'm not too sure because its speed varies.  I've been testing
Starcraft this weekend and it has been plenty speedy.   But I do
remember when trying to play it multiplayer a few months ago and was
burned when it ran slow.  In fact it slowed *everyone* down.  Not fun.
</p><p>
This patch seems similar to glSDL where it wraps SDL's 2d API to
OpenGL. The good thing about this it can provide acceleration and not
require root like DGA.  The bad thing with this idea is that it can't
be used on older video cards or even some newer ones that lack proper
direct rendering.  Am I correct that even when just doing depth
conversions, without direct rendering it will still be slow?
</p></quote>

<p>Roderick explained in detail:</p>
<quote who="Roderick Colenbrander"><p>

The code won't work for cards without hw accelerated opengl but note that
most cards these days have opengl support. A simple Riva TNT is already
quite old but is still supported on Linux and it should do a fine job only
it can't handle the palette conversion. I haven't tested performance much
using Mesa, I could try that soon using some games but it doesn't have to be
slower than the current code as Mesa uses Xlib too in the indirect case. In
general about all cards these days have some form of opengl support (intel,
via, ati, nvidia, ..) perhaps only the latest S3 GPUs and perhaps some SIS
ones (thought some have drivers) lack support. Note that cards don't need
much functionality at all as OpenGL is only for the uploading of textures
and the rendering of them.
</p><p>
I think the patch is a reasonable solution to work around various depth
conversion problems. For sure it is the fastest way for the conversion as
the videocard basically does it for free. On my system StarCraft and the
Command &amp; Conquer series (although they crash quite quickly due to threading
issues) felt a lot faster, I think that the speed is close to that of DGA.
</p><p>
Perhaps I should clarify some misunderstandings that some people have. (I
hope I explain it correctly) Basically DirectDraw provides a mechanism to
directly access the framebuffer of the videocard. This is the fastest way to
render 2D images on the screen. Games like StarCraft, Total Annihilation,
C&amp;C and lots of others use DirectDraw in this way. Second there's another
class of games like Age Of Empires2, Heroes of Might and Magic IV and others
which mix ddraw with GDI. They for instance render a image using ddraw and
then use GetDC/ReleaseDC to get a device context so that they can draw in
the surface. (directly into the video memory)
</p><p>
In case of X direct framebuffer access is only possible through DGA but it
is insecure and has other issues. When DGA works correctly it can accelerate
games like StarCraft. Further DGA doesn't have any depth conversion issues
as it does depth switching. Without DGA the rendering operations need to go
through X. Because of limitations of X, depth conversion problems appear
when the depth of the desktop and X aren't the same.
</p><p>
For depth conversion purposes Wine's DirectDraw uses a DIB section. Basically
all pixels of an image are translated to the depth of X. This is slow and
especially for the case when the application requests 8bit paletted mode
using a 24bit desktop. In this case a color lookup needs to happen in a
palette for each pixel. The end result is then shown on the screen (if the
game is of the StarCraft type)
</p><p>
Games that use GetDC/ReleaseDC can't work using DGA. The performance in
general isn't great as lots of X calls happen. (things like conversions from
XPixmap to XImages and the way around and also depth conversions happen a
lot)
</p><p>
The patch I sent works for both classes of games though it won't help much
for the second class as GetDC/ReleaseDC stuff is slow. As explained before
the patch uploads the surface to a texture which is then rendered using
OpenGL. This is quite fast and as a bonus the videocard can do all depth
conversion for us as it isn't limited to rendering textures which are at the
same depth as X.
</p><p>
For old videocards the GL renderer won't work and the old code should work
fine (except for performance issues). You might have heard people talking
about a 'dibengine' which would let Wine do all DIB related operations in
software which would save a lot of XImage/XPixmap conversions. (conversion
is only needed for the final rendering stage) This dibengine would mainly
accelerate games that use GetDC/ReleaseDC. It won't help games like
StarCraft (much) as for those DIBs were only used for depth conversion and
the conversion algorithm stays the same (it can't be tweaked much if at
all). So there's not really a way to speedup games like StarCraft for old
videocards. Perhaps XShm might be of use but not sure how much it would
help. (think it would only be useful for GetDC/ReleaseDC games)</p>
</quote>

<p>Pretty much everyone was in favor of any patch that would improve
performance.  This method won't ever be as fast as using DGA, but it
certainly seemed to be better than what we have.
Then the question came up about how this related to Stephan D&#246;singer's
work moving Direct3D 7 over to using the WineD3D library.  Lionel Ulmer
suggested:</p>
<quote who="Lionel Ulmer"><p>


I think that to merge Roderick's and your (<i>ed note:</i> Stephan's) patch, 
the best would be to directly hook WineD3D even at the 2D level and not have 
DDraw hook DDraw's D3D which then goes into WineD3D.
</p><p>
This way we would have a unified DDraw.
</p><p>
Of course, then the problem remains of what to do with older cards :-)
</p></quote>

<p>Stephan replied:</p>
<quote who="Stephan Dosinger"><p>
I thought of the same thing, as DDraw -&gt; D3D7 -&gt; WineD3D -&gt; OpenGL is 
a quite long chain. I abandoned it as too much work at first, but it's surely 
worth considering.
</p><p>
How about moving the current 2D code to WineD3D, and making DDraw running over 
WineD3D in any case. Then WineD3D could decide whether to use plain X11, DGA 
or OpenGL for 2D rendering. :)
</p><p>
Maybe we should have a close look at the details of such a thing. I do not 
really recommend a ad-hoc attempt, as d3d7-&gt;WineD3D was nearly too much.
</p></quote>

<p>Lionel liked the idea:</p>
<quote who="Lionel Ulmer"><p>
That basically bows down to have WineD3D completely replace the 'HAL'
architecture which was introduced by the TG merge.
</p><p>
Which is kinda an idea that I like :-)
</p><p>
Well, we can first stabilize D3D7 =&gt; WineD3D (which will already be quite a
lot of work to first do and then polish) and then see if we move the 2D part
too.
</p><p>
And then we will need to rename it to something else ... if not merge it
integrally into the X11DRV so that other DLLs (like the new Vista ones :-) )
would be able to do 3D accelerations :-)</p></quote>

<p>Then, as this issue was being wrapped up, Stefan sent an email with some
ideas about how to proceed and asked for feedback about it:</p>
<quote who="Stefan Dosinger"><p>
In the past weeks, I've worked on a re-write of the Direct3D7 implementation
with WineD3D. Well, I've managed to get some games running, but I have also
encountered a few problems. Before I continue with this, I'd like to ask for
your opinions.
</p><p>
I have uploaded a patch to 
<a href="http://doesi.gmxhome.de/d3d7.patch.bz2">http://doesi.gmxhome.de/d3d7.patch.bz2</a>, 
it's a diff
against Wine CVS from December, 11th 2005. It's not really meant to be used,
but rather to have something to look at.
I don't know how long I can keep the patch there, because I am limited in
space. I've sent the patch to Oliver some days ago to upload it to his
sourceforge website, it will be available there when he uploads it.
</p><p>
So what's the point of this mail? While a D3D7-&gt;WineD3D wrapping can be done
by wrapping D3D7 only and leave DirectDraw in ddraw.dll, it has a few ugly
drawbacks:
<ul>
<li> Device initialization: In D3D7, the first step is to create a IDirectDraw
Device, set up the device, create a surface and then create a Direct3D
Device. When creating the WineD3DDevice in the last step, I have to do some
ugly things to wrap the already existing Surface to a newly created
WineD3DSurface. The same applies in reverse order for the device removal. I
also don't know what to do if a game changes the screen setup after D3DDevice
creation.</li>

<li> Surfaces: In D3D7 surfaces are children of IDirectDraw, while in WineD3D
they are children of WineD3DDevice. Because the D3D7Device can be created and
destroyed without modifying surfaces, I have to manage the surface's
properties and memory areas for both DirectDraw and WineD3D. Overrides for
the Lock() and Unlock() functions are used to access the WineD3D surface if
it exists.</li></ul>
</p><p>
I think that everything would be much cleaner if the DirectDraw functionality
was also moved to WineD3D. My suggestion is the following:
<ul>
<li> WineD3D would be initialised in the D3D7 way, using a new interface
WineDDrawDevice. D3D8 and D3D9 could easily manage this in their create
functions</li>

<li> Surfaces are created with WineDDrawDevice, and they survive the release of
WineD3DDevice. This makes surface creation easier for D3D7, and it's easy to
adopt it for D3D9 and D3D8.</li>

<li> The IWineD3DSurface interface gets additional functionality for DirectDraw
operations. I'd suggest 3 versions of the 2D functions: One based on plain
X11(for compatibility) calls, one that uses DGA(speed without 3D
acceleration), and one that uses OpenGL(For fast rendering without /dev/mem
access). For DXVersion > 7 the OpenGL version is used, and for DX7 it can be
decided when the primary surface is created.</li>
</ul></p><p>
What's the drawback? First, it's much more work, and it's a really invasive
change to WineD3D, which becomes more complex. Because of this I'd like to
know your opinion before I spend a lot of time for this.
</p></quote>

</section>

<section
	title="Git Scripts"
	subject="git patch to gmail draft script"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-December/043096.html"
	posts="3"
>
<topic>Utilities</topic>
<mention>cvs</mention>

<p>
James Hawkins put together a small script to hopefully help folks using
Wine's new git repository make patches to send with Google's Gmail:</p>
<quote who="James Hawkins"><p>
I've hacked up a little script that takes your committed git changes
and puts a draft in your gmail draft folder for each commit that
contains a changelog and the attached diff.  To use the script, make
sure you have python installed.  You'll also need to change the
variables at the top of the script to match your specifics.  The
script is pretty simple, so if you don't like the format of the email
it wouldn't be hard to change.  The process goes like so:
<ol>
<li> make your commits, but when you're writing the changelog entry for
the commit, make sure to put all the changes you would have in the
Changelog section of the email ie for one of my recent patches, the
commit message was,
<ul>
<li> Use DelNode itself for the directory recursion.</li>
<li> Handle the dwFlags parameter.</li>
<li> Factor out file creation and deletion.</li>
<li> Add test cases for DelNode and make them pass.</li>
</ul>
you can use asterisks if you like or not, it won't affect the script.
</li>
<li> ./makedraft.py</li>
<li> the script calls git-format-patch for you and loops through all the commits</li>
<li> the script asks you for a subject (of the email) for each commit</li>
<li> if you don't want to send a patch to wine-patches, enter 'stop' as
the subject (minus the quotes)</li>
<li> the diffs will be in diff_dir and the drafts will be in your gmail
drafts folder</li>
<li> append anything you need to the email and press send</li></ol>
</p><p>
You'll also need libgmail for python
installed as well:
<ul>
<a href="http://libgmail.sourceforge.net/">http://libgmail.sourceforge.net/</a>
</ul></p><p>
If you have any comments or suggestions, I'd like to hear them (I
think the script is rather ugly myself, but it gets the job done :))</p>
</quote>

<p>Another script by Christian Lachner will download, compile, and install
Wine from this git repository:</p>
<quote who="Christian Lachner"><p>
OK, more news. I updated my cvs-script a little bit (nothing really noticeable)
but that's not all.  Since everybody seems to have changed to GIT, I wrote a 
git-version of my wine-update-script. Features, functionality and so on are the
same as in the cvs-version.
<ul>
<li><a href="http://www.winehq.org/pipermail/wine-devel/attachments/20051211/2affc44b/getwinecvs-0001.sh">getwinecvs.sh</a> is now version: 0.36</li>
<li><a href="http://www.winehq.org/pipermail/wine-devel/attachments/20051211/2affc44b/getwinegit-0001.sh">getwinegit.sh</a> is version: 0.1 (based on getwinecvs.sh v0.36)</li>
</ul></p></quote>
</section>

<section 
	title="Finding Regressions"
	subject="WINE 0.9.3 and Photoshop 7 &amp; CS"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-December/043225.html"
	posts="7"
>
<topic>Debugging</topic>
<mention>Dimi Paun</mention>

<p>Ahhhh... regression testing.  If you happen to notice something in
Wine suddenly breaks, there's a fairly simple regression testing 
procedure you can do to figure it out.  In fact, this method will work
for pretty much any project, so it's a good thing to remember.  It
can also be the most time consuming part of fixing a bug.  So figuring
out exactly what broke something can get you really close to having a
fix.  </p><p>

(There are also some exceptions to this, such as adding in stubbed
functions that cause programs to suddenly break.  The right fix is not
to remove the stub, but to turn the stub into a complete function.. which
may be a lot of work.)</p><p>
Someone wrote in this week with a problem and the replies contained
info about helping out:</p>

<quote who="Aleksey"><p>
Yesterday I upgraded to WINE 0.9.3, and then tried running Photoshop
7. Photoshop gave me a hardware error. I thought, no problem, I'll
just reinstall it, same result. Then I reconfigured WINE using
winetools and tried again, same thing. Here is what I got in the
Terminal when running Photoshop 7:
<ul><i>(ed note: a bunch of FIXME's)</i></ul>
</p><p>


Then I tried installing Photoshop CS, knowing that it worked fine with
0.9.2. Photoshop CS told me that certain required files was missing,
but I forgot to get down the results from the Terminal. After that I
downgraded to WINE 0.9.2 and both versions of Photoshop work great.
</p><p>
A little side note: ImageReady 7 works great under 0.9.3, I did not
test ImageReady CS. ImageReady 7 works great under 0.9.2 also, but
ImageReady CS crashes.
</p></quote>

<p>So there was actually some useful information in there.  Scott
Ritchie replied,
<quote who="Scott Ritchie">

Well, the ideal way to fix bugs like this is to find the exact patch
that caused the breakage.  You've already done a whole lot for us by
pointing the exact version that broke things.  If you or someone else
with Photoshop 7 is willing/able to do a lot more, however, we can
attempt to isolate the exact patch that caused the breakage by doing
several recompiles with/without various patches that have been applied
since the last version.
</quote></p>

<p>Dimi Paun followed up on that with instructions how to do it:</p>
<quote who="Dimitrie Paun"><p>

Yes. And here are some instructions on how to go about finding
the troublesome patch:<ul>
   <a href="http://winehq.org/site/docs/winedev-guide/x1344">
   http://winehq.org/site/docs/winedev-guide/x1344</a>
</ul></p></quote>



</section>
<section 
	title="Feedback on aRTs, ESounD, and JACK Drivers"
	subject="feedback wanted from arts, esound and jack sound driver users."
	archive="http://www.winehq.com/pipermail/wine-devel/2005-December/043219.html">
	posts="1"
>
<topic>Multimedia</topic>
<p>Alexandre mentioned there were some new changes for better audio driver
management in winecfg.  That work has been done by Robert Reif and this
week he asked if anyone could give him some feedback regarding the lesser
used (and more broken) audio drivers:</p>
<quote who="Robert Reif"><p>
Is anyone using the arts, esound or jack sound drivers for non
trivial use?  By non trivial, I mean more than one application or
more than a single device.  If so, I am interested in getting
information on the software you are using and how it is using
the drivers.
</p><p>
Would redesigning these drivers to show up as a single device
per physical device which allowed being opened more than
once be a problem?</p></quote>

</section>
<section
	title="Fedora 64-bit x86"
	subject="A better workaround for compiling on FC4/x86_64"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-December/043017.html"
	posts="3"
>
<topic>Build Process</topic>
<mention>Marcus Meissner</mention>

<p>Apparently Fedora's 64-bit version doesn't provide some of the
32-bit compatibility libraries necessary for Wine.  (Which is somewhat
surprising since Wine doesn't have as many dependencies as you'd
expect.)  Pavel Roskin came up with a script to work around it:</p>
<quote who="Pavel Roskin"><p>
When trying to set up printing from Wine on Fedora Core 4 for x86_64, I
have discovered that Wine fails to find many libraries, including
libcups.  It turns out that the development packages on Fedora Core 4
don't always provide *.so symlinks for 32-bit libraries.  So I wrote
<a href="http://www.winehq.org/pipermail/wine-devel/attachments/20051203/97c7c82a/ldconfig32.bin">this script</a>.
</p><p>
The script creates all missing links in one directory (/usr/local/lib is
the default).  Not only was libcups found next time, but also the old
workaround with imake has become unneeded.  The configure script runs
out-of-box and finds X11 libraries.
</p><p>
I'm posting the script here in hope that it will be useful for some Wine
users.  I'm not sure it it merits inclusion in Wine, but I would not
object.
</p></quote>

<p>Marcus Meissner, who's heavily involved with SuSE's 64-bit x86,
felt Fedora should really just provide that stuff out of the box.
Pavel replied with more details:</p>
<quote who="Pavel Roskin"><p>

They are provided for some basic libraries, such as zlib and ncurses.
Other libraries, such as cups, as missing, but my script can remedy it,
because the only missing file is the symlink to *.so for the linker.
</p><p>
Unfortunately, openssl support cannot be fixed by the script
since /usr/include/openssl/opensslconf-i386.h is missing.  That's where
a development package would be very helpful.
</p><p>
I see it's not fixed in RawHide yet, so we'll have to deal with such
issues for some time.</p></quote>
</section>
<section 
	title="Relay Segfaults"
	subject="how do I find where wine itself is segfaulting?"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-December/043161.html"
	posts="10"
>
<topic>Debugging</topic>
<mention>Mike McCormack</mention>

<p>A thread popped up this week that seems to point to a problem lurking
somewhere, but no one seems to have the answer to it.  Bill Medland reported
on it (and it's been brought up before):</p>
<quote who="Bill Medland"><p>
Background.  I am trying to figure out why a program that I 
thought ran OK on 25 October no longer runs and no longer runs 
when I recompile from that code too.
</p><p>
So the program accesses invalid memory down inside the WNDPROC 
stuff (winproc.c line 418, it says, so I guess it means line 
416)
</p><p>
So I turn on <tt>WINDEBUG=+relay</tt> to see what is being passed.
</p><p>
And wine segfaults.
</p><p>
Even
<ul><code>export WINEDEBUG=+relay<br />
wine --version</code></ul>
</p><p>
which yields 
<ul><code>0009:Call kernel32.__wine_kernel_init() ret=77ed4e4d<br />
Segmentation fault</code></ul>
</p><p>
I can't use gdb and I can't use winedbg.
</p><p>
Anyone know what is going on?</p></quote>

<p>Peter Berg Larsen confirmed the issue,
<quote who="Peter Berg Larsen">
Wine crashes the first time it enters/uses a entry/function using the 
debug setup from ntdll/relay.c:RELAY_SetupDLL. (Which happens to be a 
RtlInitUnicode in kernel/module:GetModuleHandleW) . If you exclude the 
ntdll in relaying, wine - without parameters - does not crash. BUT at soon 
as you try running a program it will crash when calling a kernel32/* 
function.</quote></p>

<p>Mike McCormack knew of it as well and mentioned there was a 
<a href="http://www.winehq.com/pipermail/wine-devel/2005-December/043173.html">hack</a> 
in the CrossOver tree to work around it.  Bill tried it but didn't have any
success.  He started looking at differences between his old machine it
worked on and the new one.  He narrowed it down to the kernel,
<quote who="Peter Berg Larsen">
It's the kernel choice.  It works on the non-smp kernel 
and fails on the smp kernel.
(2.6.9-22.EL works; 2.6.9-22.ELsmp fails, both are RedHat 
kernels)</quote></p>

<p>Peter advised,
<quote who="Peter Berg Larsen">


Try booting with <tt>noexec=off</tt>. I tried that when I asked wine-devel a 
month ago, but my mandrake crashed - for some obscure reasons - before reaching 
a prompt.</quote></p>

<p>So that's where we stand: a problem with a possible workaround, but 
insufficient info to have a real fix.  Is it a Wine problem?  Kernel?  </p>
</section></kc>
