MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / sharedDocument

Method sharedDocument

Telegram/SourceFiles/data/data_streaming.cpp:119–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117
118template <typename Data>
119[[nodiscard]] std::shared_ptr<Streaming::Document> Streaming::sharedDocument(
120 base::flat_map<not_null<Data*>, std::weak_ptr<Document>> &documents,
121 base::flat_map<not_null<Data*>, std::weak_ptr<Reader>> &readers,
122 not_null<Data*> data,
123 DocumentData *original,
124 HistoryItem *context,
125 FileOrigin origin) {
126 auto otherQualities = LookupOtherQualities(original, data, context);
127 const auto i = documents.find(data);
128 if (i != end(documents)) {
129 if (auto result = i->second.lock()) {
130 if (!otherQualities.empty()) {
131 result->setOtherQualities(std::move(otherQualities));
132 }
133 return result;
134 }
135 }
136 auto reader = sharedReader(readers, data, origin);
137 if (!reader) {
138 return nullptr;
139 }
140 auto result = std::make_shared<Document>(
141 data,
142 std::move(reader),
143 std::move(otherQualities));
144 if (!PruneDestroyedAndSet(documents, data, result)) {
145 documents.emplace_or_assign(data, result);
146 }
147 return result;
148}
149
150template <typename Data>
151void Streaming::keepAlive(

Callers 9

playMethod · 0.80
InstanceMethod · 0.80
VideoPreviewFunction · 0.80
ProcessFullPhotoFunction · 0.80
createStreamingMethod · 0.80
createStreamedPlayerMethod · 0.80

Calls 6

LookupOtherQualitiesFunction · 0.85
PruneDestroyedAndSetFunction · 0.85
setOtherQualitiesMethod · 0.80
findMethod · 0.45
lockMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected