summaryrefslogtreecommitdiffstats
path: root/gfx/layers/CanvasDrawEventRecorder.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:35:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:35:49 +0000
commitd8bbc7858622b6d9c278469aab701ca0b609cddf (patch)
treeeff41dc61d9f714852212739e6b3738b82a2af87 /gfx/layers/CanvasDrawEventRecorder.cpp
parentReleasing progress-linux version 125.0.3-1~progress7.99u1. (diff)
downloadfirefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.tar.xz
firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.zip
Merging upstream version 126.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/layers/CanvasDrawEventRecorder.cpp')
-rw-r--r--gfx/layers/CanvasDrawEventRecorder.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/gfx/layers/CanvasDrawEventRecorder.cpp b/gfx/layers/CanvasDrawEventRecorder.cpp
index af143bf5cb..6140fc4ba7 100644
--- a/gfx/layers/CanvasDrawEventRecorder.cpp
+++ b/gfx/layers/CanvasDrawEventRecorder.cpp
@@ -127,6 +127,7 @@ int64_t CanvasDrawEventRecorder::CreateCheckpoint() {
int64_t checkpoint = mHeader->eventCount;
RecordEvent(RecordedCheckpoint());
ClearProcessedExternalSurfaces();
+ ClearProcessedExternalImages();
return checkpoint;
}
@@ -276,6 +277,7 @@ void CanvasDrawEventRecorder::DropFreeBuffers() {
}
ClearProcessedExternalSurfaces();
+ ClearProcessedExternalImages();
}
void CanvasDrawEventRecorder::IncrementEventCount() {
@@ -444,6 +446,16 @@ void CanvasDrawEventRecorder::StoreSourceSurfaceRecording(
DrawEventRecorderPrivate::StoreSourceSurfaceRecording(aSurface, aReason);
}
+void CanvasDrawEventRecorder::StoreImageRecording(
+ const RefPtr<Image>& aImageOfSurfaceDescriptor, const char* aReasony) {
+ NS_ASSERT_OWNINGTHREAD(CanvasDrawEventRecorder);
+
+ StoreExternalImageRecording(aImageOfSurfaceDescriptor);
+ mExternalImages.back().mEventCount = mHeader->eventCount;
+
+ ClearProcessedExternalImages();
+}
+
void CanvasDrawEventRecorder::ClearProcessedExternalSurfaces() {
while (!mExternalSurfaces.empty()) {
if (mExternalSurfaces.front().mEventCount > mHeader->processedCount) {
@@ -453,5 +465,14 @@ void CanvasDrawEventRecorder::ClearProcessedExternalSurfaces() {
}
}
+void CanvasDrawEventRecorder::ClearProcessedExternalImages() {
+ while (!mExternalImages.empty()) {
+ if (mExternalImages.front().mEventCount > mHeader->processedCount) {
+ break;
+ }
+ mExternalImages.pop_front();
+ }
+}
+
} // namespace layers
} // namespace mozilla