Wine Traffic #63 For 2�Oct�2000

By Eric Pouech

Table Of Contents

Introduction

This is the 63rd release of the Wine's kernel cousin publication. It's main goal is to distribute widely what's going on around Wine (the Un*x windows emulator).

Mailing List Stats For This Week

We looked at 69 posts in 184K.

There were 29 different contributors. 14 posted more than once. 13 posted last week too.

The top posters of the week were:

1. Window Manager woes

20�Sep�2000�-�25�Sep�2000 (10 posts) Subject: "Disabled windows can't be resized by WM"

People: Dmitry Timoshkov,�G�rard Patel,�

Dmitry Timoshkov posted a patch which
) attempts to prevent resizing of disabled windows by a Window Manager. Most (if not all) windows applications don't expect to be resized while popup or dialog is currently displayed and interacts with user. The least damage to the app's widow that could be done is just a misbehavior in painting, but it can also lead to another unexpected results.

My patch makes disabled window to temporary behave like a dialog, then when window gets enabled its behavior is restored.

In a course of the discussion, Dmitry pointed out another problem:
WinEdt (http://www.winedt.com/) exhibits some flaws in the way Wine manages windows. For instance main WinEdt window has only close box on it, though in Windows all three standard buttons showed.

My patch adds another "feature": after any dialog box was shown, bitmap on the system menu along with the sole close box on the main window caption disappear and don't get restored after the main window was enabled back.

Analyzing KWM 1.1.1 code, G�rard Patel found the source of the issue in the KDE code:
What I understand from the Kwm code is that once reconfigured, a transient X window loses the menu and close buttons. I may be wrong but I think Kwm has not hit this bug too often because it is probably not common for X program to reconfigure transient windows. It's only in Wine that transient windows are alive for the entire duration of the program I guess :-)

Note: a transient window in X11 words is close to dialog boxes in Windows.

However, Dmitry patch also triggered on G�rard's side that Dmitry couldn't reproduce (even if both used the same WM: KWM 1.1.1).

As a conclusion (where more questions have been raised than points have been answered), G�rard advise not
to fight too hard with windows managers; or owned popups should not be transient windows. It's a difficult problem, you'll see that Corel has a completely different solution in their tree. I am not sure there is a good solution, in fact.

2. Module loading and default directories

27�Sep�2000 (10 posts) Subject: "PATCH: LDFLAGS and -rpath"

People: Ove Kaaven,�Alexandre Julliard,�,�Ove K�ven,�Marcus Meissner

Marcus Meissner proposed a patch to make use of the -rpath directive for building Wine's .so files (this directly embeds inside the .so files, where to look for the .so module dependencies - other .so files where to look for functions/variables -). With the patch, Marcus claimed to be able to run the wine binary emulator and the wineserver without a proper /etc/ld.conf configuration.

Ove K�ven reacted:

Ove also had in mind to be able someday
to choose different DLL builds by just changing the EXTRA_LD_LIBRARY_PATH but using the same wine binary... if the rpath is embedded in wine, that won't be possible. Is there a reason you need to do so?

Alexandre Julliard explained how he liked things to be:
libwine_unicode.so will definitely be in the same directory as libwine.so; but this can be a non-standard place, which is why we need rpath. In fact libwine and libwine_unicode are the only libraries that need it, because they are (should be) the only ones loaded implicitly by ld.so.

At the moment we have the problem that dlls import one another at the ELF level, which is why they have to be installed in the same directory and with the same rpath as libwine.so. But once import tables are working, dlls will only import each other through an explicit dlopen using EXTRA_LD_LIBRARY_PATH.

Basically the final situation should be:

Current solution is a compromise between simplicity, and the ability to packagers to install all modules in any place using configure --prefix=/usr/mydir without having to tweak heavily users' config files.

Sharon And Joy

Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.