]> git.cworth.org Git - apitrace/commitdiff
Process window events on d3dretrace.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 3 Aug 2012 18:56:23 +0000 (19:56 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 3 Aug 2012 18:56:23 +0000 (19:56 +0100)
retrace/d3dretrace.hpp
retrace/d3dretrace.py
retrace/d3dretrace_ws.cpp

index c1bc0cd592e7b3f82e5955d1ee34c13e03154cf0..b552c0bf3935a609d06fe9be07f34bf4095897ec 100644 (file)
@@ -53,6 +53,9 @@ createWindow(int width, int height);
 void
 resizeWindow(HWND hWnd, int width, int height);
 
+bool
+processEvents(void);
+
 
 } /* namespace d3dretrace */
 
index aed586ede9f9c03827c5cef04656d6303bf7a424..ddd37b95a8b7c3d4b3ca34e1b287846fed5d6f8a 100644 (file)
@@ -72,6 +72,10 @@ class D3DRetracer(Retracer):
 
         Retracer.invokeInterfaceMethod(self, interface, method)
 
+        # process events after presents
+        if method.name == 'Present':
+            print r'    d3dretrace::processEvents();'
+
         # check errors
         if str(method.type) == 'HRESULT':
             print r'    if (FAILED(_result)) {'
index b8c29e85078bc69d1eb620eb2653fc85231f4ef5..42bd0abef159cd068a00d7cacbbee42050060b65 100644 (file)
@@ -37,6 +37,13 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
     MINMAXINFO *pMMI;
     switch (uMsg) {
+    case WM_KEYDOWN:
+        switch (wParam) {
+        case VK_ESCAPE:
+            PostMessage(hWnd, WM_CLOSE, 0, 0);
+            break;
+        }
+        break;
     case WM_GETMINMAXINFO:
         // Allow to create a window bigger than the desktop
         pMMI = (MINMAXINFO *)lParam;
@@ -45,6 +52,9 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
         pMMI->ptMaxTrackSize.x = 60000;
         pMMI->ptMaxTrackSize.y = 60000;
         break;
+    case WM_CLOSE:
+        exit(0);
+        break;
     default:
         break;
     }
@@ -121,5 +131,21 @@ resizeWindow(HWND hWnd, int width, int height) {
 }
 
 
+bool
+processEvents(void) {
+    MSG uMsg;
+    while (PeekMessage(&uMsg, NULL, 0, 0, PM_REMOVE)) {
+        if (uMsg.message == WM_QUIT) {
+            return false;
+        }
+
+        if (!TranslateAccelerator(uMsg.hwnd, NULL, &uMsg)) {
+            TranslateMessage(&uMsg);
+            DispatchMessage(&uMsg);
+        }
+    }
+    return true;
+}
+
 
 } /* namespace d3dretrace */