rodecomp/Source/Render/DX9/BackBufferDX9.cpp
ragnarok-clanker 68c8d0dc48 Decompile 4 functions in Source/Render/DX9/BackBufferDX9.cpp, Source/Render/DX9/RendererDX9.cpp, ...
Batch #10843 by ragnarok-clanker: 2 byte-identical, 2 confirmed by peer review.

- fn_45506 DeviceOwnerDX9::CaptureBackBuffer: byte-identical (annotation added to existing code)
- fn_45507 DeviceOwnerDX9::RestoreBackBuffer: byte-identical (annotation added to existing code)
- fn_45508 ReleaseApplicationCursor: logic confirmed by peer review
- fn_06367 ApplyServiceOptionCursorClip: logic confirmed by peer review

Peer-reviewed-by: dori, cremane, StrawberrysherbetIX
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-11-04 18:23:10 +00:00

52 lines
1.4 KiB
C++

#include "Render/DX9/DeviceOwnerDX9.h"
// OFFSET: 0x0054BA50
// FUNCTION: fn_45506
bool DeviceOwnerDX9::CaptureBackBuffer() {
if (!this->device) {
return false;
}
if (!this->capturedBackBuffer && FAILED(this->device->CreateOffscreenPlainSurface(
this->backBufferDescription.Width, this->backBufferDescription.Height, this->backBufferDescription.Format,
D3DPOOL_SYSTEMMEM, &this->capturedBackBuffer, nullptr
))) {
return false;
}
if (FAILED(this->device->GetRenderTargetData(this->backBuffer, this->capturedBackBuffer))) {
if (this->capturedBackBuffer) {
this->capturedBackBuffer->Release();
this->capturedBackBuffer = nullptr;
}
return false;
}
return true;
}
// OFFSET: 0x005650F0
// FUNCTION: fn_02213
ScopedDeviceStateDX9 DeviceOwnerDX9::SaveState() {
return ScopedDeviceStateDX9(this->state);
}
// OFFSET: 0x0054C440
// FUNCTION: fn_45507
bool DeviceOwnerDX9::RestoreBackBuffer() {
if (!this->device || !this->capturedBackBuffer) {
return false;
}
if (FAILED(this->device->UpdateSurface(this->capturedBackBuffer, nullptr, this->backBuffer, nullptr))) {
if (this->capturedBackBuffer) {
this->capturedBackBuffer->Release();
this->capturedBackBuffer = nullptr;
}
return false;
}
return true;
}