From 341d06f997242cfd6ce841ab5af514a828521724 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 30 May 2025 17:41:06 +0200 Subject: [PATCH] Pass the image data to the textures (#202) --- miniwin/src/d3drm/d3drm.cpp | 6 ++---- miniwin/src/d3drm/d3drmtexture.cpp | 13 +++++++++++++ miniwin/src/internal/d3drmtexture_impl.h | 5 +++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/miniwin/src/d3drm/d3drm.cpp b/miniwin/src/d3drm/d3drm.cpp index f7044554..73ef111a 100644 --- a/miniwin/src/d3drm/d3drm.cpp +++ b/miniwin/src/d3drm/d3drm.cpp @@ -152,16 +152,14 @@ HRESULT Direct3DRMImpl::CreateDeviceFromSurface( HRESULT Direct3DRMImpl::CreateTexture(D3DRMIMAGE* image, IDirect3DRMTexture2** outTexture) { - MINIWIN_NOT_IMPLEMENTED(); - *outTexture = static_cast(new Direct3DRMTextureImpl); + *outTexture = static_cast(new Direct3DRMTextureImpl(image)); return DD_OK; } HRESULT Direct3DRMImpl::CreateTextureFromSurface(LPDIRECTDRAWSURFACE surface, IDirect3DRMTexture2** outTexture) { - MINIWIN_NOT_IMPLEMENTED(); - *outTexture = static_cast(new Direct3DRMTextureImpl); + *outTexture = static_cast(new Direct3DRMTextureImpl(surface)); return DD_OK; } diff --git a/miniwin/src/d3drm/d3drmtexture.cpp b/miniwin/src/d3drm/d3drmtexture.cpp index 063eba6b..77c5e391 100644 --- a/miniwin/src/d3drm/d3drmtexture.cpp +++ b/miniwin/src/d3drm/d3drmtexture.cpp @@ -1,6 +1,16 @@ #include "d3drmtexture_impl.h" #include "miniwin.h" +Direct3DRMTextureImpl::Direct3DRMTextureImpl(D3DRMIMAGE* image) +{ + MINIWIN_NOT_IMPLEMENTED(); +} + +Direct3DRMTextureImpl::Direct3DRMTextureImpl(IDirectDrawSurface* surface) : m_surface(surface) +{ + MINIWIN_NOT_IMPLEMENTED(); +} + HRESULT Direct3DRMTextureImpl::QueryInterface(const GUID& riid, void** ppvObject) { if (SDL_memcmp(&riid, &IID_IDirect3DRMTexture2, sizeof(GUID)) == 0) { @@ -14,6 +24,9 @@ HRESULT Direct3DRMTextureImpl::QueryInterface(const GUID& riid, void** ppvObject HRESULT Direct3DRMTextureImpl::Changed(BOOL pixels, BOOL palette) { + if (!m_surface) { + return DDERR_GENERIC; + } MINIWIN_NOT_IMPLEMENTED(); return DD_OK; } diff --git a/miniwin/src/internal/d3drmtexture_impl.h b/miniwin/src/internal/d3drmtexture_impl.h index cb06c368..1cc19384 100644 --- a/miniwin/src/internal/d3drmtexture_impl.h +++ b/miniwin/src/internal/d3drmtexture_impl.h @@ -3,6 +3,11 @@ #include "d3drmobject_impl.h" struct Direct3DRMTextureImpl : public Direct3DRMObjectBaseImpl { + Direct3DRMTextureImpl(D3DRMIMAGE* image); + Direct3DRMTextureImpl(IDirectDrawSurface* surface); HRESULT QueryInterface(const GUID& riid, void** ppvObject) override; HRESULT Changed(BOOL pixels, BOOL palette) override; + +private: + IDirectDrawSurface* m_surface = nullptr; };