~ calling render text event on text update

~ small fixes for unit  tests
This commit is contained in:
Johannes Theiner 2019-12-04 10:14:31 +01:00
parent 1a6b8e0f2b
commit 868682e9d9
4 changed files with 6 additions and 5 deletions

View File

@ -61,7 +61,6 @@ constexpr int keyboardBufferSize = 16;
std::vector<std::function<void()>> eventTable;
bool localMemoryWarn = true;
char *sharedMemory = nullptr;
int maxTextLength = 60;
};
extern Impl impl;

View File

@ -165,7 +165,7 @@ namespace vkvm {
lockSharedMemory();
char *ptr = getTextArea();
for (int i = 0; i < text.size(); i++) {
if (i < getCharactersPerColumn() * getCharactersPerRow() && i < impl.maxTextLength) {
if (i < getCharactersPerColumn() * getCharactersPerRow()) {
ptr[i] = text[i];
}
}
@ -173,6 +173,7 @@ namespace vkvm {
ptr[text.size()] = '\0';
}
unlockSharedMemory();
callEvent(EventType::RenderText);
return true;
}
@ -183,11 +184,12 @@ namespace vkvm {
auto clearText() -> bool {
lockSharedMemory();
char *ptr = getTextArea();
for (int i = 0; i < impl.maxTextLength; ++i) {
for (int i = 0; i < getCharactersPerColumn() * getCharactersPerRow(); ++i) {
ptr[i] = '\0';
}
unlockSharedMemory();
callEvent(EventType::RenderText);
return true;
}

View File

@ -14,7 +14,7 @@ TEST_CASE("AREA") {
SECTION("Out of bounds") {
REQUIRE(!vkvm::setPixel(400, 400, vkvm::white));
REQUIRE_FALSE(vkvm::setPixel(400, 400, vkvm::white));
REQUIRE(vkvm::getPixel(400, 400) == vkvm::black);
vkvm::setBackgroundColor(vkvm::blue);

View File

@ -20,5 +20,5 @@ TEST_CASE("Text") {
REQUIRE(vkvm::getCharactersPerRow() == 1);
REQUIRE(vkvm::setText("Hello World"));
REQUIRE(vkvm::getText() == "Hello");
REQUIRE(vkvm::getText() == "Hello World");
}