Hi Dmitry,
regarding the DDE related patch that Alexandre committed a couple of days ago from codeweavers' tree (http://cvs.winehq.com/patch.py?root=/home/winehq/opt/cvs-commit&id=8293), I have a couple of questions:
1/ diff -u wine/dlls/user/dde/server.c:1.11 wine/dlls/user/dde/server.c:1.12 --- wine/dlls/user/dde/server.c:1.11 Sat May 24 10:42:52 2003 +++ wine/dlls/user/dde/server.c Sat May 24 10:42:52 2003 @@ -101,7 +101,7 @@ if (DdeCmpStringHandles(hszItem, pLink->hszItem) == 0) { hDdeData = WDML_InvokeCallback(pInstance, XTYP_ADVREQ, pLink->uFmt, pLink->hConv, - hszTopic, hszItem, 0, count--, 0); + hszTopic, hszItem, 0, 0, 0);
if (hDdeData == (HDDEDATA)CBR_BLOCK) { why did you remove the count-- reference as dwData1 ? MSDN states: (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui...) Specifies the count, in the low-order word, of XTYP_ADVREQ transactions that remain to be processed on the same topic, item, and format name set within the context of the current call to the DdePostAdvise function. The count is zero if the current XTYP_ADVREQ transaction is the last one. A server can use this count to determine whether to create an HDATA_APPOWNED data handle for the advise data.
2/ Index: wine/dlls/user/dde/server.c diff -u wine/dlls/user/dde/server.c:1.11 wine/dlls/user/dde/server.c:1.12 --- wine/dlls/user/dde/server.c:1.11 Sat May 24 10:42:52 2003 +++ wine/dlls/user/dde/server.c Sat May 24 10:42:52 2003 @@ -570,7 +581,7 @@ break; default: { - HGLOBAL hMem = WDML_DataHandle2Global(hDdeData, FALSE, FALSE, FALSE, FALSE); + HGLOBAL hMem = WDML_DataHandle2Global(hDdeData, TRUE, TRUE, FALSE, FALSE); if (!PostMessageA(pConv->hwndClient, WM_DDE_DATA, (WPARAM)pConv->hwndServer, ReuseDDElParam(pXAct->lParam, WM_DDE_REQUEST, WM_DDE_DATA, (UINT)hMem, (UINT)pXAct->atom)))
which did you change fResponse (or fAckReq) and fRelease to TRUE ? since the server side isn't ready to handle the ack messages the client will in such cases, I'm not sure it's worth it. Moreover, it will complexify the memory management and create more leaks than already exist.
A+