Fix samples/fog.c regression - missing test for NeedEyeCoords.
authorKeith Whitwell <keith@tungstengraphics.com>
Tue, 5 Aug 2003 18:12:55 +0000 (18:12 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Tue, 5 Aug 2003 18:12:55 +0000 (18:12 +0000)
src/mesa/main/light.c

index 3ef2e3eac1b88054158b329399274b50c3a2c851..046738882d348693c37154ab1a6f08f1fb733868 100644 (file)
@@ -1317,15 +1317,24 @@ void _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state )
 {
    const GLuint oldneedeyecoords = ctx->_NeedEyeCoords;
 
-   ctx->_NeedEyeCoords = (ctx->_ForceEyeCoords ||
-                         (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD) ||
-                         ctx->Point._Attenuated ||
-                         ctx->Light._NeedEyeCoords);
-      
+   ctx->_NeedEyeCoords = 0;
+
+   if (ctx->_ForceEyeCoords ||
+       (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD) ||
+       ctx->Point._Attenuated ||
+       ctx->Light._NeedEyeCoords)
+      ctx->_NeedEyeCoords = 1;
+
+   if (ctx->Light.Enabled &&
+       !TEST_MAT_FLAGS( ctx->ModelviewMatrixStack.Top, 
+                       MAT_FLAGS_LENGTH_PRESERVING))
+      ctx->_NeedEyeCoords = 1;
+
+
    /* Check if the truth-value interpretations of the bitfields have
     * changed:
     */
-   if ((oldneedeyecoords == 0) != (ctx->_NeedEyeCoords == 0)) {
+   if (oldneedeyecoords != ctx->_NeedEyeCoords) {
       /* Recalculate all state that depends on _NeedEyeCoords.
        */
       update_modelview_scale(ctx);