-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This patch + implements LockServer + implements DllCanUnloadNow + add some needed calls to LockModule() & UnlockModule() If it didn't get into cvs i want a mail with the cause. - -- Christian Gmeiner - student of computer science http://dxr3plugin.sf.net http://itb04.ath.cx http://javamill.ath.cx -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFECFi9Dwe2AbwGBA8RApDQAJ4nCMpbbOeWBTi/x1xV36MrBaKoNgCfRTG8 54cyjapBkvdO9DUkNP41k3k= =HK0l -----END PGP SIGNATURE----- Index: dlls/mlang/mlang.c =================================================================== RCS file: /home/wine/wine/dlls/mlang/mlang.c,v retrieving revision 1.25 diff -u -r1.25 mlang.c --- dlls/mlang/mlang.c 6 Dec 2005 10:39:43 -0000 1.25 +++ dlls/mlang/mlang.c 3 Mar 2006 08:47:38 -0000 @@ -453,6 +453,21 @@ static void fill_cp_info(const struct mlang_data *ml_data, UINT index, MIMECPINFO *mime_cp_info); +static LONG dll_count; + +/* + * Dll lifetime tracking declaration + */ +static void LockModule(void) +{ + InterlockedIncrement(&dll_count); +} + +static void UnlockModule(void) +{ + InterlockedDecrement(&dll_count); +} + BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) { switch(fdwReason) { @@ -709,6 +724,7 @@ { TRACE("Destroying %p\n", This); HeapFree(GetProcessHeap(), 0, This); + UnlockModule(); } return ref; @@ -735,8 +751,11 @@ static HRESULT WINAPI MLANGCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - FIXME("(%p)->(%d),stub!\n",This,dolock); + if (dolock) + LockModule(); + else + UnlockModule(); + return S_OK; } @@ -2281,6 +2300,9 @@ mlang->ref = 1; *ppObj = (LPVOID) mlang; TRACE("returning %p\n", mlang); + + LockModule(); + return S_OK; } @@ -2288,8 +2310,7 @@ HRESULT WINAPI DllCanUnloadNow(void) { - FIXME("\n"); - return S_FALSE; + return dll_count == 0 ? S_OK : S_FALSE; } HRESULT WINAPI GetGlobalFontLinkObject(void)
participants (1)
-
Christian Gmeiner