Files
MapLibreParticleLab/platform/qt/src/utils/renderer_observer.hpp
Tadej Novak 5b3d936521 [qt] Rename QMapboxGL to QMapLibreGL (#338)
* Rename QMapboxGL to QMapLibreGL

* Add missing QDebug includes

* Fix Qt CMake config

* Fix geojson warning

* Remove redundant OpenGL dependency

* Put everything under QMapLibreGL namespace

* Reorganise headers

Co-authored-by: Rinigus <rinigus.git@gmail.com>
2022-07-03 20:30:46 +02:00

56 lines
1.6 KiB
C++

#pragma once
#include <mbgl/actor/actor.hpp>
#include <mbgl/actor/actor_ref.hpp>
#include <mbgl/actor/mailbox.hpp>
#include <mbgl/renderer/renderer_observer.hpp>
#include <mbgl/util/run_loop.hpp>
#include <memory>
namespace QMapLibreGL {
// Forwards RendererObserver signals to the given
// Delegate RendererObserver on the given RunLoop
class RendererObserver : public mbgl::RendererObserver {
public:
RendererObserver(mbgl::util::RunLoop& mapRunLoop, mbgl::RendererObserver& delegate_)
: mailbox(std::make_shared<mbgl::Mailbox>(mapRunLoop))
, delegate(delegate_, mailbox) {
}
~RendererObserver() {
mailbox->close();
}
void onInvalidate() final {
delegate.invoke(&mbgl::RendererObserver::onInvalidate);
}
void onResourceError(std::exception_ptr err) final {
delegate.invoke(&mbgl::RendererObserver::onResourceError, err);
}
void onWillStartRenderingMap() final {
delegate.invoke(&mbgl::RendererObserver::onWillStartRenderingMap);
}
void onWillStartRenderingFrame() final {
delegate.invoke(&mbgl::RendererObserver::onWillStartRenderingFrame);
}
void onDidFinishRenderingFrame(RenderMode mode, bool repaintNeeded, bool placementChanged) final {
delegate.invoke(&mbgl::RendererObserver::onDidFinishRenderingFrame, mode, repaintNeeded, placementChanged);
}
void onDidFinishRenderingMap() final {
delegate.invoke(&mbgl::RendererObserver::onDidFinishRenderingMap);
}
private:
std::shared_ptr<mbgl::Mailbox> mailbox{};
mbgl::ActorRef<mbgl::RendererObserver> delegate;
};
} // namespace QMapLibreGL