From 7857ef774f8b380c6979922092b7ad290088739e Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sat, 19 Nov 2016 20:09:38 +0800 Subject: [PATCH] Ensured resets genuinely kill outstanding data. --- Outputs/CRT/Internals/ArrayBuilder.cpp | 12 +++++++++--- Outputs/CRT/Internals/ArrayBuilder.hpp | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Outputs/CRT/Internals/ArrayBuilder.cpp b/Outputs/CRT/Internals/ArrayBuilder.cpp index 67ba2edcc..514f827d8 100644 --- a/Outputs/CRT/Internals/ArrayBuilder.cpp +++ b/Outputs/CRT/Internals/ArrayBuilder.cpp @@ -148,6 +148,14 @@ void ArrayBuilder::Buffer::flush() } flushed_data = allocated_data; + + if(was_reset) + { + allocated_data = 0; + flushed_data = 0; + submitted_data = 0; + was_reset = false; + } } size_t ArrayBuilder::Buffer::submit(bool is_input) @@ -174,8 +182,6 @@ void ArrayBuilder::Buffer::bind() void ArrayBuilder::Buffer::reset() { - allocated_data = 0; - flushed_data = 0; - submitted_data = 0; + was_reset = true; is_full = false; } diff --git a/Outputs/CRT/Internals/ArrayBuilder.hpp b/Outputs/CRT/Internals/ArrayBuilder.hpp index dd3e26497..cf1b6c8a1 100644 --- a/Outputs/CRT/Internals/ArrayBuilder.hpp +++ b/Outputs/CRT/Internals/ArrayBuilder.hpp @@ -64,7 +64,7 @@ class ArrayBuilder { size_t allocated_data; size_t flushed_data; size_t submitted_data; - bool is_full; + bool is_full, was_reset; GLuint buffer; uint8_t *get_storage(size_t size);