Henri Verbeet : ddraw: Remove useless light callbacks.

Alexandre Julliard julliard at winehq.org
Wed Aug 18 12:09:53 CDT 2010


Module: wine
Branch: master
Commit: 06a44abc19b748b3cb4111e4696d6139247105e2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=06a44abc19b748b3cb4111e4696d6139247105e2

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Aug 17 19:03:23 2010 +0200

ddraw: Remove useless light callbacks.

---

 dlls/ddraw/ddraw.c         |    5 --
 dlls/ddraw/ddraw_private.h |   10 +---
 dlls/ddraw/light.c         |  137 +++++++++++++++++++++----------------------
 dlls/ddraw/viewport.c      |   15 +++--
 4 files changed, 77 insertions(+), 90 deletions(-)

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 4921519..ff44960 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -4397,11 +4397,6 @@ static HRESULT WINAPI d3d3_CreateLight(IDirect3D3 *iface, IDirect3DLight **light
     object->ref = 1;
     object->ddraw = ddraw_from_d3d3(iface);
 
-    /* Update functions */
-    object->activate = light_update;
-    object->desactivate = light_activate;
-    object->update = light_desactivate;
-
     TRACE("Created light %p.\n", object);
     *light = (IDirect3DLight *)object;
 
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 9ff703d..220d1bb 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -525,20 +525,14 @@ struct IDirect3DLightImpl
 
     /* Chained list used for adding / removing from viewports */
     IDirect3DLightImpl        *next;
-
-    /* Activation function */
-    void                      (*activate)(IDirect3DLightImpl*);
-    void                      (*desactivate)(IDirect3DLightImpl*);
-    void                      (*update)(IDirect3DLightImpl*);
 };
 
 /* Vtable */
 extern const IDirect3DLightVtbl IDirect3DLight_Vtbl DECLSPEC_HIDDEN;
 
 /* Helper functions */
-void light_update(IDirect3DLightImpl *This) DECLSPEC_HIDDEN;
-void light_activate(IDirect3DLightImpl *This) DECLSPEC_HIDDEN;
-void light_desactivate(IDirect3DLightImpl *This) DECLSPEC_HIDDEN;
+void light_activate(IDirect3DLightImpl *light) DECLSPEC_HIDDEN;
+void light_deactivate(IDirect3DLightImpl *light) DECLSPEC_HIDDEN;
 
 /******************************************************************************
  * IDirect3DMaterial implementation structure - Wraps to D3D7
diff --git a/dlls/ddraw/light.c b/dlls/ddraw/light.c
index 030dcf0..dd41ffe 100644
--- a/dlls/ddraw/light.c
+++ b/dlls/ddraw/light.c
@@ -44,6 +44,71 @@
 WINE_DEFAULT_DEBUG_CHANNEL(d3d7);
 
 /*****************************************************************************
+ * light_update
+ *
+ * Updates the Direct3DDevice7 lighting parameters
+ *
+ *****************************************************************************/
+static void light_update(IDirect3DLightImpl *light)
+{
+    IDirect3DDeviceImpl *device;
+
+    TRACE("light %p.\n", light);
+
+    if (!light->active_viewport || !light->active_viewport->active_device) return;
+    device = light->active_viewport->active_device;
+
+    IDirect3DDevice7_SetLight((IDirect3DDevice7 *)device, light->dwLightIndex, &light->light7);
+}
+
+/*****************************************************************************
+ * light_activate
+ *
+ * Uses the Direct3DDevice7::LightEnable method to active the light
+ *
+ *****************************************************************************/
+void light_activate(IDirect3DLightImpl *light)
+{
+    IDirect3DDeviceImpl *device;
+
+    TRACE("light %p.\n", light);
+
+    if (!light->active_viewport || !light->active_viewport->active_device) return;
+    device = light->active_viewport->active_device;
+
+    light_update(light);
+    if (!(light->light.dwFlags & D3DLIGHT_ACTIVE))
+    {
+        IDirect3DDevice7_LightEnable((IDirect3DDevice7 *)device, light->dwLightIndex, TRUE);
+        light->light.dwFlags |= D3DLIGHT_ACTIVE;
+    }
+}
+
+/*****************************************************************************
+ *
+ * light_deactivate
+ *
+ * Uses the Direct3DDevice7::LightEnable method to deactivate the light
+ *
+ *****************************************************************************/
+void light_deactivate(IDirect3DLightImpl *light)
+{
+    IDirect3DDeviceImpl *device;
+
+    TRACE("light %p.\n", light);
+
+    if (!light->active_viewport || !light->active_viewport->active_device) return;
+    device = light->active_viewport->active_device;
+
+    /* If was not active, activate it */
+    if (light->light.dwFlags & D3DLIGHT_ACTIVE)
+    {
+        IDirect3DDevice7_LightEnable((IDirect3DDevice7 *)device, light->dwLightIndex, FALSE);
+        light->light.dwFlags &= ~D3DLIGHT_ACTIVE;
+    }
+}
+
+/*****************************************************************************
  * IUnknown Methods.
  *****************************************************************************/
 
@@ -203,9 +268,8 @@ IDirect3DLightImpl_SetLight(IDirect3DLight *iface,
 
     EnterCriticalSection(&ddraw_cs);
     memcpy(&This->light, lpLight, lpLight->dwSize);
-    if ((This->light.dwFlags & D3DLIGHT_ACTIVE) != 0) {
-        This->update(This);
-    }
+    if (This->light.dwFlags & D3DLIGHT_ACTIVE)
+        light_update(This);
     LeaveCriticalSection(&ddraw_cs);
     return D3D_OK;
 }
@@ -240,73 +304,6 @@ IDirect3DLightImpl_GetLight(IDirect3DLight *iface,
     return DD_OK;
 }
 
-/*****************************************************************************
- * light_update
- *
- * Updates the Direct3DDevice7 lighting parameters
- *
- *****************************************************************************/
-void light_update(IDirect3DLightImpl* This)
-{
-    IDirect3DDeviceImpl* device;
-
-    TRACE("(%p)\n", This);
-
-    if (!This->active_viewport || !This->active_viewport->active_device)
-        return;
-    device =  This->active_viewport->active_device;
-
-    IDirect3DDevice7_SetLight((IDirect3DDevice7 *)device, This->dwLightIndex, &(This->light7));
-}
-
-/*****************************************************************************
- * light_activate
- *
- * Uses the Direct3DDevice7::LightEnable method to active the light
- *
- *****************************************************************************/
-void light_activate(IDirect3DLightImpl* This)
-{
-    IDirect3DDeviceImpl* device;
-
-    TRACE("(%p)\n", This);
-
-    if (!This->active_viewport || !This->active_viewport->active_device)
-        return;
-    device =  This->active_viewport->active_device;
-
-    light_update(This);
-    /* If was not active, activate it */
-    if ((This->light.dwFlags & D3DLIGHT_ACTIVE) == 0) {
-        IDirect3DDevice7_LightEnable((IDirect3DDevice7 *)device, This->dwLightIndex, TRUE);
-	This->light.dwFlags |= D3DLIGHT_ACTIVE;
-    }
-}
-
-/*****************************************************************************
- *
- * light_desactivate
- *
- * Uses the Direct3DDevice7::LightEnable method to deactivate the light
- *
- *****************************************************************************/
-void light_desactivate(IDirect3DLightImpl* This)
-{
-    IDirect3DDeviceImpl* device;
-
-    TRACE("(%p)\n", This);
-
-    if (!This->active_viewport || !This->active_viewport->active_device)
-        return;
-    device =  This->active_viewport->active_device;
-
-    /* If was not active, activate it */
-    if ((This->light.dwFlags & D3DLIGHT_ACTIVE) != 0) {
-        IDirect3DDevice7_LightEnable((IDirect3DDevice7 *)device, This->dwLightIndex, FALSE);
-	This->light.dwFlags &= ~D3DLIGHT_ACTIVE;
-    }
-}
-
 const IDirect3DLightVtbl IDirect3DLight_Vtbl =
 {
     /*** IUnknown Methods ***/
diff --git a/dlls/ddraw/viewport.c b/dlls/ddraw/viewport.c
index 5e17bd0..01319f5 100644
--- a/dlls/ddraw/viewport.c
+++ b/dlls/ddraw/viewport.c
@@ -62,8 +62,9 @@ void viewport_activate(IDirect3DViewportImpl* This, BOOL ignore_lights) {
         /* Activate all the lights associated with this context */
         light = This->lights;
 
-        while (light != NULL) {
-            light->activate(light);
+        while (light)
+        {
+            light_activate(light);
             light = light->next;
         }
     }
@@ -762,9 +763,8 @@ IDirect3DViewportImpl_AddLight(IDirect3DViewport3 *iface,
     lpDirect3DLightImpl->active_viewport = This;
 
     /* If active, activate the light */
-    if (This->active_device != NULL) {
-        lpDirect3DLightImpl->activate(lpDirect3DLightImpl);
-    }
+    if (This->active_device)
+        light_activate(lpDirect3DLightImpl);
 
     LeaveCriticalSection(&ddraw_cs);
     return D3D_OK;
@@ -796,8 +796,9 @@ IDirect3DViewportImpl_DeleteLight(IDirect3DViewport3 *iface,
     EnterCriticalSection(&ddraw_cs);
     cur_light = This->lights;
     while (cur_light != NULL) {
-        if (cur_light == lpDirect3DLightImpl) {
-	    lpDirect3DLightImpl->desactivate(lpDirect3DLightImpl);
+        if (cur_light == lpDirect3DLightImpl)
+        {
+            light_deactivate(lpDirect3DLightImpl);
 	    if (prev_light == NULL) This->lights = cur_light->next;
 	    else prev_light->next = cur_light->next;
 	    /* Detach the light to the viewport */




More information about the wine-cvs mailing list