Dan Kegel wrote:
Christian Costa wrote:
All the static CRITICAL_SECTIONs in Wine DLLs have names. The only unnamed ones are those that are initialized at runtime.
It is what I said! No? :-)
I guess I missed part of what you said, sorry.
To give these a name, we'd either have to convert them to static initialization, or change InitializeCriticalSection to somehow generate a name from the caller's program counter.
What about writing a new macro that initializes the name in the CRITICAL_SECTION struct. ................. InitializeCriticalSection(&crit); SET_CRITICAL_SECTION_NAME(&crit,"name");
Hmm. Seems to be the Wine DLL sources should try to avoid stuff that doesn't compile under Windows. That said, we could provide a header file that defined SET_CRITICAL_SECTION_NAME in Windows, and made it do nothing.
If CRITICAL_SECTION_INIT compiles why not SET_CRITICAL_SECTION_NAME ?
Furthermore, we could be real sneaky, and make that header file turn InitializeCriticalSection into a macro that called the real InitializeCriticalSection, then called SET_CRITICAL_SECTION_NAME, so no source changes would be needed to get the name in there, maybe.
In that case our InitializeCriticalSection macro would have one more parameter (the name) than the real function. I personaly think this will confused people more than an optional (but preferable for debugging) macro.
Christian.