| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/public/cpp/environment/logging.h" | 5 #include "mojo/public/cpp/environment/logging.h" |
| 6 #include "mojo/services/media/common/cpp/fifo_allocator.h" | 6 #include "mojo/services/media/common/cpp/fifo_allocator.h" |
| 7 | 7 |
| 8 namespace mojo { | 8 namespace mojo { |
| 9 namespace media { | 9 namespace media { |
| 10 | 10 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 // Create a new region (allocated) of the requested size at the front of the | 60 // Create a new region (allocated) of the requested size at the front of the |
| 61 // active region, and adjust the active region to reflect the deficit. | 61 // active region, and adjust the active region to reflect the deficit. |
| 62 MOJO_DCHECK(active_->size > size); | 62 MOJO_DCHECK(active_->size > size); |
| 63 Region* allocated = get_free(true, size, active_->offset); | 63 Region* allocated = get_free(true, size, active_->offset); |
| 64 active_->size -= size; | 64 active_->size -= size; |
| 65 active_->offset += size; | 65 active_->offset += size; |
| 66 insert_before(allocated, active_); | 66 insert_before(allocated, active_); |
| 67 return allocated->offset; | 67 return allocated->offset; |
| 68 } | 68 } |
| 69 | 69 |
| 70 void FifoAllocator::ReleaseRegion(uint64_t size, uint64_t offset) { | 70 void FifoAllocator::ReleaseRegion(uint64_t offset) { |
| 71 // Start at active_->next. That's usually the region we're looking for. | 71 // Start at active_->next. That's usually the region we're looking for. |
| 72 bool released = Release(size, offset, active_->next, nullptr) || | 72 bool released = Release(offset, active_->next, nullptr) || |
| 73 Release(size, offset, front_, active_); | 73 Release(offset, front_, active_); |
| 74 MOJO_DCHECK(released); | 74 MOJO_DCHECK(released); |
| 75 } | 75 } |
| 76 | 76 |
| 77 bool FifoAllocator::Release(uint64_t size, | 77 bool FifoAllocator::Release(uint64_t offset, |
| 78 uint64_t offset, | |
| 79 Region* begin, | 78 Region* begin, |
| 80 Region* end) { | 79 Region* end) { |
| 81 MOJO_DCHECK(begin != nullptr || end == nullptr); | 80 MOJO_DCHECK(begin != nullptr || end == nullptr); |
| 82 for (Region* region = begin; region != end; region = region->next) { | 81 for (Region* region = begin; region != end; region = region->next) { |
| 83 if (region->offset == offset) { | 82 if (region->offset == offset) { |
| 84 MOJO_DCHECK(region->allocated); | 83 MOJO_DCHECK(region->allocated); |
| 85 MOJO_DCHECK(region->size == size); | |
| 86 region->allocated = false; | 84 region->allocated = false; |
| 87 | 85 |
| 88 Region* prev = region->prev; | 86 Region* prev = region->prev; |
| 89 if (prev != nullptr && !prev->allocated) { | 87 if (prev != nullptr && !prev->allocated) { |
| 90 // Coalesce wtih the previous region. | 88 // Coalesce wtih the previous region. |
| 91 prev->size += region->size; | 89 prev->size += region->size; |
| 92 remove(region); | 90 remove(region); |
| 93 put_free(region); | 91 put_free(region); |
| 94 region = prev; | 92 region = prev; |
| 95 } | 93 } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 void FifoAllocator::DeleteFrontToBack(Region* region) { | 207 void FifoAllocator::DeleteFrontToBack(Region* region) { |
| 210 while (region != nullptr) { | 208 while (region != nullptr) { |
| 211 Region* to_delete = region; | 209 Region* to_delete = region; |
| 212 region = region->next; | 210 region = region->next; |
| 213 delete to_delete; | 211 delete to_delete; |
| 214 } | 212 } |
| 215 } | 213 } |
| 216 | 214 |
| 217 } // namespace media | 215 } // namespace media |
| 218 } // namespace mojo | 216 } // namespace mojo |
| OLD | NEW |