Ejemplo n.º 1
0
_Use_decl_annotations_ HRESULT WINAPI DXGISwapChainProxy::Present1(
    UINT sync_interval,
    UINT present_flags,
    const DXGI_PRESENT_PARAMETERS* present_parameters)
{
    hadesmem::detail::LastErrorPreserver last_error_preserver;

    HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A("Args: [%p] [%u] [%u] [%p].",
                                         this,
                                         sync_interval,
                                         present_flags,
                                         present_parameters);

    auto& callbacks = GetOnFrameDXGICallbacks();
    callbacks.Run(swap_chain_);

    last_error_preserver.Revert();
    auto const swap_chain = static_cast<IDXGISwapChain1*>(swap_chain_);
    auto const ret =
        swap_chain->Present1(sync_interval, present_flags, present_parameters);
    last_error_preserver.Update();
    HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A("Ret: [%ld].", ret);

    return ret;
}
Ejemplo n.º 2
0
ULONG WINAPI DirectInput8WProxy::Release()
{
  hadesmem::detail::LastErrorPreserver last_error_preserver;

  refs_--;
  HADESMEM_DETAIL_ASSERT(refs_ >= 0);

  if (refs_ == 0)
  {
    Cleanup();
  }

  last_error_preserver.Revert();
  auto const ret = direct_input_->Release();
  last_error_preserver.Update();

  HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A(
    "Internal refs: [%lu]. External refs: [%lld].", ret, refs_);

  if (ret == 0)
  {
    delete this;
  }

  return ret;
}
Ejemplo n.º 3
0
ULONG WINAPI DirectInput8WProxy::AddRef()
{
  refs_++;
  auto const ret = direct_input_->AddRef();
  HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A(
    "Internal refs: [%lu]. External refs: [%lld].", ret, refs_);
  return ret;
}
Ejemplo n.º 4
0
HRESULT WINAPI DXGISwapChainProxy::Present(UINT sync_interval, UINT flags)
{
    hadesmem::detail::LastErrorPreserver last_error_preserver;

    HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A(
        "Args: [%p] [%u] [%u].", this, sync_interval, flags);

    auto& callbacks = GetOnFrameDXGICallbacks();
    callbacks.Run(swap_chain_);

    last_error_preserver.Revert();
    auto const ret = swap_chain_->Present(sync_interval, flags);
    last_error_preserver.Update();
    HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A("Ret: [%ld].", ret);

    return ret;
}
Ejemplo n.º 5
0
ULONG WINAPI DXGISwapChainProxy::AddRef()
{
  refs_++;
  auto const ret = swap_chain_->AddRef();
  HADESMEM_DETAIL_TRACE_NOISY_FORMAT_A(
    "Internal refs: [%lu]. External refs: [%lld].", ret, refs_);
  return ret;
}