On Sat, 2004-12-18 at 13:13 +0000, Robert Shearman wrote:
That patch is very hackish and needlessly complicated. This patch accomplishes the same task in fewer lines (note that this is not the best solution for the problem, I am working on that):
Index: compobj.c
RCS file: /home/wine/wine/dlls/ole32/compobj.c,v retrieving revision 1.113 diff -u -p -r1.113 compobj.c --- compobj.c 14 Dec 2004 15:28:58 -0000 1.113 +++ compobj.c 18 Dec 2004 13:58:03 -0000 @@ -1107,6 +1107,8 @@ _LocalServerThread(LPVOID param) {
TRACE("Starting threader for
%s.\n",debugstr_guid(&newClass->classIdentifier));
- CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
- strcpy(pipefn,PIPEPREF);
WINE_StringFromCLSID(&newClass->classIdentifier,pipefn+strlen (PIPEPREF));
That doesn't look right, it'll create a new apartment instead of using the one that the program itself created. I don't think we should be creating new apartments that don't correspond to anything the app did, Win32 generally expects the API user to do it manually. It'll make the code more confusing, especially once thread affinity is implemented.