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

<title>Wine Traffic</title>

<author contact="http://www.theshell.com/~vinn">Brian Vincent</author>
<issue num="249" date="19 Nov 2004 00:00:00 -0800" />
<intro> <p>This is the 249th issue of the Wine Weekly News publication.
Its main goal is to get a sugar buzz from candy. 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="180" size="817" contrib="66" multiples="37" lastweek="25">

<person posts="14" size="39" who="Mike Hearn" />
<person posts="12" size="225" who="James Hawkins" />
<person posts="10" size="25" who="Dan Kegel" />
<person posts="8" size="25" who="Jesse Allen" />
<person posts="8" size="24" who="Eric Pouech" />
<person posts="6" size="22" who="Ivan Leo Puoti" />
<person posts="6" size="21" who="Juan Lang" />
<person posts="6" size="17" who="William Poetra Yoga H" />
<person posts="5" size="15" who="Dimitrie O. Paun" />
<person posts="5" size="15" who="Chris Morgan" />
<person posts="5" size="12" who="Paul Rupe" />
<person posts="4" size="12" who="M-Halo" />
<person posts="4" size="11" who="Olive Esseret" />
<person posts="4" size="10" who="Bill Medland" />
<person posts="3" size="16" who="Remi Assailly" />
<person posts="3" size="10" who="Brian Vincent" />
<person posts="3" size="9" who="Michael Ost" />
<person posts="3" size="9" who="Kevin Koltzau" />
<person posts="3" size="7" who="Mike McCormack" />
<person posts="3" size="7" who="Steven Edwards" />
<person posts="3" size="7" who=" (Sven Paschukat)" />
<person posts="3" size="5" who="Christian Britz" />
<person posts="2" size="7" who="Eric Frias" />
<person posts="2" size="7" who="Shachar Shemesh" />
<person posts="2" size="6" who="Brian Gunlogson" />
<person posts="2" size="6" who="Vincent B&#233;ron" />
<person posts="2" size="6" who="Dmitry Timoshkov" />
<person posts="2" size="6" who="Duane Clark" />
<person posts="2" size="5" who="Zach Gorman" />
<person posts="2" size="5" who="Tony Lambregts" />
<person posts="2" size="5" who="Hans Leidekker" />
<person posts="2" size="4" who="Arjen Nienhuis" />
<person posts="2" size="4" who="Saulius Krasuckas" />
<person posts="2" size="4" who="Jia L Wu" />
<person posts="2" size="4" who="Tom" />
<person posts="2" size="4" who="Andreas Mohr" />
<person posts="2" size="4" who="Chris Cox" />
<person posts="1" size="81" who="Michael Jung" />
<person posts="1" size="10" who="Dagan Shai" />
<person posts="1" size="5" who="Eric Pouech" />
<person posts="1" size="5" who="Jonathan Wilson" />
<person posts="1" size="5" who="luis lenders" />
<person posts="1" size="4" who="Demoniak" />
<person posts="1" size="3" who="Jerry Jenkins" />
<person posts="1" size="3" who="jeffl" />
<person posts="1" size="3" who="Peter Hunnisett" />
<person posts="1" size="3" who="Joris Huizer" />
<person posts="1" size="3" who="Michael Stefaniuc" />
<person posts="1" size="3" who="Roderick Colenbrander" />
<person posts="1" size="3" who="Jason Edmeades" />
<person posts="1" size="3" who=" (Felix Nawothnig)" />
<person posts="1" size="2" who="Francois Gouget" />
<person posts="1" size="2" who="Francisco Nauber Bernardo Gois" />
<person posts="1" size="2" who="Gerald Pfeifer" />
<person posts="1" size="2" who="Christian Costa" />
<person posts="1" size="2" who="David G&#252;mbel" />
<person posts="1" size="2" who="Cristian Adam" />
<person posts="1" size="2" who="Jon Griffiths" />
<person posts="1" size="2" who="Dan McGhee" />
<person posts="1" size="2" who="Aneurin Price" />
<person posts="1" size="2" who="Alexandre Julliard" />
<person posts="1" size="2" who="ashok jani" />
<person posts="1" size="2" who="Paul Rupe" />
<person posts="1" size="1" who="lats" />
<person posts="1" size="1" who="Grant Williamson" />

</stats>
<section 
	title="News: CrossOver Office 4.0" 
	subject="News"
	archive="http://www.codeweavers.com/site/about/general/press/?id=20041116" 
	posts="1"
	startdate="13 Nov 2004 00:00:00 -0800"
	enddate="19 Nov 2004 00:00:00 -0800"
>
<topic>News</topic>
<mention>CodeWeavers</mention>
<mention></mention>
<mention>codeweavers</mention>
<mention>Jeremy White</mention>
<mention>Apple</mention>
<mention>News</mention>
<mention>TransGaming</mention>

<p>The guys over at CodeWeavers have done it again - a new version of CrossOver
Office was released this week.  This time the version number was bumped up to
4.0 to signify a major release.  New applications are now supported which
the press release describes:</p>
<quote who="Codeweavers"><p>
 iTunes, which recently celebrated its 100 millionth music download, 
allows users to import music in AAC, MP3 or Apple Lossless formats 
and convert unprotected WMAs to MP3. Users can sync with their iPod, 
burn CDs, and complete other routine digital jukebox tasks; they can 
also use Apple's AirPort Express to wirelessly stream music from their 
computer to a stereo located in any room in their home. Apple's hugely 
popular iTunes Music Store, accessible from iTunes, currently contains 
more than 700,000 tracks and 450 independent labels with 30-second previews.
</p><p>
Adobe Framemaker (www.adobe.com) is an enterprise-class authoring and 
publishing solution that combines the simplicity of word processing 
with the power of XML. Framemaker support under CrossOver will allow 
Linux users to develop professional-looking documents for both print 
and the web.
</p><p>
Oracle JInitiator is a Web-based tool for Java-enabled Windows browsers 
allowing developers and end-users to access Oracle Application Forms. 
JInitiator is a key enabling technology for deploying Oracle databases 
via the Web.
</p></quote>

<p>A lot of time was spent stabilizing this
release to make sure it would work with the various distributions
and permutations of them.  Nonetheless,  CodeWeavers is pretty up
front about what this product can and cannot do and Jeremy White 
cautioned users to be careful installing it in his 
<a href="http://crossover.codeweavers.com/pipermail/announce/2004-November/000027.html">announcement</a>.
Jeremy also pointed to 
<i><a href="http://www.codeweavers.com/site/products/cxoffice/truth_in_advertising/the_real_dirt/">The Real Dirt</a></i>
for what you can expect to find in this release.  Slashdot 
<a href="http://apple.slashdot.org/article.pl?sid=04/11/17/1955242">picked
up</a> that link and included a quote from it.  Because of that, initial
comments on Slashdot were filled with naysayers wondering if iTunes even
worked at all.  Two things happened with the comments though: moderators 
managed to weed out the pointless ones and CrossOver fans who have 
actually used the product came to the defense of CodeWeavers.  
For more info about the newly supported apps, check out CodeWeavers'
CrossOver Compatibility Center pages for
<a href="http://www.codeweavers.com/site/compatibility/browse/name?app_id=134">iTunes</a>
and
<a href="http://www.codeweavers.com/site/compatibility/browse/name?app_id=619">FrameMaker</a>.</p>

<p>In other news, TransGaming is promising 
<a href="http://www.transgaming.com/news.php?newsid=135">support for Half-Life 2</a>
in it's upcoming Cedega 4.2 release.</p>

</section>
<section
        title="Kernel Integration Problems"
        subject="Kernel 2.6.9 - Issue Found"
        archive="http://www.winehq.com/hypermail/wine-devel/2004/11/0310.html"
        posts="22"
        startdate="12 Nov 2004 00:00:00 -0800"
>
<topic>Integration</topic>
<mention>Mike Hearn</mention>
<mention></mention>
<mention>Roland</mention>

<p>Late last week reports began surfacing about problems
running Wine with some of the new kernel versions.  Paul
Rupe was the first to report it,
<quote who="Paul Rupe">
Has anyone tried Wine with Linux kernel 2.6.9?  I'm getting crashes with 
this version that don't happen when I reboot back to 2.6.8.1.  I haven't 
had much luck debugging it so far, but each time, ps shows a &lt;defunct&gt; 
wine-preloader process and wineserver still running.</quote></p>

<p>Theories began to circulate that the kernel, glibc, or
space aliens were the culprit.  On Saturday, Jesse Allen 
tracked down what had changed and explained:</p>
<quote who="Jesse Allen"><p>
For the past two weeks I've been tracking an issue that I found with kernels
greater than 2.6.8 / 2.6.8.1 and wine.  Starting with kernel 2.6.9-rc1, 
Warcraft III copy protection would not work -- ie please insert disc.  I found 
changes to the cdrom driver in rc1.  Reversing them did not work.  For a while 
I was lost to what could have changed.  Then I had an idea:  search for 
changes that could affect the way processes run.  That led me to reverse 
changes related to ptrace, and I found a series of patches that break
Warcraft III copy protection code.
</p><p>
Patch 1:  ptrace single-stepping fix
<ul>
Included in 2.6.9-rc1<br />
By Davide Libenzi?<br />
<a href="http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1803.144.55">http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1803.144.55</a><br /><br />

This change includes a note that it could break debuggers.  Reversing this
change would allow War3 to work in rc1, but kernels greater than rc1 would 
still not work.</ul></p><p>
Patch 2:  make single-step into signal delivery stop in handler
<ul>
Included in 2.6.9-rc2<br />
By Roland McGrath<br />
<a href="http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1832.59.196">http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1832.59.196</a></ul></p><p>

The next patch may depend on patch #2 because it is a bug-fix based on 2.
</p><p>
Patch 3:  Fix PTRACE_CONT after single-step into signal delivery
<ul>
Also 2.6.9-rc2<br />
By Roland McGrath<br />
<a href="http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1847">http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1847</a></ul></p><p>

Reversing patches 1, 2, and 3 in kernels 2.6.9-rc2 and greater (through 
2.6.10-rc1)  will allow War3 to work.  I tried 1 &amp; 3 without 2, but it 
failed leading me to believe that 1 &amp; 2 are required.  I didn't try 1 
&amp; 2 alone because I think reversing 2 would require 3 reversed.
</p><p>
All the patch changes seem to be on ptrace single-stepping.  However, there
is at least one ptrace single-stepping patch that seems to make no difference
at all:
<ul><a href="http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1803.144.70">
http://linux.bkbits.net:8080/linux-2.6/cset_at_1.1803.144.70</a></ul></p><p>

There are other single-stepping patches for different non-i386 architectures 
but I have no idea on these because I don't run the others.  They are 
meaningless for wine anyways.
</p><p>
Now that I've identified a problem, I'm curious where else it's cropping up.
Paul Rupe, could you try reversing these patches to see if this fixes your
crashing problem?  And how about those people having trouble with debugging?
</p><p>
Then I guess the next step is to find out if this is a wine bug or not.  If
it's not, then it may be a kernel bug and we should report it to the kernel
devs.
</p></quote>

<p>Eric Pouech was able to deduce the problem:</p>
<quote who="Eric Pouech"><p>
This shall harm us...
</p><p>
Basically, when a program is traced by ptrace, and single stepping, the patches 
allow to also single step in the program's SIGTRAP handler...
In Wine case:
<ul>
<li> the handler is wine's implementation to send the single step event to wineserver</li>
<li> our code implies that the handler is not seen from wineserver (basically, that 
after executing the single step, the debugging event is sent to wine server)</li>
</ul></p><p>
To sum up, it's not a wine bug nor a linux bug, it's just a change in linux 
behavior that breaks wine. Linux's new approach is to say a signal handler is part 
of the application, and should be traced (in a debugger for example) as a 
regular function. Wine sees signal handler (at least SIGTRAP, SIGSEGV...) as 
kernel plugs put in the application (NTDLL) and used to send back information to 
Wine server. Those two options are not compatible.
</p><p>
IMO, the best option would be to add an option to turn on/off the behavior in 
ptrace (to allow or not single stepping in signal handlers).
Fixing Wine would be doable, but somehow ugly (ie it would mean turning the TF 
off in Wine server to let our handlers run...)
</p></quote>

<p>Mike Hearn set about contacting kernel developers to see what could be done.
Apparently Linus got a heads up about it and 
<a href="http://marc.theaimsgroup.com/?l=bk-commits-head&amp;m=110048429304053&amp;w=2">included 
a change</a> in 2.6.10-rc2 to address the problem.  Another kernel
developer who's worked on this issue, Roland McGrath, followed up and
mentioned that the change needed to be propagated to a few other parts of
the kernel,
<quote who="Roland McGrath">
 Your change hit only one spot of three in 
 <a href="http://linux.bkbits.net:8080/linux-2.6/hist/arch/i386/kernel/signal.c?nav=index.html|src/|src/arch|src/arch/i386|src/arch/i386/kernel">arch/i386/kernel/signal.c</a> where
 PT_PTRACED is now tested and it should be a "is PTRACE_SINGLESTEP in effect?"
 test. Also the same spots in native and 32-bit emul for x86-64.</quote></p>

<p>Initial testing seemed to confirm that changing just the one spot wasn't
enough, at least the original copy protection problem Jesse experiences
still existed.   Eric thought the patch was headed in the right direction, but 
even he couldn't tell if it would fix everything.  No more changes were made
to the signal.c code, so it's unclear what the direction on this is.</p>
  
</section>
 
<section
        title="oprofile &amp; Wine"
        subject="profiling GTA4. question about polling"
        archive="http://www.winehq.com/hypermail/wine-devel/2004/11/0399.html"
        posts="2"
        startdate="17 Nov 2004 00:00:00 -0800"
>
<topic>Debugging</topic>
<mention></mention>
<mention>Raphael Junqueira</mention>
<mention>Mark</mention>

<p>Profiling has been a topic that's popped up from time
to time as being an area Wine needs to tackle.  Some of 
the major architectural issues, such as DLL separation
and stabilizing wineserver, have been slowly become reality.
What's now evident is there are bottlenecks that could
be identified leading to an increase in performance.
Brian Gunlogson started a thread this week about just
such an issue:</p> 
<quote who="Brian Gunlogson"><p>

GTA4 (Grand Theft Auto: Vice City) runs on Wine with no 
additional tinkering! Albeit horribly slow.
</p><p>
A profile of GTA shows that only one D3D function 
(drawStridedSlow) needs major optimization. According to
the oprofile results, polling seems to be the major bottleneck.
</p><p>
(the top of a flat profile generated with oprofile)
<table>
<tr><th>samples</th><th>%</th><th>image name</th><th>app name</th><th>symbol name</th></tr>
<tr><td>2177620</td><td>14.0147</td><td>d3d8.dll.so</td><td>wine-preloader</td><td>drawStridedSlow</td></tr>
<tr><td>1681661</td><td>10.8228</td><td>vmlinux</td><td>vmlinux</td><td>do_pollfd</td></tr>
<tr><td>1025198</td><td>6.5980</td><td>vmlinux</td><td>vmlinux</td><td>pipe_poll</td></tr>
<tr><td>515461</td><td>3.3174</td><td>vmlinux</td><td>vmlinux</td><td>add_wait_queue</td></tr>
<tr><td>423342</td><td>2.7245</td><td>vmlinux</td><td>vmlinux</td><td>poll_freewait</td></tr>
<tr><td>423185</td><td>2.7235</td><td>vmlinux</td><td>vmlinux</td><td>__pollwait</td></tr>
<tr><td>354490</td><td>2.2814</td><td>vmlinux</td><td>vmlinux</td><td>fput</td></tr>
<tr><td>285473</td><td>1.8372</td><td>vmlinux</td><td>vmlinux</td><td>sys_poll</td></tr>
</table></p><p>
I'd like to optimize this. Any hints?
</p></quote>

<p>Raphael Junqueira replied to Brian and mentioned a
way for the function to be optimized.  Then the discussion
turned towards using oprofile and Brian explained how he
used it:</p>
<quote who="Brian Gunlogsdon"><p>
Just download the latest CVS from 
<a href="http://oprofile.sourceforge.net/download/">http://oprofile.sourceforge.net/download/</a>
and see the README.  I assume you know how to get it compiled and installed :)
</p><p>
As root:
<ul><code>
# opcontrol --start<br />
# opcontrol --reset<br />
'--reset' clears out any old unwanted profiling data<br />
# opcontrol --separate=kernel<br />
'--separate=kernel' Separates output by library and kernel [this is the hardest option to
understand].</code></ul></p><p>

Profiling is on, run the application to profile and do not do anything else.
</p><p>
When done:
<ul><code>
# opcontrol --dump<br />
'--dump' flushes remaining data to disk<br />
# opreport -l >./myreport.log<br />
Stores the flat profile in a file called myreport.log.</code></ul></p></quote>

<p>Jason Edmeades outlined the current direction of Direct3D:</p>
<quote who="Jason Edmeades"><p>
Firstly thanks for the profiling info - its something I have been waiting to
try when I get through the d3d9 changes. We have always known that routine
was bad (hence the name 'slow'!) but that confirms it. 
</p><p>
Re the splitting into wined3d - You asked "Is this a tedious task or does it
require knowledge of the codebase?"... It's a bit of both. I am taking it
slower because I am trying to ensure the patches get committed so I don't
end up reworking things, and I only have limited time so I don't want to
waste it. 
</p><p>
At the moment I am 'stuck' trying to get a particular patch in, which will
dictate the future direction of lots of other patches, so it is important we
get it right. Once that's done, I really hope to make a lot of progress
relatively quickly, and once I get beyond a certain point, feel free to hack
away. I hate the fact I am holding anyone back!
</p><p>
Please do take Raphael's test patch and try again - I would be interested to
know if it makes a significant difference (which I do believe it should). 
</p><p>
I would be very interested in any other profiling results, and if you feel
like improving things in the code please go for it. One thing I always
fancied doing was to profile the 3dMark2001SE utility, and see how close to
windows performance we can get and identify the bottlenecks.
</p></quote>


</section>
 
<section 
	title="iTunes Issues"
	subject="[Discuss] iTunes in 4.0"
	archive="http://crossover.codeweavers.com/pipermail/discuss/2004-November/007431.html"
	posts="4"
	startdate="16 Nov 2004 00:00:00 -0800"
	enddate="17 Nov 2004 00:00:00 -0800"
>
<topic>Codeweavers</topic>
<mention>CodeWeavers</mention>
<mention></mention>
<mention>codeweavers</mention>
<mention>Apple</mention>
<mention>News</mention>
<mention>Codeweavers</mention>

<p>Almost every thread covered in the Wine Weekly News comes
from the 
<a href="http://www.winehq.com/hypermail/wine-devel/">wine-devel</a> mailing list.
Once in a while something pops up on another list that's pertinent enough
to cover here though.  Over on CodeWeavers' 
<a href="http://crossover.codeweavers.com/pipermail/discuss/">mailing list</a>
there was some discussion about the performance of iTunes.  The details
of the problems encountered really center on Wine.  Tony Ricciotti started
off a thread by describing his experiences:</p>
<quote who="Tony Ricciotti"><p>
It appears that the installation of iTunes completes properly, but 
cxoffice reports a failure of the install. 
</p><p>
The menus in iTunes disappear as you roll the mouse over them.
</p><p>
When adding files to the library, the dialog box that is up showing the 
progress of the import is supposed to be an application modal box, 
which, should stop you from bringing the iTunes app to the forefront but 
you can, requiring an ALT+TAB to bring it the dialog to the front.
</p><p>
Still receiving the the error about the CD/DVD burning driver not being 
installed properly. I know it is not supported, but there must be some 
way to fool it. lolol
</p><p>
Performance overall is GREATLY improved, however, songs skip a little 
when playing in iTunes and the wineserver is sucking up ~95% of my P4 
3.2G processor.  Unacceptable IMO. :)
</p><p>
Still need to test the iPod syncing. 
</p></quote>

<p>Regarding the CPU usage, Jeremy White explained some workarounds:</p>
<quote who="Jeremy White"><p>
Yup; this one stinks.  This happens on 2.6.x kernels, primarily.
iTunes is a highly threaded application, and has some strange
mechanics in how it delivers sound to the audio system (and Wine's
audio system is imperfect, at best).
</p><p>
You can improve the situation in several ways; the faqs on Quicktime
sound settings can help (set Quicktime sound output to waveOut
and to the sound frequency supported by your sound card, which
might be 48khz).  Also, the mini player seems less affected
(although it's still not great).
</p><p>
Finally, and this is no answer, but iTunes suffers from skipping
on Windows too; if you move windows around in Windows you can
get it to skip.  Candidly, I think the problem is that Apple
doesn't use a large enough buffer for the music output, and has
an overly complex architecture that is vulnerable to timing
changes (Linux timing is different than that of Windows,
to my dismay).
</p><p>
Mike and Alexandre and I worked on this all through the weekend
and could not get to the bottom of it; Mike and Alexandre
are continuing on in the hope that we can have a fix.
</p><p>
But, frankly, we felt that this release had been delayed
far too many times and that it was good enough
to ship and call it 'bronze'.
</p></quote>

<p>Mike Hearn gave a more in-depth explanation of the problem:</p>
<quote who="Mike Hearn"><p>
It has strange mechanics in a lot of things, to be quite honest it 
appears Apple seriously bodged the Windows port which limits how well 
it'll run on CrossOver (can't be more catholic than the pope ...)
</p><p>
I took a brief look at the 100% CPU thing but didn't come to anything 
conclusive: basically the problem is that iTunes spams the wineserver 
with apparently pointless message traffic. I don't know if it does the 
same on Windows but if so it'd explain the ~10% cpu usage you see on the 
real thing. Unfortunately on Wine sending an inter-thread message is a 
bit more expensive than on Windows, multiplied by bazillions of times 
per second and you get 100% cpu usage.
</p><p>
The so-called "QTGenerateNullEvents" message sounds awfully like some 
kind of scheduling hack inside iTunes or QuickTime to me ... it's 
intermittent as well, I've seen iTunes playing audio from the music 
store as opposed to the library but not doing this. So possibly there's 
something we can do to fix/supress this behaviour.
</p></quote>

<p>It appears that work is progressing in this area and some
preliminary patches are being tested that fix it.</p>

</section>
<section
        title="Changing Wine's Look and Feel"
        subject="Default System Colors"
        archive="http://www.winehq.com/hypermail/wine-devel/2004/11/0   .html"
        posts="16"
        startdate="30 Oct 2004 00:00:00 -0800"
        enddate="16 Nov 2004 00:00:00 -0800"
>
<mention></mention>
<mention>William Poetra</mention>

<p>William Poetra Yoga Hadisoeseno has come up with some patches
to make Wine look nicer and it led him to ask this week:</p>
<quote who="William Poetra Yoga H"><p>
The last time I submitted a patch to change the default system colors from
win95 to winxp (classic), it wasn't merged. I think this was because I didn't
discuss it here.
</p><p>
So now, should we change the default system colors for WINE, from win95 to
winxp (classic)? I really think it looks a lot better with the new colors, as
the win95 colors are too dull (MS certainly must have done a lot of research
into this).
</p></quote>

<p>William came up with a lot of new stuff, including a patch
to do a gradient through the title bar.  Several folks expressed
approval of the changes.  Roderick Colenbrander thought it could
be taken a step further:</p>
<quote who="Roderick Colenbrander"><p>
 Now that I have thought about it a while longer perhaps it is the right idea
 to already start using uxtheme. If I remember correctly uxtheme is already
 usable the only problem is that we don't use it to actually modify the look
 of wine widgets. Kevin Koltzau, the original uxtheme author, made the dll
 able to parse original windows xp themes and further he used it to theme his
 own app with it (atleast the color part). It might be a good idea to stick
 to the old wine colors and add a winelook uxtheme option. When the option is
 enabled we use uxtheme to parse a theme file and it will then adjust the
 colors. The theme file will be then of the same type as the files used on
 windows, so you could even use windows themes. After this a gtk/qt backend
 could be added to uxtheme.</p></quote>
 
<p>Roderick went on to explain more about how uxtheme works:</p>
<quote who="Roderick Colenbrander"><p>
 Some time ago I looked into uxtheme a bit and it roughly works like this.
 The dll itself is responsible for loading theme files. After a theme is
 loaded it can for example be used to load a bitmap and draw as for example
 the background of a window or it can change the color of controls.
</p><p>
 Uxtheme can be used in two ways. Useally all theming is done by windows
 itself. To do the theming microsoft ships a new version of the user and
 common dialog dlls which use uxtheme to do the theming. In the other case
 you can call uxtheme yourself and then you can decide yourself what you want
 to theme.
</p><p>
 Not sure if I said it all correctly. Likely Kevin Koltzau knows it a bit
 better as he is working on uxtheme. Not sure what the current status of the
 dll is but atleast our controls aren't using it for theming yet.
</p></quote>

<p>The big issue with using uxtheme seems to center on Wine's controls
not implementing it.   Kevin replied and described how some apps use
uxtheme:</p>
<quote who="Kevin Koltzau"><p>
Under Windows XP, the only way for an application to be themed is if it has
a manifest in its resources requesting comctl 6.0. If an app was written
for Win95 it will always draw with the old style as it has no manifest.
However, the color scheme of the theme will still be applied to all applications
</p><p>
It is possible to add a a manifest for an existing application without modifying
the executable by placing a &lt;app&gt;.exe.manifest file in the same directory
as the application executables, but your mileage may vary on this approach.
</p><p>
A theme-aware application can call the IsThemeActive and IsAppThemed to
determine if a theme is active, and if the current application is themed.
XP has a user-configurable blacklist to prevent applications from being themed,
even if they are theme-aware..hence the two API calls.
</p></quote>

<p>The final decision on changing Wine's look and feel will be
up to Alexandre.  Since he's been gone all week it looks like
the resolution of this thread is in a holding pattern.</p>
</section>
 
<section 
	title="Usability Problems" 
	subject="Problem roundup"
	archive="http://www.winehq.org/hypermail/wine-devel/2004/11/0438.html" 
	posts="1"
	startdate="19 Nov 2004 00:00:00 -0800"
>
<mention></mention>

<p>Mike Hearn pointed out:</p><quote who="Mike Hearn"><p>

So, trolling linuxquestions.org reveals the following top 3 problems 
users are having with Wine currently:
<ol>
<li> The RH9 RPMs are apparently being compiled with epoll support linked
    in. This is causing user pain. We should really be using dlsym here,
    why are we not again?</li>

<li> Our bestest bestest friends over at InstallShield Corp have released
    a new version of their elegant and simple product, which refuses to
    start with builtin DCOM.</li>

<li> Some people still seem to be getting the "C:\\Windows\\System does
    not exist" message.</li></ol></p></quote>

</section>
<section 
	title="Lack of CVS Commits" 
	subject="CVS updates?"
	archive="http://www.winehq.com/hypermail/wine-devel/2004/11/0427.html" 
	posts="3"
	startdate="18 Nov 2004 00:00:00 -0800"
	enddate="19 Nov 2004 00:00:00 -0800"
>
<topic>Project Management</topic>
<mention></mention>

<p>Christian Britz wondered why there haven't been
any CVS commits for over a week.  Unlike many projects,
Wine only has one person who makes commits to CVS: Alexandre
Julliard.  If there haven't been CVS commits for a while
it usually means Alexandre is doing something.  In this
case, Mike Hearn explained,
<quote who="Mike Hearn">
 Alexandre has moved back to Switzerland and
 there's no ADSL at the place he's staying. Once he gets a fast net
 connection set up he'll be committing. Hopefully he has more luck with
 this than I did!</quote></p>

<p>Alexandre pointed out that maybe it's not a bad thing
for him to be away for a while,
<quote who="Alexandre Julliard">
 Getting DSL shouldn't be too hard, but I have to find a place to live
 first, which isn't trivial out here...  So yes, updates are going to
 be a bit painful over the next couple of weeks. The good news is that
 it's all part of an evil plan to prevent Jer from getting in touch
 with me so that I can concentrate on the wm [<i>ed note: window manager</i>]
 work for a while &lt;g&gt;
</quote></p>

</section></kc>
