commit 020bcc9f69135538291828e6b60021da0a44d541
parent dcfe3013aab34cc8c28af421030597ec78b587fa
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Mon, 10 Oct 2011 08:07:25 +0200
Correction de quelques bugs dans square.c .
Diffstat:
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/square.c b/square.c
@@ -4,9 +4,6 @@
// Positionne v à (xx,yy) et calcule z. Met ref_count à 0.
#define INIT_VERTEX(v,xx,yy) do { (v)->refCount=0; (v)->x=(xx); (v)->y=(yy); (v)->z=get_z((xx),(yy)); } while(0);
-inline Vertex* use_vertex(Vertex* v) { v->refCount++; return v; }
-inline void unuse_vertex(Vertex* v) { if (--(v->refCount) == 0) free(v); }
-
// ROTATE4(x,r) == x+r % 4
#define ROTATE4(x,r) ((x+r) & 3)
@@ -57,6 +54,16 @@ static inline void qtnode_link_create(QTNode* a, QTNode* b) {
if (b != NULL) b->previousNode = a;
}
+inline Vertex* use_vertex(Vertex* v) { v->refCount++; return v; }
+inline void unuse_vertex(Vertex* v) {
+ // TODO : assert(v->refCount > 0);
+ if (--(v->refCount) == 0) {
+ // Supprime le vertex des listes de parcours.
+ vertex_link_remove(v);
+ free(v);
+ }
+}
+
void QT_split(QTNode* parent) {
// Ne pas split un noeud déjà split.
if (parent->children[QT_NE] != NULL) return;
@@ -149,9 +156,6 @@ void QT_merge(QTNode* parent) {
// Merge récursif des enfants.
QT_merge(parent->children[ROT_NE]);
- // Supprime les vertex NESO de parent des listes de parcours.
- vertex_link_remove(parent->children[ROT_NE]->vertices[ROT_NO]);
-
// reset à NULL les voisins qui pointaient vers des enfants.
if (parent->neighbors[ROT_N] != NULL)
if (parent->neighbors[ROT_N]->children[ROT_SE] != NULL)
@@ -209,23 +213,22 @@ QTNode* QT_baseNode() {
void QT_enumerate(QTNode* first) {
QTNode* n;
int r;
- Vertex* corner[4];
Vertex* v;
for (n = first; n != NULL; n = n->nextNode) {
// GL_Begin(TRIANGLE_FAN_LOOP);
// envoyer le vertex central :
- n->center;
+ (void)(n->center);
// Pour chaque côté
for (r = 0; r < 4; r++) {
// On parcourt tous les vertices le long du côté.
for (v = n->vertices[ROT_NO]; v != n->vertices[ROT_NE]; v = v->next[ROT_E]) {
// envoyer un vertex du fan :
- v;
+ (void)(v);
}
}
// Nécessaire ssi on fait un TRIANGLE_FAN et qu'on ne peut pas lui dire de fermer la boucle.
// On renvoie le 1er vertex du bord :
- n->vertices[QT_NO];
+ (void)(n->vertices[QT_NO]);
}
}