trace: Don't presume that COM interface pointers are freed when refcount reaches zero.
trace: Don't presume that COM interface pointers are freed when refcount reaches zero.

They often aren't.  And worst of all, some apps rely on them sticking
around.

With this change, the destruction of wrapper objects is effectively
deferred until a different interface is created on the same pointer
address, or more likely leaked.  But this is unavoidable, given there's
no generic mechanism to know for sure when the wrapped object is freed.

Fixes https://github.com/apitrace/apitrace/issues/462

apitrace/apitrace,trtt/apitrace,schulmar/apitrace,apitrace/apitrace,schulmar/apitrace,schulmar/apitrace,schulmar/apitrace,trtt/apitrace,schulmar/apitrace,trtt/apitrace,apitrace/apitrace,trtt/apitrace,trtt/apitrace,apitrace/apitrace