Set the current reader
| 330 | |
| 331 | /// Set the current reader |
| 332 | void Clip::Reader(ReaderBase* new_reader) |
| 333 | { |
| 334 | // Delete previously allocated reader (if not related to new reader) |
| 335 | // FrameMappers that point to the same allocated reader are ignored |
| 336 | bool is_same_reader = false; |
| 337 | if (new_reader && allocated_reader) { |
| 338 | if (new_reader->Name() == "FrameMapper") { |
| 339 | // Determine if FrameMapper is pointing at the same allocated ready |
| 340 | FrameMapper* clip_mapped_reader = static_cast<FrameMapper*>(new_reader); |
| 341 | if (allocated_reader == clip_mapped_reader->Reader()) { |
| 342 | is_same_reader = true; |
| 343 | } |
| 344 | } |
| 345 | } |
| 346 | // Clear existing allocated reader (if different) |
| 347 | if (allocated_reader && !is_same_reader) { |
| 348 | reader->Close(); |
| 349 | allocated_reader->Close(); |
| 350 | delete allocated_reader; |
| 351 | reader = NULL; |
| 352 | allocated_reader = NULL; |
| 353 | } |
| 354 | |
| 355 | // set reader pointer |
| 356 | reader = new_reader; |
| 357 | |
| 358 | // set parent |
| 359 | if (reader) { |
| 360 | reader->ParentClip(this); |
| 361 | |
| 362 | // Init reader info struct |
| 363 | init_reader_settings(); |
| 364 | } |
| 365 | } |
| 366 | |
| 367 | /// Get the current reader |
| 368 | ReaderBase* Clip::Reader() |
no test coverage detected