22#include <com/sun/star/lang/XComponent.hpp>
23#include <com/sun/star/rendering/XSpriteCanvas.hpp>
43 const Reference<rendering::XSpriteCanvas>& rxSharedCanvas)
46 static std::vector<std::pair<
47 uno::WeakReference<rendering::XSpriteCanvas>,
48 std::weak_ptr<CanvasUpdateRequester>>> s_RequesterMap;
49 for (
auto it = s_RequesterMap.begin(); it != s_RequesterMap.end(); )
51 uno::Reference<rendering::XSpriteCanvas>
const xCanvas(it->first);
54 it = s_RequesterMap.erase(it);
56 else if (xCanvas == rxSharedCanvas)
58 std::shared_ptr<CanvasUpdateRequester> pRequester(it->second);
65 std::shared_ptr<CanvasUpdateRequester>
const pNew(
78 std::shared_ptr<CanvasUpdateRequester> pRequester (
80 s_RequesterMap.emplace_back(rxSharedCanvas, pRequester);
86 const Reference<rendering::XSpriteCanvas>& rxCanvas)
88 , m_pUserEventId(nullptr)
91 Reference<lang::XComponent> xComponent (
mxCanvas, UNO_QUERY);
119 m_pUserEventId =
nullptr;
122 mxCanvas->updateScreen(mbUpdateFlag);
123 mbUpdateFlag =
false;
Reference< rendering::XCanvas > mxCanvas
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
void operator()(CanvasUpdateRequester *pObject)
Each UpdateRequester handles update requests (calls to XCanvas::updateScreen()) for one shared canvas...
ImplSVEvent * m_pUserEventId
static std::shared_ptr< CanvasUpdateRequester > Instance(const css::uno::Reference< css::rendering::XSpriteCanvas > &rxCanvas)
std::shared_ptr< CanvasUpdateRequester > m_pThis
keep instance alive waiting for event dispatch
CanvasUpdateRequester(const CanvasUpdateRequester &)=delete
void RequestUpdate(const bool bUpdateAll)
css::uno::Reference< css::rendering::XSpriteCanvas > mxCanvas
EmbeddedObjectRef * pObject
#define LINK(Instance, Class, Member)
IMPL_LINK_NOARG(CanvasUpdateRequester, Callback, void *, void)