All the news that fits, we print.
This week, 130 posts consumed 294 K. There were 57 different contributors. 26 (45%) posted more than once. 33 (57%) posted last week too. The top 5 posters of the week were:
|
Strange API conventions | 02 Jun 2000 00:00:00 -0800 | Archive |
---|---|---|
Francois Gouget, still toying with winapi_check and ports of Windows apps with WineLib) sent a patch to mimic better the way Windows splits the definitions across the header files. One point of peculiar interest was the MCIWndCreate function (Francois fix was: MCIWndCreate conflicts with the corresponding A/W macro. As a side note, since the introduction of UNICODE strings in Windows, most APIs exist in two flavors when strings come into play: - an ANSI version - an UNICODE one. Usually, the ANSI version is postfixed by A (fooA) and the UNICODE with W (fooW) (for Wide characters). In the header file, depending whether the manifest constant UNICODE is defined, foo is either #defined as fooW or fooA. Francois Gouget went further on some tentative explanations: When I say that the DLL had three APIs I checked with windows and saw that they do use the usual macro for MCIWndCreate. So, I assume that they created MCIWndCreate first and then realized that it should really have an A and a W version, added those but did not remove the original one to not cause compatibility problems. So I assume one is not supposed to use the old one anymore. Of course if one really wants to use the old one all one has to do is to use GetProcAddress. After lots of people complained about this reminiscence of the bad coding habits, the discussion evolved into the prototypes for such function. Andreas Mohr also pointed out that WINSPOOL.DeviceCapabilities{A|W} might suffer from the same symptoms and may require the same treatment, but no one replied. |
Problem with gcc-2.95.2 and -O6 | 06 Jun 2000 00:00:00 -0800 | Archive |
---|---|---|
Lionel Ulmer reported some IRC discussion he had:
By discussing with a Wine user on #nvidia, we found out that when
compiling 'scheduler/sysdeps.c' with gcc 2.95.2 and -O6, the function
'SYSDEPS_DoCallOnStack' is undefined
nm sysdeps.o | grep DoCallOnStack
gives 'U SYSDEPS_DoCallOnStack'). After some discussions with Ove, he thought that it was because gcc was inlining this function. Lionel asked for hints on ways to tell gcc not to inline this function. Ulrich Weigand tried to help: Well, I had hoped the __attribute__(__unused__) that I attached to the declaration would suffice ... I'm not aware of any other pragma or attribute that could be used. The proper solution for gcc would IMO be to replace the ASM_GLOBAL_FUNC hack by proper GNU inline assembly, specifying the procedure address as input argument. This way, gcc would be aware that it is used. Unfortunately, Patrik won't like this as it breaks non-gcc compilation :-/ Anyway, Ulrich proposed a dirty hack (removing the static attribute). The moral of this story might be not too use heavy optimization with bleeding edge compilers... |
Making Star Money 2.0 to work | 08 Jun 2000 00:00:00 -0800 | Archive |
---|---|---|
Andreas Mohr reported a crash while running Star Money 2.0. He also
started digging into the traces, and reported some bad behavior
between windows handles and menu id. Speaking after himself, Andreas
smelled some mismatch between windows IDs and menu IDs. Alexandre
Julliard pointed back to the recent changes to
SetParent which do not clear wIDmenu when making the window a
top-level one.
As a side note, Windows (at least in CreateWindow) uses the same
parameter for two different uses:
|
Feature: The X11 driver by Ove Kåven | ||
---|---|---|
Most Wine users run Wine under the windowing system known as X11. During most of
Wine's history, this was the only display driver available, but in recent years,
parts of Wine has been reorganized to allow for other display drivers (although
the only alternative currently available is Patrik Stridvall's ncurses-based
ttydrv, which he claims works for displaying calc.exe). The display driver is
chosen with the "GraphicsDriver" option in the [wine] section of wine.conf/.winerc,
but I will only cover the x11drv in this article.
<h3>x11drv modes of operation</h3>
The x11drv consists of two conceptually distinct pieces, the graphics driver
(GDI part), and the windowing driver (USER part). Both of these are linked
into the libx11drv.so module, though (which you load with the "GraphicsDriver"
option). In Wine, running on X11, the graphics driver must draw on drawables
(window interiors) provided by the windowing driver. This differs a bit from the Windows
model, where the windowing system creates and configures device contexts controlled
by the graphics driver, and applications are allowed to hook into this relationship
anywhere they like. Thus, to provide any reasonable tradeoff between compatibility
and usability, the x11drv has three different modes of operation.
|
All Kernel Cousin issues and summaries are copyright their original authors, and distributed
under the terms of the
GNU General Public License,
version 2.0.