std::shared_ptr<CanvasUpdateRequester> CanvasUpdateRequester::Instance ( const Reference<rendering::XSpriteCanvas>& rxSharedCanvas)
{ // this global must not own anything or we crash on shutdown static std::vector<std::pair<
uno::WeakReference<rendering::XSpriteCanvas>,
std::weak_ptr<CanvasUpdateRequester>>> s_RequesterMap; for (auto it = s_RequesterMap.begin(); it != s_RequesterMap.end(); )
{
uno::Reference<rendering::XSpriteCanvas> const xCanvas(it->first); if (!xCanvas.is())
{
it = s_RequesterMap.erase(it); // remove stale entry
} elseif (xCanvas == rxSharedCanvas)
{
std::shared_ptr<CanvasUpdateRequester> pRequester(it->second); if (pRequester)
{ return pRequester;
} else
{
std::shared_ptr<CanvasUpdateRequester> const pNew( new CanvasUpdateRequester(rxSharedCanvas), Deleter());
it->second = pNew; return pNew;
}
} else
{
++it;
}
}
// No requester for the given canvas found. Create a new one.
std::shared_ptr<CanvasUpdateRequester> pRequester ( new CanvasUpdateRequester(rxSharedCanvas), Deleter());
s_RequesterMap.emplace_back(rxSharedCanvas, pRequester); return pRequester;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.