diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-04-21 04:17:24 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-04-21 04:17:29 +0200 |
commit | 424b02609fa34175a4e2aadb95e68b3c9c8dc93c (patch) | |
tree | c6312f04ea70a483fec9e76dcef8ae3ffa5e6424 /src/MessageBoard.cpp | |
parent | 09a8ade6becca2a71f45ff0db5f4bf6d64afb212 (diff) |
Fix emoji async download drawing
Diffstat (limited to 'src/MessageBoard.cpp')
-rw-r--r-- | src/MessageBoard.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/MessageBoard.cpp b/src/MessageBoard.cpp index acb7be1..575ae5f 100644 --- a/src/MessageBoard.cpp +++ b/src/MessageBoard.cpp @@ -143,6 +143,9 @@ namespace dchat case MessagePart::Type::EMOJI: { MessagePartEmoji *messagePartEmoji = static_cast<MessagePartEmoji*>(messagePart); + // Emoji is dirty when it's created, but render target can become dirty after emoji has been added, so we need to set emoji as dirty then + if(dirty) + messagePartEmoji->dirty = true; auto imageByUrlResult = cache.getImageByUrl(messagePartEmoji->url, 1024 * 512); position.x += 5.0f; if(imageByUrlResult.texture) @@ -152,8 +155,11 @@ namespace dchat sf::Vector2f spriteSize(MessagePartEmoji::getHeightScaled(), MessagePartEmoji::getHeightScaled()); messagePartEmoji->sprite.setScale(spriteSize.x / (float)imageByUrlResult.texture->getSize().x, spriteSize.y / (float)imageByUrlResult.texture->getSize().y); messagePartEmoji->sprite.setPosition(floor(position.x), floor(position.y + MessagePart::getSizeScaled() * 0.5f - MessagePartEmoji::getHeightScaled() * 0.5f)); - if(dirty) + if(messagePartEmoji->dirty) + { + messagePartEmoji->dirty = false; renderTarget->draw(messagePartEmoji->sprite); + } } else { @@ -161,8 +167,7 @@ namespace dchat sf::RectangleShape emojiDownloadRect(sf::Vector2f(MessagePartEmoji::getHeightScaled(), MessagePartEmoji::getHeightScaled())); emojiDownloadRect.setPosition(floor(position.x), floor(position.y + MessagePart::getSizeScaled() * 0.5f - MessagePartEmoji::getHeightScaled() * 0.5f)); emojiDownloadRect.setFillColor(sf::Color::White); - if(dirty) - renderTarget->draw(emojiDownloadRect); + window.draw(emojiDownloadRect); } position.x += MessagePartEmoji::getHeightScaled() + 5.0f; break; |