HRESULT myIDirect3DDevice9::Present(CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion) { copyDataToMemory(m_pIDirect3DDevice9); // call original routine HRESULT hres = m_pIDirect3DDevice9->Present( pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); return (hres); }
HRESULT __stdcall myIDirect3DDevice8::Present(CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion) { // we may want to draw own things here before flipping surfaces // ... draw own stuff ... // call original routine copyDataToMemory(m_pIDirect3DDevice8); HRESULT hres = m_pIDirect3DDevice8->Present( pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); return (hres); }
NEXT CASE(CODECOPY) { ON_OP(); m_copyMemSize = toInt63(m_SP[2]); updateMem(memNeed(m_SP[0], m_SP[2])); updateIOGas(); copyDataToMemory({m_pCode, m_codeSize}, m_SP); }
NEXT CASE(CALLDATACOPY) { ON_OP(); m_copyMemSize = toInt63(m_SP[2]); updateMem(memNeed(m_SP[0], m_SP[2])); updateIOGas(); bytesConstRef data{m_message->input_data, m_message->input_size}; copyDataToMemory(data, m_SP); }
NEXT CASE(RETURNDATACOPY) { ON_OP(); if (m_rev < EVMC_BYZANTIUM) throwBadInstruction(); bigint const endOfAccess = bigint(m_SP[1]) + bigint(m_SP[2]); if (m_returnData.size() < endOfAccess) throwBufferOverrun(endOfAccess); m_copyMemSize = toInt63(m_SP[2]); updateMem(memNeed(m_SP[0], m_SP[2])); updateIOGas(); copyDataToMemory(&m_returnData, m_SP); }