st/nine: Implement IPresent version 1.2
authorPatrick Rudolph <siro@das-labor.org>
Sat, 27 Feb 2016 08:58:19 +0000 (09:58 +0100)
committerAxel Davy <axel.davy@ens.fr>
Wed, 18 May 2016 21:37:14 +0000 (23:37 +0200)
Implement presentation interface version 1.2:
* ID3DPresent_ResolutionMismatch
    Poll for resolution mismatch.
    A third party app might have changed resolution,
    which requires a device reset.
* ID3DPresent_CreateThread
    Create a thread in WINE to allow nine to use Windows API
    functions. Required for multi-threaded presentation.
    In single-threaded presentation mode the calling thread is
    already known to WINE.
* ID3DPresent_WaitForThread
    Wait for a wine thread to terminate.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
include/d3dadapter/present.h

index 162f703e3205b801b601ee6f4758b9ebd336aa5c..187843f892aef21eb6bd88fa937e59c9a77f641f 100644 (file)
@@ -71,6 +71,10 @@ typedef struct ID3DPresentVtbl
     HRESULT (WINAPI *GetWindowInfo)(ID3DPresent *This,  HWND hWnd, int *width, int *height, int *depth);
     /* Available since version 1.1 */
     BOOL (WINAPI *GetWindowOccluded)(ID3DPresent *This);
+    /* Available since version 1.2 */
+    BOOL (WINAPI *ResolutionMismatch)(ID3DPresent *This);
+    HANDLE (WINAPI *CreateThread)(ID3DPresent *This, void *pThreadfunc, void *pParam);
+    BOOL (WINAPI *WaitForThread)(ID3DPresent *This, HANDLE thread);
 } ID3DPresentVtbl;
 
 struct ID3DPresent
@@ -99,6 +103,9 @@ struct ID3DPresent
 #define ID3DPresent_SetGammaRamp(p,a,b) (p)->lpVtbl->SetGammaRamp(p,a,b)
 #define ID3DPresent_GetWindowInfo(p,a,b,c,d) (p)->lpVtbl->GetWindowSize(p,a,b,c,d)
 #define ID3DPresent_GetWindowOccluded(p) (p)->lpVtbl->GetWindowOccluded(p)
+#define ID3DPresent_ResolutionMismatch(p) (p)->lpVtbl->ResolutionMismatch(p)
+#define ID3DPresent_CreateThread(p,a,b) (p)->lpVtbl->CreateThread(p,a,b)
+#define ID3DPresent_WaitForThread(p,a) (p)->lpVtbl->WaitForThread(p,a)
 
 typedef struct ID3DPresentGroupVtbl
 {