Beispiel #1
0
        public static uint Release(D3D12MA_IUnknownImpl *pThis)
        {
            using var debugGlobalMutexLock = D3D12MA_DEBUG_GLOBAL_MUTEX_LOCK();

            uint newRefCount = Interlocked.Decrement(ref pThis->m_RefCount);

            if (newRefCount == 0)
            {
                pThis->ReleaseThis();
            }

            return(newRefCount);
        }
Beispiel #2
0
        public static int QueryInterface(D3D12MA_IUnknownImpl *pThis, [NativeTypeName("REFIID")] Guid *riid, void **ppvObject)
        {
            if (ppvObject is null)
            {
                return(E_POINTER);
            }

            if (riid->Equals(IID_IUnknown))
            {
                _ = Interlocked.Increment(ref pThis->m_RefCount);
                *ppvObject = pThis;
                return(S_OK);
            }

            *ppvObject = null;

            return(E_NOINTERFACE);
        }
 private static void ReleaseThis(D3D12MA_IUnknownImpl *pThis)
 {
     D3D12MA_ASSERT((D3D12MA_DEBUG_LEVEL > 0) && (pThis->lpVtbl == Vtbl));
     ((D3D12MA_Allocator *)pThis)->ReleaseThis();
 }
Beispiel #4
0
 public static uint AddRef(D3D12MA_IUnknownImpl *pThis)
 {
     return(Interlocked.Increment(ref pThis->m_RefCount));
 }