From c434e7421627e418ceade8f9afea2bfcbe636bba Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Sun, 18 Nov 2018 13:31:00 +0100
Subject: [PATCH] support GetColorKey

---
 src/surface.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/surface.c b/src/surface.c
index 2ae190e..ce56406 100644
--- a/src/surface.c
+++ b/src/surface.c
@@ -696,7 +696,16 @@ HRESULT __stdcall ddraw_surface_GetClipper(IDirectDrawSurfaceImpl *This, LPDIREC
 
 HRESULT __stdcall ddraw_surface_GetColorKey(IDirectDrawSurfaceImpl *This, DWORD flags, LPDDCOLORKEY colorKey)
 {
-    printf("IDirectDrawSurface::GetColorKey(This=%p, ...) ???\n", This);
+#if _DEBUG_X
+    printf("DirectDrawSurface::GetColorKey(This=%p, flags=0x%08X, colorKey=%p) ???\n", This, flags, colorKey);
+#endif
+
+    if (colorKey)
+    {
+        colorKey->dwColorSpaceHighValue = This->colorKey.dwColorSpaceHighValue;
+        colorKey->dwColorSpaceLowValue = This->colorKey.dwColorSpaceLowValue;
+    }
+
     return DD_OK;
 }
 
@@ -848,8 +857,11 @@ HRESULT __stdcall ddraw_surface_SetColorKey(IDirectDrawSurfaceImpl *This, DWORD
     }
 #endif
 
-    This->colorKey.dwColorSpaceHighValue = colorKey->dwColorSpaceHighValue;
-    This->colorKey.dwColorSpaceLowValue = colorKey->dwColorSpaceLowValue;
+    if (colorKey)
+    {
+        This->colorKey.dwColorSpaceHighValue = colorKey->dwColorSpaceHighValue;
+        This->colorKey.dwColorSpaceLowValue = colorKey->dwColorSpaceLowValue;
+    }
 
     return DD_OK;
 }