gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] libvob ./rules.mk include/vob/Renderer.hxx incl...


From: Tuomas J. Lukka
Subject: [Gzz-commits] libvob ./rules.mk include/vob/Renderer.hxx incl...
Date: Sat, 19 Apr 2003 15:37:33 -0400

CVSROOT:        /cvsroot/libvob
Module name:    libvob
Changes by:     Tuomas J. Lukka <address@hidden>        03/04/19 15:37:33

Modified files:
        .              : rules.mk 
        include/vob    : Renderer.hxx Vob.hxx 
        include/vob/irregu: Irregu.hxx 
        include/vob/jni: Generate.hxx 
        include/vob/vobs: Irregu.hxx 
        src/jni        : Generator.cxx Generator.hxx Render.cxx 
        src/main       : Renderer.cxx 

Log message:
        More debug info for irregu - dumping core somewhere

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/rules.mk.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/Renderer.hxx.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/Vob.hxx.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/irregu/Irregu.hxx.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/jni/Generate.hxx.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/vobs/Irregu.hxx.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/jni/Generator.cxx.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/jni/Generator.hxx.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/jni/Render.cxx.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/main/Renderer.cxx.diff?tr1=1.4&tr2=1.5&r1=text&r2=text

Patches:
Index: libvob/include/vob/Renderer.hxx
diff -u libvob/include/vob/Renderer.hxx:1.1 libvob/include/vob/Renderer.hxx:1.2
--- libvob/include/vob/Renderer.hxx:1.1 Wed Mar 12 08:37:57 2003
+++ libvob/include/vob/Renderer.hxx     Sat Apr 19 15:37:32 2003
@@ -59,57 +59,7 @@
                            ObjectStorer<Vob0> &r0s,
                            ObjectStorer<Vob1> &r1s,
                            ObjectStorer<Vob2> &r2s,
-                           ObjectStorer<Vob> &r3s) {
-       int i=0; 
-       DBG(dbg_renderer) << "renderScene\n";
-       while(codes[i] != 0) {
-           DBG(dbg_renderer) << "Rendercode "<<i<<" "<<codes[i]<<"\n";
-           // cout << "Code: "<<codes[i]<<"\n";
-           int code = codes[i] & ~RMASK;
-           if((codes[i] & RMASK) == RENDERABLE0) {
-               DBG(dbg_renderer) << "rend0 "<<r0s[code]<<"\n";
-               r0s[code]->render0();
-               i += 1;
-           }
-           else if((codes[i] & RMASK) ==  RENDERABLE1) {
-               Transform *cs1 = coordset.get(codes[i+1]);
-               DBG(dbg_renderer) << "rend1 "<<r1s[code]<<": "<<codes[i+1]<<" 
"<<cs1<<"\n";
-               if(cs1)
-                   r1s[code]->render1(*cs1);
-               i += 2;
-           }
-           else if((codes[i] & RMASK) == RENDERABLE2) {
-               Transform *cs1 = coordset.get(codes[i+1]);
-               Transform *cs2 = coordset.get(codes[i+2]);
-               DBG(dbg_renderer) << "rend2 "<<r2s[code]<<": "
-                       <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<" "<<cs2<<"\n";
-               if(cs1 && cs2)
-                   r2s[code]->render2(*cs1, *cs2);
-               i += 3;
-           }
-           else if((codes[i] & RMASK) == RENDERABLE3) {
-               Transform *cs1 = coordset.get(codes[i+1]);
-               Transform *cs2 = coordset.get(codes[i+2]);
-               Transform *cs3 = coordset.get(codes[i+3]);
-               DBG(dbg_renderer) << "rend3 "<<r3s[code]<<": "
-                                 <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<" 
"<<cs2<<" " 
-                                 <<cs3<<" "<<codes[i+3]<<"\n";
-               /* XXX
-               if(cs1 && cs2 && cs3)
-                   r3s[code]->render(*cs1, *cs2, *cs3);
-               */
-               i += 4;
-           }
-           else {
-               // We have a problem
-               cout << "HELP!\n";
-               std::cerr << "We seem to have a problem!!! "<<codes[i]<<"\n";
-               cout << "HELP!\n";
-               exit(19);
-           }
-       }
-       DBG(dbg_renderer) << "renderScene end\n";
-    }
+                           ObjectStorer<Vob> &r3s) ;
 };
 
 
Index: libvob/include/vob/Vob.hxx
diff -u libvob/include/vob/Vob.hxx:1.7 libvob/include/vob/Vob.hxx:1.8
--- libvob/include/vob/Vob.hxx:1.7      Sun Mar 23 15:15:58 2003
+++ libvob/include/vob/Vob.hxx  Sat Apr 19 15:37:32 2003
@@ -49,6 +49,8 @@
         * @param n The number of transforms in t.
         */
        virtual void render(const Transform **t, int n) const = 0;
+
+       virtual const char* getVobName() const = 0;
     };
 
     /** A vob which uses no coordinate systems. A specialization
@@ -92,9 +94,11 @@
      * actual Vob interface.
      */
     template<class VobSeed> class Vob0Maker : public Vob0, public VobSeed {
+       static char* name;
        virtual void render0() const {
            VobSeed::render();
        }
+       virtual const char* getVobName() const { return name; }
     };
 
     /** A template class which implements Vob, given a class with a render(t) 
method.
@@ -102,9 +106,11 @@
      * actual Vob interface.
      */
     template<class VobSeed> class Vob1Maker : public Vob1, public VobSeed {
+       static char* name;
        virtual void render1(const Transform &t) const {
            VobSeed::render(t);
        }
+       virtual const char* getVobName() const { return name; }
     };
 
     /** A template class which implements Vob, given a class with a render(t0, 
t1) method.
@@ -112,9 +118,11 @@
      * actual Vob interface.
      */
     template<class VobSeed> class Vob2Maker : public Vob2, public VobSeed {
+       static char* name;
        virtual void render2(const Transform &t0, const Transform &t1) const {
            VobSeed::render(t0, t1);
        }
+       virtual const char* getVobName() const { return name; }
     };
 
 }
Index: libvob/include/vob/irregu/Irregu.hxx
diff -u libvob/include/vob/irregu/Irregu.hxx:1.2 
libvob/include/vob/irregu/Irregu.hxx:1.3
--- libvob/include/vob/irregu/Irregu.hxx:1.2    Wed Apr  9 10:47:28 2003
+++ libvob/include/vob/irregu/Irregu.hxx        Sat Apr 19 15:37:32 2003
@@ -35,6 +35,8 @@
 // XXX: name
 namespace Irregu {
 
+PREDBGVAR(dbg_irregu);
+
     inline void setDotVec(float angle, int angles, float dotvec[]) {
        float a = (angle + M_PI) * angles * (1 / M_PI);
        int ind = (int)a;
@@ -182,6 +184,8 @@
              const float c0[], const float c1[],
              int angles, int multi,
              unsigned flags) {
+
+       DBG(dbg_irregu) << "Irregu draw "<<pt.size() <<" "<<norm.size()<<"\n";
     
        if (pt.size() < 2) return;
 
@@ -207,6 +211,7 @@
        }
 
        if (flags & INSIDE) {
+           DBG(dbg_irregu) << "Inside\n";
            colorfv(c0);
            glBegin(GL_POLYGON);
            for (unsigned i = 0; i < pt.size(); i++) {
@@ -219,6 +224,7 @@
        }
 
        if ((flags & SLICE_2D) && !(flags & SLICE_1D)) {
+           DBG(dbg_irregu) << "Slice2D\n";
            glBegin(GL_QUAD_STRIP);
            for (unsigned i = 0; i < pt.size(); i++) {
 
@@ -244,8 +250,10 @@
        }
        
        if (flags & SLICE_1D) {
+           DBG(dbg_irregu) << "Slice1D\n";
            glBegin(GL_QUADS);
            for (unsigned i = 0, j = 1; j < pt.size(); i++, j++) {
+               DBG(dbg_irregu) << "Slice1D loop "<<i<<" "<<j<<"\n";
 
                ZVec dv0 = vert[i][0] - vert[j][0];
                ZVec dv1 = vert[i][1] - vert[j][1];
@@ -257,6 +265,7 @@
                float scale0=0, scale1=0;
 
                if (multi > 0 || (flags & SHIFTS+SHIFTS8)) {
+                   DBG(dbg_irregu) << "Slice1D loop opt1\n";
                    dv0t = vert2[j][0] - vert2[i][0];
                    dv1t = vert2[j][1] - vert2[i][1];
 
@@ -293,6 +302,8 @@
                if (flags & SHIFTS8) numshifts = 8;
                for (int s = 0; s < numshifts; s++) {
                if (flags & SHIFTS+SHIFTS8) {
+                   DBG(dbg_irregu) << "Slice1D loop opt2 "<<
+                       s<<"\n";
                    switch (s) {
                    case 0: shift0 = scale1 * dv0t.normalized().cw90(); break;
                    case 1: shift0 = scale1 * dv1t.normalized(); break;
@@ -306,7 +317,10 @@
                    shift1 = shift0;
                }
 
+               DBG(dbg_irregu) << "Slice1D loop pos 3 \n";
+
                if (flags & DOTVEC_COLOR) {
+                   DBG(dbg_irregu) << "Slice1D loop opt3 \n";
                    float angle = flags & INTERP_DOTVEC ?
                        atan2(-norm[i].x, norm[i].y) :
                        atan2(pt[j].y - pt[i].y,
@@ -343,6 +357,7 @@
                vertex(vert2[i][0] + shift0);
 
                if ((flags & DOTVEC_COLOR) && (flags & INTERP_DOTVEC)) {
+                   DBG(dbg_irregu) << "Slice1D loop opt4 \n";
                    float angle = atan2(-norm[j].x, norm[j].y); 
                    float dotvec[4] = {0,0,0,0};
                    setDotVec(angle, angles, dotvec);
Index: libvob/include/vob/jni/Generate.hxx
diff -u libvob/include/vob/jni/Generate.hxx:1.19 
libvob/include/vob/jni/Generate.hxx:1.20
--- libvob/include/vob/jni/Generate.hxx:1.19    Fri Apr  4 07:34:59 2003
+++ libvob/include/vob/jni/Generate.hxx Sat Apr 19 15:37:32 2003
@@ -158,6 +158,7 @@
 
            VOB_JNISTREAM << "\n struct " << structName << "  { "
                << pl.jniStructS<< "\n} ;\n\n";
+           VOB_JNICXXSTREAM << "\n char *"<<makerName<<"::name = 
\""<<name<<"\";\n";
 
            VOB_JNISTREAM << "JNIEXPORT jint JNICALL "<<
                 VOB_JAVAPREFIX<<"implcreate"<<name<<  
Index: libvob/include/vob/vobs/Irregu.hxx
diff -u libvob/include/vob/vobs/Irregu.hxx:1.3 
libvob/include/vob/vobs/Irregu.hxx:1.4
--- libvob/include/vob/vobs/Irregu.hxx:1.3      Wed Apr  9 09:33:36 2003
+++ libvob/include/vob/vobs/Irregu.hxx  Sat Apr 19 15:37:32 2003
@@ -320,10 +320,12 @@
     }
 
     template<class T> void render(const T &coords1, const T &coords2) const {
-        DBG(dbg_irregularquad) << "IrregularEdge\\n";
+        DBG(dbg_irregularquad) << "IrregularEdge\n";
 
         // XXX: TODO: use coords1.nonlinearity()
         int n = (int)(36 * dicefactor);
+
+       DBG(dbg_irregularquad) << "Reserve "<<n<<"\n";
         std::vector<ZPt> vert(n+1);
         
         switch (shape) {
@@ -336,9 +338,12 @@
             n = 2 + shape;
         default:
         case 0: 
+           DBG(dbg_irregularquad) << "GetEllipse "<<n<<"\n";
+
             vert = Irregu::getEllipse(n, 2, 2);
             break;
         case 7: {
+           DBG(dbg_irregularquad) << "Quad\n";
             n = 4;
             vert[0] = ZPt(+1, -1, 0);
             vert[1] = ZPt(+1, +1, 0);
@@ -354,24 +359,29 @@
             float yw = (coords2.transform(ZPt(0,1,0)) - 
coords2.transform(ZPt(0,0,0))).length();
 
             float poww = 2 + (shape - 8) * 3;
+           DBG(dbg_irregularquad) << "GetEllipse type2 "<<n<<" "<<poww<<"\n";
             vert = Irregu::getEllipse(n, poww * pow(xw/120, 0.2), poww * 
pow(yw/120, 0.2));
             }
             break;
         }
 
+       DBG(dbg_irregularquad) << "Resize "<<(n+1)<<"\n";
         vert.resize(n + 1);
         vert[n] = vert[0];
         for (unsigned int i=0; i<vert.size(); i++) {
             vert[i].x = 0.5*(vert[i].x+1);
             vert[i].y = 0.5*(vert[i].y+1);
         }
+       DBG(dbg_irregularquad) << "trans\n";
         Irregu::transform(coords2, vert);
+       DBG(dbg_irregularquad) << "transed\n";
 
         glCallList(setup);
         GLERR;
 
         // XXX: Kluge for 2D offset texture
         if (flags & 65536) {
+           DBG(dbg_irregularquad) << "offs\n";
             float xw = (coords2.transform(ZPt(1,0,0)) - 
coords2.transform(ZPt(0,0,0))).length();
             float yw = (coords2.transform(ZPt(0,1,0)) - 
coords2.transform(ZPt(0,0,0))).length();
             
@@ -426,12 +436,15 @@
             GLERR;
             
         } else {
+           DBG(dbg_irregularquad) << "norms\n";
             std::vector<ZVec> norm = Irregu::computeNorms(vert, n);
+           DBG(dbg_irregularquad) << "normed\n";
             Irregu::draw(coords1, vert, norm, texscale,
                         linewidth, refsize, scale_pow,
                         border0, border1, texslicing,
                         &const0[0], &const1[0],
                         angles, multi, flags);
+           DBG(dbg_irregularquad) << "drew\n";
                         
             GLERR;
         }
Index: libvob/rules.mk
diff -u libvob/rules.mk:1.11 libvob/rules.mk:1.12
--- libvob/rules.mk:1.11        Wed Apr 16 05:27:44 2003
+++ libvob/rules.mk     Sat Apr 19 15:37:32 2003
@@ -12,7 +12,9 @@
          -e 's/^flags.* sse .*$$/-mfpmath=sse/'
 ARCH=$(shell [ ! -f /proc/cpuinfo ] || sed $(ARCHOPTS) -e "/^-/!d" 
/proc/cpuinfo)
 
-OPTIMIZE =  -O3 -ffast-math $(ARCH) -fomit-frame-pointer 
-foptimize-sibling-calls
+# OPTIMIZE =  -O3 -ffast-math $(ARCH) -fomit-frame-pointer 
-foptimize-sibling-calls
+# Better not omit frame pointer: java can sometimes show us where the problem 
is...
+OPTIMIZE =  -O3 -ffast-math $(ARCH) -foptimize-sibling-calls
 # OPTIMIZE = -O0
 
 CPPFLAGS = -I../include -I../../libvob-depends -I../../include $(EXTRAINCLUDE) 
-I../../callgl/include -I../../../callgl/include 
-I../../callgl/include/glwrapper -I../../../callgl/include/glwrapper 
-I../../glmosaictext/include -I../../../glmosaictext/include 
-I/usr/include/freetype2 `gdk-pixbuf-config --cflags`
Index: libvob/src/jni/Generator.cxx
diff -u libvob/src/jni/Generator.cxx:1.1 libvob/src/jni/Generator.cxx:1.2
--- libvob/src/jni/Generator.cxx:1.1    Fri Apr  4 07:34:59 2003
+++ libvob/src/jni/Generator.cxx        Sat Apr 19 15:37:32 2003
@@ -6,6 +6,7 @@
 static Generator gen(S(C_OUTPUT_FILE), S(HEADER_FILE));
 
 #define VOB_JNISTREAM ::gen.JNISTREAM
+#define VOB_JNICXXSTREAM ::gen.JNICXXSTREAM
 #define VOB_JAVASTREAM ::gen.JAVASTREAM
 #define VOB_TRANSJAVASTREAM ::gen.TRANSJAVASTREAM
 
Index: libvob/src/jni/Generator.hxx
diff -u libvob/src/jni/Generator.hxx:1.1 libvob/src/jni/Generator.hxx:1.2
--- libvob/src/jni/Generator.hxx:1.1    Fri Apr  4 07:34:59 2003
+++ libvob/src/jni/Generator.hxx        Sat Apr 19 15:37:32 2003
@@ -20,6 +20,7 @@
 class Generator {
 public:
     std::ostringstream JNISTREAM;
+    std::ostringstream JNICXXSTREAM;
 
     std::ostringstream JAVASTREAM;
     std::ostringstream TRANSJAVASTREAM;
@@ -49,6 +50,8 @@
        jni << "using namespace Vob::Primitives;\n";
        jni << "using namespace Vob; using namespace Vob::Vobs; \n";
        jni << "extern HierarchicalTransform *((*transFactories[])());\n";
+
+       jni << JNICXXSTREAM.str()<<"\n\n";
 
        jni << "extern \"C\" { \n";
        jni << JNISTREAM.str()<<"\n\n";
Index: libvob/src/jni/Render.cxx
diff -u libvob/src/jni/Render.cxx:1.3 libvob/src/jni/Render.cxx:1.4
--- libvob/src/jni/Render.cxx:1.3       Fri Mar 21 04:42:51 2003
+++ libvob/src/jni/Render.cxx   Sat Apr 19 15:37:32 2003
@@ -114,6 +114,7 @@
       env->ReleaseFloatArrayElements(j_pts1, pts1, JNI_ABORT);
 
       if(inds2 != 0) {
+         DBG(dbg_render) << "Releasearrays: "<<j_inds2<<" "<<j_pts2<<" 
"<<j_interpinds<<"\n";
        env->ReleaseIntArrayElements(j_inds2, inds2, JNI_ABORT);
        env->ReleaseFloatArrayElements(j_pts2, pts2, JNI_ABORT);
         env->ReleaseIntArrayElements(j_interpinds, interpinds, JNI_ABORT);
Index: libvob/src/main/Renderer.cxx
diff -u libvob/src/main/Renderer.cxx:1.4 libvob/src/main/Renderer.cxx:1.5
--- libvob/src/main/Renderer.cxx:1.4    Tue Apr  1 06:03:54 2003
+++ libvob/src/main/Renderer.cxx        Sat Apr 19 15:37:33 2003
@@ -27,6 +27,10 @@
        DBGVAR(dbg_paperquad, "Paperquad");
     }
 
+    namespace Irregu {
+       DBGVAR(dbg_irregu, "Irregu");
+    }
+
 namespace CurrentFPS {
     // bool showFPS;
     double current_fps;
@@ -60,20 +64,76 @@
 
 }
 
+void Renderer::renderScene(int *codes, 
+                       ObjectStorer<Vob0> &r0s,
+                       ObjectStorer<Vob1> &r1s,
+                       ObjectStorer<Vob2> &r2s,
+                       ObjectStorer<Vob> &r3s) {
+    int i=0; 
+    DBG(dbg_renderer) << "renderScene\n";
+    while(codes[i] != 0) {
+       DBG(dbg_renderer) << "Rendercode "<<i<<" "<<codes[i]<<"\n";
+       // cout << "Code: "<<codes[i]<<"\n";
+       int code = codes[i] & ~RMASK;
+       if((codes[i] & RMASK) == RENDERABLE0) {
+           DBG(dbg_renderer) << "rend0 "<<r0s[code]->getVobName()<<" 
"<<r0s[code]<<"\n";
+           r0s[code]->render0();
+           i += 1;
+       }
+       else if((codes[i] & RMASK) ==  RENDERABLE1) {
+           Transform *cs1 = coordset.get(codes[i+1]);
+           DBG(dbg_renderer) << "rend1 "<<r1s[code]->getVobName()<<" 
"<<r1s[code]<<": "<<codes[i+1]<<" "<<cs1<<"\n";
+           if(cs1)
+               r1s[code]->render1(*cs1);
+           i += 2;
+       }
+       else if((codes[i] & RMASK) == RENDERABLE2) {
+           Transform *cs1 = coordset.get(codes[i+1]);
+           Transform *cs2 = coordset.get(codes[i+2]);
+           DBG(dbg_renderer) << "rend2 "<<r2s[code]->getVobName()<<" 
"<<r2s[code]<<": "
+                   <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<" "<<cs2<<"\n";
+           if(cs1 && cs2)
+               r2s[code]->render2(*cs1, *cs2);
+           i += 3;
+       }
+       else if((codes[i] & RMASK) == RENDERABLE3) {
+           Transform *cs1 = coordset.get(codes[i+1]);
+           Transform *cs2 = coordset.get(codes[i+2]);
+           Transform *cs3 = coordset.get(codes[i+3]);
+           DBG(dbg_renderer) << "rend3 "<<r3s[code]->getVobName()<<" 
"<<r3s[code]<<": "
+                             <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<" 
"<<cs2<<" " 
+                             <<cs3<<" "<<codes[i+3]<<"\n";
+           /* XXX
+           if(cs1 && cs2 && cs3)
+               r3s[code]->render(*cs1, *cs2, *cs3);
+           */
+           i += 4;
+       }
+       else {
+           // We have a problem
+           cout << "HELP!\n";
+           std::cerr << "We seem to have a problem!!! "<<codes[i]<<"\n";
+           cout << "HELP!\n";
+           exit(19);
+       }
+    }
+    DBG(dbg_renderer) << "renderScene end\n";
+}
+
 void Renderer::fpsTick() {
-      if(dbg_fps) {
-       double new_time = getTime();
-       CurrentFPS::current_fps = 1.0/(new_time - 
CurrentFPS::last_time[CurrentFPS::count]);
-       DBG(dbg_fps_cout) << "CurrentFPS: " << CurrentFPS::current_fps << "\n";
-       CurrentFPS::count ++;
-       CurrentFPS::count %= CurrentFPS::NCounts;
-       CurrentFPS::current_fps5 = CurrentFPS::NCounts *
-                                   1.0/(new_time - 
CurrentFPS::last_time[CurrentFPS::count]);
-        CurrentFPS::last_time[CurrentFPS::count] = new_time;
+  if(dbg_fps) {
+    double new_time = getTime();
+    CurrentFPS::current_fps = 1.0/(new_time - 
CurrentFPS::last_time[CurrentFPS::count]);
+    DBG(dbg_fps_cout) << "CurrentFPS: " << CurrentFPS::current_fps << "\n";
+    CurrentFPS::count ++;
+    CurrentFPS::count %= CurrentFPS::NCounts;
+    CurrentFPS::current_fps5 = CurrentFPS::NCounts *
+                               1.0/(new_time - 
CurrentFPS::last_time[CurrentFPS::count]);
+    CurrentFPS::last_time[CurrentFPS::count] = new_time;
 
-      }
+  }
 }
-       
+   
 
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]