From 3b0221fe7e9505babcd6fb12fef46d01aa05dd66 Mon Sep 17 00:00:00 2001 From: Denis Koronchik Date: Sat, 7 Nov 2015 22:48:39 +0300 Subject: [PATCH] Fix black rectangles because of data synchronization problem --- Source/Blu/Private/RenderHandler.cpp | 11 ++++++++++- Source/Blu/Public/RenderHandler.h | 5 ++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Source/Blu/Private/RenderHandler.cpp b/Source/Blu/Private/RenderHandler.cpp index 6b3f44e..62ba58d 100644 --- a/Source/Blu/Private/RenderHandler.cpp +++ b/Source/Blu/Private/RenderHandler.cpp @@ -5,6 +5,13 @@ RenderHandler::RenderHandler(int32 width, int32 height, UBluEye* ui) this->Width = width; this->Height = height; this->parentUI = ui; + this->BackBufferSizeCached = width * height * 4; + this->BackBuffer = new uint8[this->BackBufferSizeCached]; +} + +RenderHandler::~RenderHandler() +{ + delete this->BackBuffer; } bool RenderHandler::GetViewRect(CefRefPtr browser, CefRect &rect) @@ -28,8 +35,10 @@ void RenderHandler::OnPaint(CefRefPtr browser, PaintElementType type current++; } + memcpy(BackBuffer, buffer, BackBufferSizeCached); + // Trigger our parent UIs Texture to update - parentUI->TextureUpdate(buffer, updateRegions, dirtyRects.size()); + parentUI->TextureUpdate(BackBuffer, updateRegions, dirtyRects.size()); } bool BrowserClient::OnProcessMessageReceived(CefRefPtr browser, CefProcessId source_process, CefRefPtr message) diff --git a/Source/Blu/Public/RenderHandler.h b/Source/Blu/Public/RenderHandler.h index 2dba6fe..b66c51a 100644 --- a/Source/Blu/Public/RenderHandler.h +++ b/Source/Blu/Public/RenderHandler.h @@ -16,7 +16,9 @@ class RenderHandler : public CefRenderHandler { private: UBluEye* parentUI; - + uint8* BackBuffer; + uint32 BackBufferSizeCached; + public: int32 Width; @@ -28,6 +30,7 @@ class RenderHandler : public CefRenderHandler void OnPaint(CefRefPtr browser, PaintElementType type, const RectList &dirtyRects, const void *buffer, int width, int height) override; RenderHandler(int32 width, int32 height, UBluEye* ui); + ~RenderHandler(); // CefBase interface // NOTE: Must be at bottom