Index: cc/resources/video_resource_updater.h |
diff --git a/cc/resources/video_resource_updater.h b/cc/resources/video_resource_updater.h |
index d4eaae32a6734355f8ab1643f5a81622a49dd634..24dd24d40858ceb65466f3b183b4957a1eb7e218 100644 |
--- a/cc/resources/video_resource_updater.h |
+++ b/cc/resources/video_resource_updater.h |
@@ -99,6 +99,14 @@ class CC_EXPORT VideoResourceUpdater |
// frame pointer will only be used for pointer comparison, i.e. the |
// underlying data will not be accessed. |
const void* frame_ptr; |
+#if DCHECK_IS_ON() |
+ // This is marked true when the orginal VideoFrame is destructed. It is |
+ // used to detect clients that are not setting the VideoFrame's timestamp |
+ // field correctly, as required. The memory allocator can and will re-use |
+ // the same pointer for new VideoFrame instances, so a destruction observer |
+ // is used to detect that. |
+ bool destructed; |
+#endif |
size_t plane_index; |
base::TimeDelta timestamp; |
@@ -143,6 +151,12 @@ class CC_EXPORT VideoResourceUpdater |
const gpu::SyncToken& sync_token, |
bool lost_resource, |
BlockingTaskRunner* main_thread_task_runner); |
+#if DCHECK_IS_ON() |
+ // Mark the |destructed| as true when the orginal VideoFrame is destructed. |
+ static void MarkOldResource(base::WeakPtr<VideoResourceUpdater> updater, |
+ const media::VideoFrame* video_frame_ptr, |
+ base::TimeDelta timestamp); |
+#endif |
ContextProvider* context_provider_; |
ResourceProvider* resource_provider_; |