From aca1fa0577c8877c4427987eb8f7bc8f46e95cd2 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 17 Nov 2016 13:37:53 +0800 Subject: [PATCH] Returned some video output. Enough significantly to reduce my paranoia. --- Outputs/CRT/CRT.cpp | 11 +++++++---- Outputs/CRT/Internals/ArrayBuilder.cpp | 8 +++++++- Outputs/CRT/Internals/ArrayBuilder.hpp | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Outputs/CRT/CRT.cpp b/Outputs/CRT/CRT.cpp index 61616e70a..3f4823229 100644 --- a/Outputs/CRT/CRT.cpp +++ b/Outputs/CRT/CRT.cpp @@ -203,10 +203,13 @@ void CRT::advance_cycles(unsigned int number_of_cycles, unsigned int source_divi // Construct the output run uint8_t *next_run = openGL_output_builder_.array_builder.get_output_storage(OutputVertexSize); - output_x1() = output_run_.x1; - output_position_y() = output_run_.y; - output_tex_y() = output_y; - output_x2() = (uint16_t)horizontal_flywheel_->get_current_output_position(); + if(next_run) + { + output_x1() = output_run_.x1; + output_position_y() = output_run_.y; + output_tex_y() = output_y; + output_x2() = (uint16_t)horizontal_flywheel_->get_current_output_position(); + } openGL_output_builder_.array_builder.flush(); openGL_output_builder_.unlock_output(); diff --git a/Outputs/CRT/Internals/ArrayBuilder.cpp b/Outputs/CRT/Internals/ArrayBuilder.cpp index 43eff9698..d3666fb5c 100644 --- a/Outputs/CRT/Internals/ArrayBuilder.cpp +++ b/Outputs/CRT/Internals/ArrayBuilder.cpp @@ -130,7 +130,13 @@ uint8_t *ArrayBuilder::Buffer::reget_storage(size_t &size) void ArrayBuilder::Buffer::flush() { - if(submitted_data && !is_full && allocated_data > submitted_data) + if(allocated_data > submitted_data) + { + flushed_data = allocated_data; + return; + } + + if(submitted_data) { memcpy(data.data(), &data[flushed_data], allocated_data - flushed_data); allocated_data -= flushed_data; diff --git a/Outputs/CRT/Internals/ArrayBuilder.hpp b/Outputs/CRT/Internals/ArrayBuilder.hpp index 2f00a64bb..6d9a0587a 100644 --- a/Outputs/CRT/Internals/ArrayBuilder.hpp +++ b/Outputs/CRT/Internals/ArrayBuilder.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include "OpenGL.hpp"