[ros-diffs] [khornicek] 43813: - preparation for initial palette support

khornicek at svn.reactos.org khornicek at svn.reactos.org
Wed Oct 28 17:03:10 CET 2009


Author: khornicek
Date: Wed Oct 28 17:03:10 2009
New Revision: 43813

URL: http://svn.reactos.org/svn/reactos?rev=43813&view=rev
Log:
- preparation for initial palette support

Added:
    branches/reactx/reactos/dll/directx/ddraw/Vtable/DirectDrawPalette_Vtable.c   (with props)
Modified:
    branches/reactx/reactos/dll/directx/ddraw/Palette/palette_main.c
    branches/reactx/reactos/dll/directx/ddraw/Palette/palette_stubs.c
    branches/reactx/reactos/dll/directx/ddraw/ddraw.rbuild

Modified: branches/reactx/reactos/dll/directx/ddraw/Palette/palette_main.c
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/directx/ddraw/Palette/palette_main.c?rev=43813&r1=43812&r2=43813&view=diff
==============================================================================
--- branches/reactx/reactos/dll/directx/ddraw/Palette/palette_main.c [iso-8859-1] (original)
+++ branches/reactx/reactos/dll/directx/ddraw/Palette/palette_main.c [iso-8859-1] Wed Oct 28 17:03:10 2009
@@ -4,9 +4,111 @@
  * PROJECT:              ReactOS DirectX
  * FILE:                 ddraw/Palette/palette.c
  * PURPOSE:              IDirectDrawPalette Implementation
- * PROGRAMMER:           
+ * PROGRAMMER:           Kamil Hornicek
  *
  */
 
 #include "rosdraw.h"
 
+LPDDRAWI_DDRAWPALETTE_INT
+internal_directdrawpalette_int_alloc(LPDDRAWI_DDRAWPALETTE_INT This)
+{
+    LPDDRAWI_DDRAWPALETTE_INT  newThis;
+    DxHeapMemAlloc(newThis, sizeof(DDRAWI_DDRAWPALETTE_INT));
+    if (newThis)
+    {
+        newThis->lpLcl = This->lpLcl;
+        newThis->lpLink = This;
+    }
+
+    return  newThis;
+}
+
+ULONG WINAPI
+Main_DirectDrawPalette_AddRef(LPDIRECTDRAWPALETTE iface)
+{
+    LPDDRAWI_DDRAWPALETTE_INT This = (LPDDRAWI_DDRAWPALETTE_INT)iface;
+    ULONG ref = 0;
+
+    AcquireDDThreadLock();
+
+    _SEH2_TRY
+    {
+        ref = ++This->dwIntRefCnt;
+    }
+    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+    {
+    }
+    _SEH2_END
+
+    ReleaseDDThreadLock();
+
+    return ref;
+}
+
+HRESULT WINAPI
+Main_DirectDrawPalette_QueryInterface(LPDIRECTDRAWPALETTE iface, REFIID refiid, LPVOID *ppObj)
+{
+    HRESULT retVal = DD_OK;
+    *ppObj = NULL;
+    LPDDRAWI_DDRAWPALETTE_INT This = (LPDDRAWI_DDRAWPALETTE_INT) iface;
+
+    DX_WINDBG_trace();
+
+    _SEH2_TRY
+    {
+        if (IsEqualGUID(refiid, &IID_IUnknown) || IsEqualGUID(refiid, &IID_IDirectDrawPalette))
+        {
+            if (This->lpVtbl != &DirectDrawPalette_Vtable)
+            {
+                This = internal_directdrawpalette_int_alloc(This);
+                if (!This)
+                {
+                    retVal = DDERR_OUTOFVIDEOMEMORY;
+                    _SEH2_LEAVE;
+                }
+            }
+            This->lpVtbl = &DirectDrawPalette_Vtable;
+            *ppObj = This;
+            Main_DirectDrawPalette_AddRef((LPDIRECTDRAWPALETTE)This);
+        }
+        else
+        {
+            DX_STUB_str("E_NOINTERFACE\n");
+            retVal = E_NOINTERFACE;
+        }
+    }
+    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+    {
+    }
+    _SEH2_END;
+
+    return retVal;
+}
+
+ULONG WINAPI
+Main_DirectDrawPalette_Release(LPDIRECTDRAWPALETTE iface)
+{
+    ULONG ref = 0;
+    LPDDRAWI_DDRAWPALETTE_INT This = (LPDDRAWI_DDRAWPALETTE_INT)iface;
+
+    AcquireDDThreadLock();
+
+    _SEH2_TRY
+    {
+        This->dwIntRefCnt--;
+        ref = This->dwIntRefCnt;
+        if(ref == 0)
+        {
+            DxHeapMemFree(This);
+        }
+    }
+    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+    {
+    }
+    _SEH2_END
+
+    ReleaseDDThreadLock();
+
+    return ref;
+}

Modified: branches/reactx/reactos/dll/directx/ddraw/Palette/palette_stubs.c
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/directx/ddraw/Palette/palette_stubs.c?rev=43813&r1=43812&r2=43813&view=diff
==============================================================================
--- branches/reactx/reactos/dll/directx/ddraw/Palette/palette_stubs.c [iso-8859-1] (original)
+++ branches/reactx/reactos/dll/directx/ddraw/Palette/palette_stubs.c [iso-8859-1] Wed Oct 28 17:03:10 2009
@@ -10,24 +10,8 @@
 
 #include "rosdraw.h"
 
-ULONG WINAPI
-DirectDrawPalette_Release( LPDIRECTDRAWPALETTE iface)
-{
-  DX_WINDBG_trace();
-
-   DX_STUB;
-}
-
-ULONG WINAPI
-DirectDrawPalette_AddRef( LPDIRECTDRAWPALETTE iface)
-{
-  DX_WINDBG_trace();
-
-   DX_STUB;
-}
-
 HRESULT WINAPI
-DirectDrawPalette_Initialize( LPDIRECTDRAWPALETTE iface,
+Main_DirectDrawPalette_Initialize( LPDIRECTDRAWPALETTE iface,
 				              LPDIRECTDRAW ddraw,
                               DWORD dwFlags,
 				              LPPALETTEENTRY palent)
@@ -37,7 +21,7 @@
 }
 
 HRESULT WINAPI
-DirectDrawPalette_GetEntries( LPDIRECTDRAWPALETTE iface,
+Main_DirectDrawPalette_GetEntries( LPDIRECTDRAWPALETTE iface,
                               DWORD dwFlags,
 				              DWORD dwStart, DWORD dwCount,
 				              LPPALETTEENTRY palent)
@@ -47,7 +31,7 @@
 }
 
 HRESULT WINAPI
-DirectDrawPalette_SetEntries( LPDIRECTDRAWPALETTE iface,
+Main_DirectDrawPalette_SetEntries( LPDIRECTDRAWPALETTE iface,
                               DWORD dwFlags,
 				              DWORD dwStart,
                               DWORD dwCount,
@@ -57,29 +41,9 @@
    DX_STUB;
 }
 HRESULT WINAPI
-DirectDrawPalette_GetCaps( LPDIRECTDRAWPALETTE iface,
+Main_DirectDrawPalette_GetCaps( LPDIRECTDRAWPALETTE iface,
                            LPDWORD lpdwCaps)
 {
    DX_WINDBG_trace();
    DX_STUB;
 }
-
-HRESULT WINAPI
-DirectDrawPalette_QueryInterface( LPDIRECTDRAWPALETTE iface,
-				                  REFIID refiid,
-                                  LPVOID *obj)
-{
-   DX_WINDBG_trace();
-   DX_STUB;
-}
-
-IDirectDrawPaletteVtbl DirectDrawPalette_Vtable =
-{
-    DirectDrawPalette_QueryInterface,
-    DirectDrawPalette_AddRef,
-    DirectDrawPalette_Release,
-    DirectDrawPalette_GetCaps,
-    DirectDrawPalette_GetEntries,
-    DirectDrawPalette_Initialize,
-    DirectDrawPalette_SetEntries
-};

Added: branches/reactx/reactos/dll/directx/ddraw/Vtable/DirectDrawPalette_Vtable.c
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/directx/ddraw/Vtable/DirectDrawPalette_Vtable.c?rev=43813&view=auto
==============================================================================
--- branches/reactx/reactos/dll/directx/ddraw/Vtable/DirectDrawPalette_Vtable.c (added)
+++ branches/reactx/reactos/dll/directx/ddraw/Vtable/DirectDrawPalette_Vtable.c [iso-8859-1] Wed Oct 28 17:03:10 2009
@@ -1,0 +1,36 @@
+#include <windows.h>
+#include <stdio.h>
+#include <ddraw.h>
+#include <ddrawi.h>
+#include <d3dhal.h>
+#include <ddrawgdi.h>
+
+#if defined(_WIN32) && !defined(_NO_COM )
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#else
+#define IUnknown void
+#if !defined(NT_BUILD_ENVIRONMENT) && !defined(WINNT)
+        #define CO_E_NOTINITIALIZED 0x800401F0
+#endif
+#endif
+
+ULONG WINAPI Main_DirectDrawPalette_Release(LPDIRECTDRAWPALETTE iface);
+ULONG WINAPI Main_DirectDrawPalette_AddRef(LPDIRECTDRAWPALETTE iface);
+HRESULT WINAPI Main_DirectDrawPalette_Initialize(LPDIRECTDRAWPALETTE iface, LPDIRECTDRAW ddraw, DWORD dwFlags, LPPALETTEENTRY palent);
+HRESULT WINAPI Main_DirectDrawPalette_GetEntries(LPDIRECTDRAWPALETTE iface, DWORD dwFlags, DWORD dwStart, DWORD dwCount, LPPALETTEENTRY palent);
+HRESULT WINAPI Main_DirectDrawPalette_SetEntries(LPDIRECTDRAWPALETTE iface, DWORD dwFlags, DWORD dwStart, DWORD dwCount, LPPALETTEENTRY palent);
+HRESULT WINAPI Main_DirectDrawPalette_GetCaps(LPDIRECTDRAWPALETTE iface, LPDWORD lpdwCaps);
+HRESULT WINAPI Main_DirectDrawPalette_QueryInterface(LPDIRECTDRAWPALETTE iface, REFIID refiid, LPVOID *obj);
+
+IDirectDrawPaletteVtbl DirectDrawPalette_Vtable =
+{
+    Main_DirectDrawPalette_QueryInterface,
+    Main_DirectDrawPalette_AddRef,
+    Main_DirectDrawPalette_Release,
+    Main_DirectDrawPalette_GetCaps,
+    Main_DirectDrawPalette_GetEntries,
+    Main_DirectDrawPalette_Initialize,
+    Main_DirectDrawPalette_SetEntries
+};
+

Propchange: branches/reactx/reactos/dll/directx/ddraw/Vtable/DirectDrawPalette_Vtable.c
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/reactx/reactos/dll/directx/ddraw/ddraw.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/directx/ddraw/ddraw.rbuild?rev=43813&r1=43812&r2=43813&view=diff
==============================================================================
--- branches/reactx/reactos/dll/directx/ddraw/ddraw.rbuild [iso-8859-1] (original)
+++ branches/reactx/reactos/dll/directx/ddraw/ddraw.rbuild [iso-8859-1] Wed Oct 28 17:03:10 2009
@@ -61,6 +61,7 @@
 		<file>DirectDraw4_Vtable.c</file>
 		<file>DirectDraw2_Vtable.c</file>
 		<file>DirectDraw_Vtable.c</file>
+		<file>DirectDrawPalette_Vtable.c</file>
 		<file>DirectDrawSurface7_Vtable.c</file>
 		<file>DirectDrawSurface4_Vtable.c</file>
 		<file>DirectDrawSurface3_Vtable.c</file>




More information about the Ros-diffs mailing list