From 40f196bc8f0bf4e9931316ed789a3300d9a97d49 Mon Sep 17 00:00:00 2001
From: Toni Spets <toni.spets@iki.fi>
Date: Mon, 15 Nov 2010 20:37:02 +0200
Subject: [PATCH] Add 'devmode' ini variable for Nyerguds

---
 main.c | 23 ++++++++++++++++++++---
 main.h |  1 +
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/main.c b/main.c
index bcbc469..00985e2 100644
--- a/main.c
+++ b/main.c
@@ -216,7 +216,10 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD
     else
     {
         SetWindowPos(This->hWnd, HWND_TOPMOST, 0, 0, This->render.width, This->render.height, SWP_SHOWWINDOW);
-        SendMessage(This->hWnd, WM_WINDOWPOSCHANGED, 0, 0);
+        if(!This->devmode)
+        {
+            SendMessage(This->hWnd, WM_WINDOWPOSCHANGED, 0, 0);
+        }
 
         mouse_lock();
 
@@ -231,7 +234,7 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD
             This->render.mode.dmBitsPerPel = This->render.bpp;
         }
 
-        if(ChangeDisplaySettings(&This->render.mode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
+        if(!This->devmode && ChangeDisplaySettings(&This->render.mode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
         {
             This->render.run = FALSE;
             return DDERR_INVALIDMODE;
@@ -384,7 +387,10 @@ HRESULT __stdcall ddraw_SetCooperativeLevel(IDirectDrawImpl *This, HWND hWnd, DW
     mouse_init(hWnd);
 
     This->WndProc = (LRESULT CALLBACK (*)(HWND, UINT, WPARAM, LPARAM))GetWindowLong(This->hWnd, GWL_WNDPROC);
-    SetWindowLong(This->hWnd, GWL_WNDPROC, (LONG)WndProc);
+    if(!This->devmode)
+    {
+        SetWindowLong(This->hWnd, GWL_WNDPROC, (LONG)WndProc);
+    }
 
     return DD_OK;
 }
@@ -601,6 +607,17 @@ HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnk
         This->mhack = FALSE;
     }
 
+    GetPrivateProfileStringA("ddraw", "devmode", "FALSE", tmp, sizeof(tmp), ini_path);
+    if(tolower(tmp[0]) == 'y' || tolower(tmp[0]) == 't' || tmp[0] == '1')
+    {
+        This->devmode = TRUE;
+        This->mhack = FALSE;
+    }
+    else
+    {
+        This->devmode = FALSE;
+    }
+
     This->Ref = 0;
     ddraw_AddRef(This);
 
diff --git a/main.h b/main.h
index f218a87..b0a309f 100644
--- a/main.h
+++ b/main.h
@@ -70,6 +70,7 @@ typedef struct IDirectDrawImpl
     BOOL locked;
     BOOL adjmouse;
     BOOL mhack;
+    BOOL devmode;
 
     BOOL key_ctrl;
     BOOL key_tab;