Changeset 4136 for trunk/src


Ignore:
Timestamp:
Aug 31, 2000, 7:57:10 PM (25 years ago)
Author:
sandervl
Message:

QueryInterface fix

Location:
trunk/src/ddraw
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ddraw/OS2D3D.CPP

    r2174 r4136  
    1 /* $Id: OS2D3D.CPP,v 1.9 1999-12-21 01:28:15 hugh Exp $ */
     1/* $Id: OS2D3D.CPP,v 1.10 2000-08-31 17:57:09 sandervl Exp $ */
    22
    33/*
     
    55 *
    66 * Copyright 1998 Sander van Leeuwen
     7 *
     8 * Note: MUST use DDraw3D_GetThisPtr macro to access DirectDraw object!
    79 *
    810 * Project Odin Software License can be found in LICENSE.TXT
     
    4446ULONG __stdcall D3DAddRef(THIS This)
    4547{
    46  OS2IDirectDraw *me = (OS2IDirectDraw *)This;
     48 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
    4749
    4850  dprintf(("DDRAW: OS2IDirectDraw::AddRef %d\n", me->Referenced+1));
     
    5355ULONG __stdcall D3DRelease(THIS This)
    5456{
    55  OS2IDirectDraw *me = (OS2IDirectDraw *)This;
     57 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
    5658
    5759  dprintf(("DDRAW: OS2IDirectDraw::Release %d\n", me->Referenced-1));
     
    7577HRESULT __stdcall D3DInitialize(THIS This, REFIID)
    7678{
     79 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
     80
    7781  dprintf(("DDRAW: D3DInitialize\n"));
    7882  return(D3D_OK);
     
    8286HRESULT __stdcall D3DEnumDevices(THIS This, LPD3DENUMDEVICESCALLBACK, LPVOID)
    8387{
     88 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
     89
    8490  dprintf(("DDRAW: D3DEnumDevices\n"));
    8591  return(D3D_OK);
     
    8995HRESULT __stdcall D3DCreateLight(THIS This, LPDIRECT3DLIGHT*, IUnknown*)
    9096{
     97 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
     98
    9199  dprintf(("DDRAW: D3DCreateLight\n"));
    92100  return(D3D_OK);
     
    96104HRESULT __stdcall D3DCreateMaterial(THIS This, LPDIRECT3DMATERIAL*, IUnknown*)
    97105{
     106 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
     107
    98108  dprintf(("DDRAW: D3DCreateMaterial\n"));
    99109  return(D3D_OK);
     
    103113HRESULT __stdcall D3DCreateViewport(THIS This, LPDIRECT3DVIEWPORT*, IUnknown*)
    104114{
     115 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
     116
    105117  dprintf(("DDRAW: D3DCreateViewport\n"));
    106118  return(D3D_OK);
     
    110122HRESULT __stdcall D3DFindDevice(THIS This, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT)
    111123{
     124 OS2IDirectDraw *me = DDraw3D_GetThisPtr(This);
     125
    112126  dprintf(("DDRAW: D3DCreateFindDevice\n"));
    113127  return(D3D_OK);
  • trunk/src/ddraw/OS2DDRAW.CPP

    r4135 r4136  
    1 /* $Id: OS2DDRAW.CPP,v 1.22 2000-08-31 12:48:41 sandervl Exp $ */
     1/* $Id: OS2DDRAW.CPP,v 1.23 2000-08-31 17:57:09 sandervl Exp $ */
    22
    33/*
     
    243243//******************************************************************************
    244244//******************************************************************************
    245 HRESULT __stdcall DrawQueryInterface(THIS This, REFIID riid, LPVOID FAR * ppvObj)
     245HRESULT WIN32API DrawQueryInterface(THIS This, REFIID riid, LPVOID FAR * ppvObj)
    246246{
    247247 OS2IDirectDraw *me = (OS2IDirectDraw *)This;
    248   #ifdef DEBUG
    249     dprintf(("DDRAW: OS2IDirectDraw::QueryInterface\n"));
    250   #endif
     248
     249  dprintf(("DDRAW: OS2IDirectDraw::QueryInterface %x %x %x", This, riid, ppvObj));
    251250
    252251  *ppvObj = NULL;
     
    256255     !IsEqualGUID(riid, IID_IDirectDraw2) &&
    257256     !IsEqualGUID(riid, IID_IDirectDraw4) &&
    258      !IsEqualGUID(riid, IID_IDirect3D) &&
    259      !IsEqualGUID(riid, IID_IUnknown))
     257     !IsEqualGUID(riid, IID_IDirect3D))
     258//     !IsEqualGUID(riid, IID_IUnknown))
    260259  return E_NOINTERFACE;
    261260
    262 #if 1
    263   if(IsEqualGUID(riid, IID_IUnknown)) {
    264      *ppvObj = (LPVOID) This;
    265      me->lpVtbl2 = me->lpVtbl;
    266   }
    267   else
     261  // ToDo Better way of returning differnent interfaces for same class
    268262  if(IsEqualGUID(riid, IID_IDirect3D))
    269263  {
    270      me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl3D;
    271      *ppvObj = (LPVOID) &me->lpVtbl2;
    272   }
    273   else
    274   {
    275     if(IsEqualGUID(riid, IID_IDirectDraw4))
    276     {
    277       dprintf(("DDRAW: IID_IDirectDraw4 Interface\n"));
    278       me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl4;
    279       *ppvObj = (LPVOID) &me->lpVtbl2;
    280     }
    281     else
    282     {
    283       if(IsEqualGUID(riid, IID_IDirectDraw2))
    284       {
    285         dprintf(("DDRAW: IID_IDirectDraw2 Interface\n"));
    286         me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl2;
    287         *ppvObj = (LPVOID) &me->lpVtbl2;
    288       }
    289       else
    290       {
    291         dprintf(("DDRAW: IID_IDirectDraw Interface\n"));
    292         me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl;
    293         *ppvObj = (LPVOID) &me->lpVtbl;
    294       }
    295     }
    296   }
    297   DrawAddRef(This);
    298 #else
    299   // ToDo Better way of returning differnent intterfaces for same class
    300   if(IsEqualGUID(riid, IID_IDirect3D))
    301   {
    302     me->lpVtbl = (IDirectDraw4Vtbl *) &me->Vtbl3D;
     264    me->lpVtbl3D         = &me->Vtbl3D;
     265    me->lpVtbl3D2        = me->lpVtbl3D;
     266    me->pdwUnknownData3D = me->pdwUnknownData;
     267    *ppvObj = (LPVOID)&me->lpVtbl3D;
     268    DrawAddRef(This);
     269    return DD_OK;
    303270  }
    304271  else
     
    326293  *ppvObj = This;
    327294  DrawAddRef(This);
    328 #endif
    329 
    330   return(DD_OK);
    331 }
    332 //******************************************************************************
    333 //******************************************************************************
    334 ULONG __stdcall DrawAddRef(THIS This)
     295
     296  return(DD_OK);
     297}
     298//******************************************************************************
     299//******************************************************************************
     300ULONG WIN32API DrawAddRef(THIS This)
    335301{
    336302 OS2IDirectDraw *me = (OS2IDirectDraw *)This;
     
    344310//******************************************************************************
    345311//******************************************************************************
    346 ULONG __stdcall DrawRelease(THIS This)
     312ULONG WIN32API DrawRelease(THIS This)
    347313{
    348314 OS2IDirectDraw *me = (OS2IDirectDraw *)This;
     
    373339//******************************************************************************
    374340//******************************************************************************
    375 HRESULT __stdcall DrawCompact(THIS)
     341HRESULT WIN32API DrawCompact(THIS)
    376342{
    377343  #ifdef DEBUG
     
    383349//******************************************************************************
    384350//******************************************************************************
    385 HRESULT __stdcall DrawCreateClipper(THIS This, DWORD, LPDIRECTDRAWCLIPPER FAR *lplpDD, IUnknown FAR * )
     351HRESULT WIN32API DrawCreateClipper(THIS This, DWORD, LPDIRECTDRAWCLIPPER FAR *lplpDD, IUnknown FAR * )
    386352{
    387353 OS2IDirectDraw        *me = (OS2IDirectDraw *)This;
     
    416382//******************************************************************************
    417383//******************************************************************************
    418 HRESULT __stdcall DrawCreatePalette(THIS This, DWORD dwFlags,
     384HRESULT WIN32API DrawCreatePalette(THIS This, DWORD dwFlags,
    419385            LPPALETTEENTRY lpColorTable,
    420386            LPDIRECTDRAWPALETTE FAR *lplpDD,
     
    476442//******************************************************************************
    477443//******************************************************************************
    478 HRESULT __stdcall DrawCreateSurface(THIS This, LPDDSURFACEDESC lpDDSurfaceDesc,
     444HRESULT WIN32API DrawCreateSurface(THIS This, LPDDSURFACEDESC lpDDSurfaceDesc,
    479445            LPDIRECTDRAWSURFACE FAR *lplpDD,
    480446            IUnknown FAR *pUnkOuter)
     
    522488//******************************************************************************
    523489//******************************************************************************
    524 HRESULT __stdcall DrawCreateSurface4(THIS This, LPDDSURFACEDESC2 lpDDSurfaceDesc2,
     490HRESULT WIN32API DrawCreateSurface4(THIS This, LPDDSURFACEDESC2 lpDDSurfaceDesc2,
    525491            LPDIRECTDRAWSURFACE4 FAR *lplpDD,
    526492            IUnknown FAR *pUnkOuter)
     
    569535//******************************************************************************
    570536//******************************************************************************
    571 HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * )
     537HRESULT WIN32API DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * )
    572538{
    573539  #ifdef DEBUG
     
    578544//******************************************************************************
    579545//******************************************************************************
    580 HRESULT __stdcall DrawDuplicateSurface4(THIS, LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * )
     546HRESULT WIN32API DrawDuplicateSurface4(THIS, LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * )
    581547{
    582548  #ifdef DEBUG
     
    588554//******************************************************************************
    589555//******************************************************************************
    590 HRESULT __stdcall DrawEnumDisplayModes( THIS This,
     556HRESULT WIN32API DrawEnumDisplayModes( THIS This,
    591557                                        DWORD dwFlags,
    592558                                        LPDDSURFACEDESC lpDDSurfaceDesc,
     
    882848//******************************************************************************
    883849//******************************************************************************
    884 HRESULT __stdcall DrawEnumDisplayModes4(THIS This, DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc2,
     850HRESULT WIN32API DrawEnumDisplayModes4(THIS This, DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc2,
    885851                                       LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpDDEnumModesCallback2)
    886852{
     
    897863//******************************************************************************
    898864//******************************************************************************
    899 HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK )
     865HRESULT WIN32API DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK )
    900866{
    901867  #ifdef DEBUG
     
    907873//******************************************************************************
    908874//******************************************************************************
    909 HRESULT __stdcall DrawEnumSurfaces4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 )
     875HRESULT WIN32API DrawEnumSurfaces4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 )
    910876{
    911877  #ifdef DEBUG
     
    917883//******************************************************************************
    918884//******************************************************************************
    919 HRESULT __stdcall DrawFlipToGDISurface(THIS)
     885HRESULT WIN32API DrawFlipToGDISurface(THIS)
    920886{
    921887  #ifdef DEBUG
     
    927893//******************************************************************************
    928894//******************************************************************************
    929 HRESULT __stdcall DrawGetCaps(THIS This, LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps)
     895HRESULT WIN32API DrawGetCaps(THIS This, LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps)
    930896{
    931897 DWORD dwSize;
     
    11911157//******************************************************************************
    11921158//******************************************************************************
    1193 HRESULT __stdcall DrawGetDisplayMode(THIS This, LPDDSURFACEDESC lpDDSurfaceDesc)
     1159HRESULT WIN32API DrawGetDisplayMode(THIS This, LPDDSURFACEDESC lpDDSurfaceDesc)
    11941160{
    11951161  OS2IDirectDraw        *me = (OS2IDirectDraw *)This;
     
    13061272//******************************************************************************
    13071273//******************************************************************************
    1308 HRESULT __stdcall DrawGetDisplayMode4(THIS This, LPDDSURFACEDESC2 lpDDSurfaceDesc2)
     1274HRESULT WIN32API DrawGetDisplayMode4(THIS This, LPDDSURFACEDESC2 lpDDSurfaceDesc2)
    13091275{
    13101276  OS2IDirectDraw        *me = (OS2IDirectDraw *)This;
     
    14211387//******************************************************************************
    14221388//******************************************************************************
    1423 HRESULT __stdcall DrawGetFourCCCodes(THIS This, LPDWORD lpNumCodes, LPDWORD lpCodes)
     1389HRESULT WIN32API DrawGetFourCCCodes(THIS This, LPDWORD lpNumCodes, LPDWORD lpCodes)
    14241390{
    14251391//  DWORD dwFCC[MAX_FOURCC_CODES] = {FOURCC_LUT8,FOURCC_R565,FOURCC_RGB3,FOURCC_YUY2};
     
    14481414//******************************************************************************
    14491415//******************************************************************************
    1450 HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *)
     1416HRESULT WIN32API DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *)
    14511417{
    14521418  #ifdef DEBUG
     
    14581424//******************************************************************************
    14591425//******************************************************************************
    1460 HRESULT __stdcall DrawGetGDISurface4(THIS, LPDIRECTDRAWSURFACE4 FAR *)
     1426HRESULT WIN32API DrawGetGDISurface4(THIS, LPDIRECTDRAWSURFACE4 FAR *)
    14611427{
    14621428  #ifdef DEBUG
     
    14681434//******************************************************************************
    14691435//******************************************************************************
    1470 HRESULT __stdcall DrawGetMonitorFrequency(THIS This, LPDWORD lpdwFreq)
     1436HRESULT WIN32API DrawGetMonitorFrequency(THIS This, LPDWORD lpdwFreq)
    14711437{
    14721438  ULONG ulTime1, ulTime2;
     
    15071473//******************************************************************************
    15081474//******************************************************************************
    1509 HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD lpdwLine)
     1475HRESULT WIN32API DrawGetScanLine(THIS, LPDWORD lpdwLine)
    15101476{
    15111477  BOOL bVertBlank;
     
    15311497//******************************************************************************
    15321498//******************************************************************************
    1533 HRESULT __stdcall DrawGetVerticalBlankStatus(THIS , LPBOOL lpbIsInVB)
     1499HRESULT WIN32API DrawGetVerticalBlankStatus(THIS , LPBOOL lpbIsInVB)
    15341500{
    15351501  int rc;
     
    15591525//******************************************************************************
    15601526//******************************************************************************
    1561 HRESULT __stdcall DrawInitialize(THIS, GUID FAR *)
     1527HRESULT WIN32API DrawInitialize(THIS, GUID FAR *)
    15621528{
    15631529  #ifdef DEBUG
     
    15691535//******************************************************************************
    15701536//******************************************************************************
    1571 HRESULT __stdcall DrawRestoreDisplayMode(THIS)
     1537HRESULT WIN32API DrawRestoreDisplayMode(THIS)
    15721538{
    15731539  #ifdef DEBUG
     
    15791545//******************************************************************************
    15801546//******************************************************************************
    1581 HRESULT __stdcall DrawSetCooperativeLevel(THIS This, HWND hwndClient, DWORD dwFlags)
     1547HRESULT WIN32API DrawSetCooperativeLevel(THIS This, HWND hwndClient, DWORD dwFlags)
    15821548{
    15831549 OS2IDirectDraw        *me = (OS2IDirectDraw *)This;
     
    16021568//Backwards compatibility, what's that??
    16031569//******************************************************************************
    1604 HRESULT __stdcall DrawSetDisplayMode2(THIS This, DWORD dwWidth, DWORD dwHeight,
     1570HRESULT WIN32API DrawSetDisplayMode2(THIS This, DWORD dwWidth, DWORD dwHeight,
    16051571              DWORD dwBPP, DWORD dwRefreshRate,
    16061572              DWORD dwFlags)
     
    16471613//******************************************************************************
    16481614//******************************************************************************
    1649 HRESULT __stdcall DrawSetDisplayMode(THIS This, DWORD dwWidth, DWORD dwHeight,
     1615HRESULT WIN32API DrawSetDisplayMode(THIS This, DWORD dwWidth, DWORD dwHeight,
    16501616             DWORD dwBPP)
    16511617{
     
    16891655//******************************************************************************
    16901656//******************************************************************************
    1691 HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD dwFlags, HANDLE hEvent)
     1657HRESULT WIN32API DrawWaitForVerticalBlank(THIS, DWORD dwFlags, HANDLE hEvent)
    16921658{
    16931659  HRESULT rc;
     
    17481714//*** Added in the v2 interface ***
    17491715//******************************************************************************
    1750 HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS lpDDSCaps,
     1716HRESULT WIN32API DrawGetAvailableVidMem(THIS, LPDDSCAPS lpDDSCaps,
    17511717                                         LPDWORD lpdwTotal, LPDWORD lpdwFree)
    17521718{
     
    17731739//
    17741740//******************************************************************************
    1775 HRESULT __stdcall DrawGetAvailableVidMem4(THIS, LPDDSCAPS2 lpDDSCaps2,
     1741HRESULT WIN32API DrawGetAvailableVidMem4(THIS, LPDDSCAPS2 lpDDSCaps2,
    17761742                                         LPDWORD lpdwTotal, LPDWORD lpdwFree)
    17771743{
     
    17981764//*** Added in the v4 interface ***
    17991765//******************************************************************************
    1800 HRESULT __stdcall DrawGetSurfaceFromDC(THIS, HDC hdc, LPDIRECTDRAWSURFACE4 *)
     1766HRESULT WIN32API DrawGetSurfaceFromDC(THIS, HDC hdc, LPDIRECTDRAWSURFACE4 *)
    18011767{
    18021768  #ifdef DEBUG
     
    18081774//******************************************************************************
    18091775//******************************************************************************
    1810 HRESULT __stdcall DrawRestoreAllSurfaces(THIS)
     1776HRESULT WIN32API DrawRestoreAllSurfaces(THIS)
    18111777{
    18121778  #ifdef DEBUG
     
    18181784//******************************************************************************
    18191785//******************************************************************************
    1820 HRESULT __stdcall DrawTestCooperativeLevel(THIS)
     1786HRESULT WIN32API DrawTestCooperativeLevel(THIS)
    18211787{
    18221788  #ifdef DEBUG
     
    18281794//******************************************************************************
    18291795//******************************************************************************
    1830 HRESULT __stdcall DrawGetDeviceIdentifier( THIS, LPDDDEVICEIDENTIFIER lpdddi,
     1796HRESULT WIN32API DrawGetDeviceIdentifier( THIS, LPDDDEVICEIDENTIFIER lpdddi,
    18311797                                           DWORD dwFlags)
    18321798{
  • trunk/src/ddraw/OS2DDRAW.H

    r4135 r4136  
    1 /* $Id: OS2DDRAW.H,v 1.12 2000-08-31 12:48:41 sandervl Exp $ */
     1/* $Id: OS2DDRAW.H,v 1.13 2000-08-31 17:57:10 sandervl Exp $ */
    22
    33/*
     
    4242                                       // ToDO :
    4343                                       // debug into DirectDrawCreate and se what MS is doing !
     44    //Use for Direct3D interface (This != this)
     45    IDirect3DVtbl    *lpVtbl3D;
     46    IDirect3DVtbl    *lpVtbl3D2;
     47    DWORD            *pdwUnknownData3D;
     48
    4449    IDirectDrawVtbl  Vtbl;
    4550    IDirectDraw2Vtbl  Vtbl2;
     
    141146};
    142147
     148#define OFFSET_D3DVTABLE        (LONG)(&((OS2IDirectDraw *)NULL)->lpVtbl3D)
     149#define DDraw3D_GetThisPtr(a)   (OS2IDirectDraw *)((ULONG)a-OFFSET_D3DVTABLE)
     150
    143151//******************************************************************************
    144152HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID  * ppvObj);
Note: See TracChangeset for help on using the changeset viewer.