@@ -251,7 +251,8 @@ namespace dds
251251 HRESULT __stdcall GetBltStatus ( WRAP* This, DWORD dwFlags )
252252 {
253253 PROLOGUE;
254- HRESULT hResult = This->dds1 ->lpVtbl ->GetBltStatus ( This->dds1 , dwFlags );
254+ LPDIRECTDRAWSURFACE sf = dx::MatchFlip (This->dds1 );
255+ HRESULT hResult = sf->lpVtbl ->GetBltStatus (sf, dwFlags);
255256 EPILOGUE ( hResult );
256257 }
257258
@@ -332,8 +333,6 @@ namespace dds
332333 HRESULT __stdcall IsLost ( WRAP* This )
333334 {
334335 PROLOGUE;
335- LPDIRECTDRAWSURFACE sf = dx::MatchFlip (This->dds1 );
336- HRESULT hResult = sf->lpVtbl ->IsLost (sf);
337336 EPILOGUE ( hResult );
338337 }
339338
@@ -385,12 +384,15 @@ namespace dds
385384 old_clipper = NULL ;
386385 }
387386
388- if (dx::caps && This->dds1 == dx::fake[1 ]) { // Back (Clipper is not supposed to be set on Front with Flip)
389- if (SUCCEEDED (dx::fake[0 ]->lpVtbl ->GetClipper (dx::fake[0 ], &old_clipper))) {
387+ LPDIRECTDRAWSURFACE sf = NULL ;
388+ if (This->dds1 == dx::fake[0 ]) sf = dx::fake[1 ];
389+ else if (This->dds1 == dx::fake[1 ]) sf = dx::fake[0 ];
390+ if (sf) {
391+ if (SUCCEEDED (sf->lpVtbl ->GetClipper (sf, &old_clipper))) {
390392 Wrap (This->dd_parent , iid_to_vtbl (IID_IDirectDrawClipper), (void **)&old_clipper);
391393 }
392- dx::fake[ 0 ] ->lpVtbl ->SetClipper (dx::fake[ 0 ] , lpDDClipper);
393- if (old_clipper != NULL ) {
394+ sf ->lpVtbl ->SetClipper (sf , lpDDClipper);
395+ if (old_clipper != NULL ) {
394396 old_clipper->lpVtbl ->Release (old_clipper);
395397 }
396398 }
@@ -400,12 +402,10 @@ namespace dds
400402 HRESULT __stdcall SetColorKey ( WRAP* This, DWORD dwFlags, LPDDCOLORKEY lpDDColorKey )
401403 {
402404 PROLOGUE;
403- HRESULT hResult = This->dds1 ->lpVtbl ->SetColorKey ( This->dds1 , dwFlags, lpDDColorKey );
405+ HRESULT hResult = This->dds1 ->lpVtbl ->SetColorKey (This->dds1 , dwFlags, lpDDColorKey);
404406 INFO (" SetColorKey L:%08X H:%08X to %08X : %08X\n " , lpDDColorKey->dwColorSpaceLowValue , lpDDColorKey->dwColorSpaceHighValue , This->dds1 , dwFlags);
405- if (dx::caps) {
406- if (This->dds1 == dx::fake[0 ]) dx::fake[1 ]->lpVtbl ->SetColorKey (dx::fake[1 ], dwFlags, lpDDColorKey);
407- else if (This->dds1 == dx::fake[1 ]) dx::fake[0 ]->lpVtbl ->SetColorKey (dx::fake[0 ], dwFlags, lpDDColorKey);
408- }
407+ if (This->dds1 == dx::fake[0 ]) dx::fake[1 ]->lpVtbl ->SetColorKey (dx::fake[1 ], dwFlags, lpDDColorKey);
408+ else if (This->dds1 == dx::fake[1 ]) dx::fake[0 ]->lpVtbl ->SetColorKey (dx::fake[0 ], dwFlags, lpDDColorKey);
409409 EPILOGUE ( hResult );
410410 }
411411
@@ -432,7 +432,7 @@ namespace dds
432432 old_palette = NULL ;
433433 }
434434
435- if (This->dds1 == dx::fake[0 ]) { // Front
435+ if (This->dds1 == dx::fake[0 ]) { // Front (System wide)
436436 dx::palette = lpDDPalette;
437437 if (SUCCEEDED (dx::fake[1 ]->lpVtbl ->GetPalette (dx::fake[1 ], &old_palette))) {
438438 Wrap (This->dd_parent , iid_to_vtbl (IID_IDirectDrawPalette), (void **)&old_palette);
0 commit comments