Browse Source

more paging fixes

David Rose 17 years ago
parent
commit
693fdafbf0
1 changed files with 36 additions and 9 deletions
  1. 36 9
      panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx

+ 36 - 9
panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx

@@ -809,7 +809,10 @@ draw_triangles(const GeomPrimitivePipelineReader *reader, bool force) {
     switch (reader->get_index_type()) {
     case Geom::NT_uint8:
       {
-        PN_uint8 *index = (PN_uint8 *)reader->get_read_pointer(true);
+        PN_uint8 *index = (PN_uint8 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; i += 3) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           GLVertex *v1 = &_vertices[index[i + 1] - _min_vertex];
@@ -821,7 +824,10 @@ draw_triangles(const GeomPrimitivePipelineReader *reader, bool force) {
 
     case Geom::NT_uint16:
       {
-        PN_uint16 *index = (PN_uint16 *)reader->get_read_pointer(true);
+        PN_uint16 *index = (PN_uint16 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; i += 3) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           GLVertex *v1 = &_vertices[index[i + 1] - _min_vertex];
@@ -833,7 +839,10 @@ draw_triangles(const GeomPrimitivePipelineReader *reader, bool force) {
 
     case Geom::NT_uint32:
       {
-        PN_uint32 *index = (PN_uint32 *)reader->get_read_pointer(true);
+        PN_uint32 *index = (PN_uint32 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; i += 3) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           GLVertex *v1 = &_vertices[index[i + 1] - _min_vertex];
@@ -881,7 +890,10 @@ draw_lines(const GeomPrimitivePipelineReader *reader, bool force) {
     switch (reader->get_index_type()) {
     case Geom::NT_uint8:
       {
-        PN_uint8 *index = (PN_uint8 *)reader->get_read_pointer(true);
+        PN_uint8 *index = (PN_uint8 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; i += 2) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           GLVertex *v1 = &_vertices[index[i + 1] - _min_vertex];
@@ -892,7 +904,10 @@ draw_lines(const GeomPrimitivePipelineReader *reader, bool force) {
 
     case Geom::NT_uint16:
       {
-        PN_uint16 *index = (PN_uint16 *)reader->get_read_pointer(true);
+        PN_uint16 *index = (PN_uint16 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; i += 2) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           GLVertex *v1 = &_vertices[index[i + 1] - _min_vertex];
@@ -903,7 +918,10 @@ draw_lines(const GeomPrimitivePipelineReader *reader, bool force) {
 
     case Geom::NT_uint32:
       {
-        PN_uint32 *index = (PN_uint32 *)reader->get_read_pointer(true);
+        PN_uint32 *index = (PN_uint32 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; i += 2) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           GLVertex *v1 = &_vertices[index[i + 1] - _min_vertex];
@@ -949,7 +967,10 @@ draw_points(const GeomPrimitivePipelineReader *reader, bool force) {
     switch (reader->get_index_type()) {
     case Geom::NT_uint8:
       {
-        PN_uint8 *index = (PN_uint8 *)reader->get_read_pointer(true);
+        PN_uint8 *index = (PN_uint8 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; ++i) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           gl_draw_point(_c, v0);
@@ -959,7 +980,10 @@ draw_points(const GeomPrimitivePipelineReader *reader, bool force) {
 
     case Geom::NT_uint16:
       {
-        PN_uint16 *index = (PN_uint16 *)reader->get_read_pointer(true);
+        PN_uint16 *index = (PN_uint16 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; ++i) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           gl_draw_point(_c, v0);
@@ -969,7 +993,10 @@ draw_points(const GeomPrimitivePipelineReader *reader, bool force) {
 
     case Geom::NT_uint32:
       {
-        PN_uint32 *index = (PN_uint32 *)reader->get_read_pointer(true);
+        PN_uint32 *index = (PN_uint32 *)reader->get_read_pointer(force);
+        if (index == NULL) {
+          return false;
+        }
         for (int i = 0; i < num_vertices; ++i) {
           GLVertex *v0 = &_vertices[index[i] - _min_vertex];
           gl_draw_point(_c, v0);