From f660bfc9fc9fae0907c1f40b3acf8fc7f72b8a88 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 15 Apr 2005 23:06:45 +0000 Subject: [PATCH] fix GL crash --- panda/src/glstuff/glGraphicsStateGuardian_src.cxx | 1 - panda/src/gobj/indexBufferContext.I | 11 +++++++++++ panda/src/gobj/indexBufferContext.h | 1 + panda/src/gobj/qpgeomPrimitive.cxx | 5 +++++ panda/src/gobj/vertexBufferContext.I | 11 +++++++++++ panda/src/gobj/vertexBufferContext.h | 1 + 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index ac8d8e1dfc..b34afa022b 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -3012,7 +3012,6 @@ prepare_index_buffer(qpGeomPrimitive *data) { _glGenBuffers(1, &gibc->_index); if (GLCAT.is_debug()) { - const qpGeomVertexArrayData *vertices = data->get_vertices(); GLCAT.debug() << "creating index buffer " << gibc->_index << ": " << data->get_num_vertices() << " indices (" diff --git a/panda/src/gobj/indexBufferContext.I b/panda/src/gobj/indexBufferContext.I index faaddc4911..fe78cc44b6 100644 --- a/panda/src/gobj/indexBufferContext.I +++ b/panda/src/gobj/indexBufferContext.I @@ -88,6 +88,17 @@ was_modified() const { return _modified != _data->get_modified(); } +//////////////////////////////////////////////////////////////////// +// Function: IndexBufferContext::get_modified +// Access: Public +// Description: Returns the UpdateSeq that was recorded the last time +// mark_loaded() was called. +//////////////////////////////////////////////////////////////////// +INLINE UpdateSeq IndexBufferContext:: +get_modified() const { + return _modified; +} + //////////////////////////////////////////////////////////////////// // Function: IndexBufferContext::mark_loaded // Access: Public diff --git a/panda/src/gobj/indexBufferContext.h b/panda/src/gobj/indexBufferContext.h index 91371e1046..356c119eb5 100644 --- a/panda/src/gobj/indexBufferContext.h +++ b/panda/src/gobj/indexBufferContext.h @@ -46,6 +46,7 @@ public: INLINE bool changed_size() const; INLINE bool changed_usage_hint() const; INLINE bool was_modified() const; + INLINE UpdateSeq get_modified() const; INLINE void mark_loaded(); diff --git a/panda/src/gobj/qpgeomPrimitive.cxx b/panda/src/gobj/qpgeomPrimitive.cxx index e04048adf5..b682aabe65 100644 --- a/panda/src/gobj/qpgeomPrimitive.cxx +++ b/panda/src/gobj/qpgeomPrimitive.cxx @@ -170,6 +170,7 @@ add_vertex(int vertex) { index.add_data1i(vertex); + cdata->_modified = qpGeom::get_next_modified(); cdata->_got_minmax = false; } @@ -203,6 +204,7 @@ add_consecutive_vertices(int start, int num_vertices) { index.add_data1i(v); } + cdata->_modified = qpGeom::get_next_modified(); cdata->_got_minmax = false; } @@ -267,6 +269,8 @@ close_primitive() { #endif } + cdata->_modified = qpGeom::get_next_modified(); + return true; } @@ -284,6 +288,7 @@ clear_vertices() { cdata->_ends.clear(); cdata->_mins.clear(); cdata->_maxs.clear(); + cdata->_modified = qpGeom::get_next_modified(); cdata->_got_minmax = false; } diff --git a/panda/src/gobj/vertexBufferContext.I b/panda/src/gobj/vertexBufferContext.I index da1bbad75a..34c8a84f28 100644 --- a/panda/src/gobj/vertexBufferContext.I +++ b/panda/src/gobj/vertexBufferContext.I @@ -88,6 +88,17 @@ was_modified() const { return _modified != _data->get_modified(); } +//////////////////////////////////////////////////////////////////// +// Function: VertexBufferContext::get_modified +// Access: Public +// Description: Returns the UpdateSeq that was recorded the last time +// mark_loaded() was called. +//////////////////////////////////////////////////////////////////// +INLINE UpdateSeq VertexBufferContext:: +get_modified() const { + return _modified; +} + //////////////////////////////////////////////////////////////////// // Function: VertexBufferContext::mark_loaded // Access: Public diff --git a/panda/src/gobj/vertexBufferContext.h b/panda/src/gobj/vertexBufferContext.h index a60f39f15d..851fa1ef5a 100644 --- a/panda/src/gobj/vertexBufferContext.h +++ b/panda/src/gobj/vertexBufferContext.h @@ -46,6 +46,7 @@ public: INLINE bool changed_size() const; INLINE bool changed_usage_hint() const; INLINE bool was_modified() const; + INLINE UpdateSeq get_modified() const; INLINE void mark_loaded();