Hi folks,
Since wine.inf is now used as the source for the default values for the registry (via rundll32), importing it absolutely needs X (whereas the older regedit method didn't when importing a .reg file). This can be a problem for people running wineinstall via ssh from a Windows box.
Is there a reason rundll32 needs user32 and cannot delayimport it?
Vincent
Vincent Béron vberon@mecano.gme.usherb.ca writes:
Since wine.inf is now used as the source for the default values for the registry (via rundll32), importing it absolutely needs X (whereas the older regedit method didn't when importing a .reg file). This can be a problem for people running wineinstall via ssh from a Windows box.
Is there a reason rundll32 needs user32 and cannot delayimport it?
It could, but it wouldn't help since all the dlls being registered import user32 too. The right way is probably to implement delayed graphics driver initialization, so that we don't connect to X until we need it. But that's a bit of work...
tir, 16.03.2004 kl. 03.20 skrev Vincent Béron:
Hi folks,
Since wine.inf is now used as the source for the default values for the registry (via rundll32), importing it absolutely needs X (whereas the older regedit method didn't when importing a .reg file). This can be a problem for people running wineinstall via ssh from a Windows box.
Is there a reason rundll32 needs user32 and cannot delayimport it?
You're not going to gain anything by letting rundll32 not import user32, because it has to load all the dlls it's telling to self-register anyway, and many of them will import user32 themselves even if rundll32 don't.
In my debian packages I go the ttydrv route, with the following patch to make ddraw.dll load and self-register without crashing under ttydrv.
--- wine-0.0.20040309.orig/dlls/ddraw/main.c +++ wine-0.0.20040309/dlls/ddraw/main.c @@ -88,6 +88,8 @@ const char *glname = SONAME_LIBGL; BOOL ret_value;
+ if (!wine_tsx11_lock_ptr) return FALSE; /* avoid crash with ttydrv */ + gl_handle = wine_dlopen(glname, RTLD_NOW, NULL, 0); if (!gl_handle) { WARN("Wine cannot find the OpenGL graphics library (%s).\n",glname); --- wine-0.0.20040309.orig/dlls/ddraw/ddraw/hal.c +++ wine-0.0.20040309/dlls/ddraw/ddraw/hal.c @@ -216,7 +216,8 @@ data.lpDD = NULL; data.ddRVal = 0; data.DestroyDriver = dd_cbs.HALDD.DestroyDriver; - data.DestroyDriver(&data); + if (data.DestroyDriver) + data.DestroyDriver(&data); }
static DWORD choose_mode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP,
Le lun 15/03/2004 à 22:23, Ove Kaaven a écrit :
tir, 16.03.2004 kl. 03.20 skrev Vincent Béron:
Hi folks,
Since wine.inf is now used as the source for the default values for the registry (via rundll32), importing it absolutely needs X (whereas the older regedit method didn't when importing a .reg file). This can be a problem for people running wineinstall via ssh from a Windows box.
Is there a reason rundll32 needs user32 and cannot delayimport it?
You're not going to gain anything by letting rundll32 not import user32, because it has to load all the dlls it's telling to self-register anyway, and many of them will import user32 themselves even if rundll32 don't.
Ok.
In my debian packages I go the ttydrv route, with the following patch to make ddraw.dll load and self-register without crashing under ttydrv.
Thank you Ove. ttydrv was an option I didn't tried yet with rundll32 (I remember wineinstall using it until a couple months ago).
Thanks also for the patch, that way I won't bang my head on why it crashes and burns :)
Vincent