DXGL r162 - Code Review

Jump to navigation Jump to search
Repository:DXGL
Revision:r161‎ | r162 | r163 >
Date:21:59, 4 June 2012
Author:admin
Status:new
Tags:
Comment:
Stop Allegro apps from getting stuck
Modified paths:
  • /ddraw/glRenderer.cpp (modified) (history)

Diff [purge]

Index: ddraw/glRenderer.cpp
@@ -246,7 +246,11 @@
247247 wndclasscreated = true;
248248 }
249249 if(hDC) ReleaseDC(hRenderWnd,hDC);
250 - if(hRenderWnd) DestroyWindow(hRenderWnd);
 250+ if(hRenderWnd)
 251+ {
 252+ SetWindowLongPtr(hRenderWnd,GWLP_USERDATA,0);
 253+ PostMessage(hRenderWnd,WM_CLOSE,0,0);
 254+ }
251255 RECT rectRender;
252256 GetClientRect(hWnd,&rectRender);
253257 if(hWnd)
@@ -673,10 +677,12 @@
674678 }
675679 wglMakeCurrent(NULL,NULL);
676680 wglDeleteContext(hRC);
 681+ hRC = NULL;
677682 };
678683 if(hDC) ReleaseDC(hRenderWnd,hDC);
679684 hDC = NULL;
680 - DestroyWindow(hRenderWnd);
 685+ SetWindowLongPtr(hRenderWnd,GWLP_USERDATA,0);
 686+ PostMessage(hRenderWnd,WM_CLOSE,0,0);
681687 hRenderWnd = NULL;
682688 SetEvent(busy);
683689 dead = true;
@@ -1468,9 +1474,6 @@
14691475 case WM_CREATE:
14701476 SetWindowLongPtr(hwnd,GWLP_USERDATA,(LONG_PTR)this);
14711477 return 0;
1472 - case WM_DESTROY:
1473 - PostQuitMessage(0);
1474 - return 0;
14751478 case WM_SETCURSOR:
14761479 hParent = GetParent(hwnd);
14771480 cursor = (HCURSOR)GetClassLong(hParent,GCL_HCURSOR);
@@ -1524,6 +1527,10 @@
15251528 LRESULT CALLBACK RenderWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
15261529 {
15271530 glRenderer* instance = reinterpret_cast<glRenderer*>(GetWindowLongPtr(hwnd,GWLP_USERDATA));
 1531+ if(msg == WM_DESTROY)
 1532+ {
 1533+ return 0;
 1534+ }
15281535 if(!instance)
15291536 {
15301537 if(msg == WM_CREATE)