Nikolay Sivov (@nsivov) commented about dlls/d2d1/device.c:
render_target->device = device; ID2D1Device1_AddRef(&render_target->device->ID2D1Device1_iface);
- ID2D1Factory_QueryInterface(render_target->factory, &IID_ID2D1Multithread, (void **)&multithread);
- if (ID2D1Multithread_GetMultithreadProtected(multithread)) {
render_target->cs = d2d_factory_mt_get_cs(multithread);
- } else {
render_target->cs = NULL;
- }
- ID2D1Multithread_Release(multithread);
I would store "struct d2d_factory *" instead, and then you can have some helper to leave/enter with it.