On 05/03/11 15:56, Bradley Grainger wrote: > The current code is incorrect because InitializeCriticalSection must be > called on a CRITICAL_SECTION for Windows to consider it valid; it's not > sufficient to just zero out the fields of the structure. > > There's no built-in analogue to G_STATIC_MUTEX_INIT on Windows, but now that > I've looked through the glib code a little, I see that it could be written in > the same way glib does it (i.e., initialise static mutexes on demand the > first time they're used by taking a different global mutex that protects > static mutex initialisation). > > If static mutexes could be avoided, it could make cross-platform portability > easier. (And there might be a minor performance gain from not having to enter > a global mutex in order to initialise static mutexes.)
Ah, you're right. I was copying from cairo and forgot that we initialize static mutexes there. Now, you may notice that as it stands, right now we don't use any static mutex. So, I can just go ahead an initialize them all. But I was planning on using static mutexes to make static data initialization (like hb_language stuff) threadsafe. I think I need to study the glib code. It's not clear to me how to initialize the global mutex initialization mutex safely :). I'll get back to you. behdad _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
