summaryrefslogtreecommitdiff
path: root/test/src/mbgl/test/stub_renderer_frontend.cpp
blob: 7edcfd397e62096b7080637cdb4a7e03ef9c53cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <mbgl/test/stub_renderer_frontend.hpp>

#include <mbgl/map/view.hpp>
#include <mbgl/renderer/renderer.hpp>

namespace mbgl {

StubRendererFrontend::StubRendererFrontend(std::unique_ptr<Renderer> renderer_, InvalidateCallback invalidate)
        : renderer(std::move(renderer_))
        , asyncInvalidate([this, invalidate=std::move(invalidate)]() {
                invalidate(*this);
            }) {
}

StubRendererFrontend::StubRendererFrontend(std::unique_ptr<Renderer> renderer_, View& view)
        : renderer(std::move(renderer_))
        , asyncInvalidate([&]() {
                this->render(view);
            }) {
}

StubRendererFrontend::~StubRendererFrontend() {
    reset();
}

void StubRendererFrontend::reset() {
    if (renderer) {
        renderer.reset();
    }
}

void StubRendererFrontend::setObserver(RendererObserver& observer) {
    if (!renderer) return;
    renderer->setObserver(&observer);
}

void StubRendererFrontend::update(std::shared_ptr<UpdateParameters> params) {
    updateParameters = std::move(params);
    asyncInvalidate.send();
}

void StubRendererFrontend::render(View& view) {
    if (!updateParameters || !renderer) return;
    renderer->render(view, *updateParameters);
}

Renderer* StubRendererFrontend::getRenderer() {
    return renderer.get();
}

} // namespace mbgl