зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1626570 - Improve handling of copying arrays in gfx/. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D73635
This commit is contained in:
Родитель
f87a1f858f
Коммит
2e6385ca34
|
@ -219,7 +219,7 @@ class PolygonTyped {
|
|||
return PolygonTyped<Units>();
|
||||
}
|
||||
|
||||
nsTArray<Point4DType> clippedPoints(mPoints);
|
||||
nsTArray<Point4DType> clippedPoints(mPoints.Clone());
|
||||
|
||||
size_t pos, neg;
|
||||
nsTArray<Point4DType> backPoints(4), frontPoints(4);
|
||||
|
@ -385,7 +385,7 @@ class PolygonTyped {
|
|||
}
|
||||
|
||||
Point4DType mNormal;
|
||||
nsTArray<Point4DType> mPoints;
|
||||
CopyableTArray<Point4DType> mPoints;
|
||||
};
|
||||
|
||||
typedef PolygonTyped<UnknownUnits> Polygon;
|
||||
|
|
|
@ -30,7 +30,7 @@ void gfxVars::SetValuesForInitialize(
|
|||
}
|
||||
} else {
|
||||
// Save the values for Initialize call
|
||||
gGfxVarInitUpdates = new nsTArray<GfxVarUpdate>(aInitUpdates);
|
||||
gGfxVarInitUpdates = new nsTArray<GfxVarUpdate>(aInitUpdates.Clone());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2077,7 +2077,7 @@ static void ReportArrayContents(
|
|||
|
||||
printf_stderr("%s:\n", title);
|
||||
|
||||
nsTArray<GLContext::NamedResource> copy(aArray);
|
||||
nsTArray<GLContext::NamedResource> copy(aArray.Clone());
|
||||
copy.Sort();
|
||||
|
||||
GLContext* lastContext = nullptr;
|
||||
|
|
|
@ -228,7 +228,7 @@ struct ToAlphaAttributes {
|
|||
|
||||
// Complex PrimitiveAttributes:
|
||||
|
||||
class ImplicitlyCopyableFloatArray : public nsTArray<float> {
|
||||
class ImplicitlyCopyableFloatArray : public CopyableTArray<float> {
|
||||
public:
|
||||
ImplicitlyCopyableFloatArray() = default;
|
||||
|
||||
|
@ -415,10 +415,14 @@ class FilterPrimitiveDescription final {
|
|||
FilterPrimitiveDescription(FilterPrimitiveDescription&& aOther) = default;
|
||||
FilterPrimitiveDescription& operator=(FilterPrimitiveDescription&& aOther) =
|
||||
default;
|
||||
FilterPrimitiveDescription(const FilterPrimitiveDescription& aOther) =
|
||||
default;
|
||||
FilterPrimitiveDescription& operator=(
|
||||
const FilterPrimitiveDescription& aOther) = default;
|
||||
FilterPrimitiveDescription(const FilterPrimitiveDescription& aOther)
|
||||
: mAttributes(aOther.mAttributes),
|
||||
mInputPrimitives(aOther.mInputPrimitives.Clone()),
|
||||
mFilterPrimitiveSubregion(aOther.mFilterPrimitiveSubregion),
|
||||
mFilterSpaceBounds(aOther.mFilterSpaceBounds),
|
||||
mInputColorSpaces(aOther.mInputColorSpaces.Clone()),
|
||||
mOutputColorSpace(aOther.mOutputColorSpace),
|
||||
mIsTainted(aOther.mIsTainted) {}
|
||||
|
||||
const PrimitiveAttributes& Attributes() const { return mAttributes; }
|
||||
PrimitiveAttributes& Attributes() { return mAttributes; }
|
||||
|
@ -498,7 +502,7 @@ struct FilterDescription final {
|
|||
return !(*this == aOther);
|
||||
}
|
||||
|
||||
nsTArray<FilterPrimitiveDescription> mPrimitives;
|
||||
CopyableTArray<FilterPrimitiveDescription> mPrimitives;
|
||||
};
|
||||
|
||||
already_AddRefed<FilterNode> FilterNodeGraphFromDescription(
|
||||
|
|
|
@ -32,10 +32,10 @@ struct nsFont final {
|
|||
mozilla::FontFamilyList fontlist;
|
||||
|
||||
// Font features from CSS font-feature-settings
|
||||
nsTArray<gfxFontFeature> fontFeatureSettings;
|
||||
CopyableTArray<gfxFontFeature> fontFeatureSettings;
|
||||
|
||||
// Font variations from CSS font-variation-settings
|
||||
nsTArray<gfxFontVariation> fontVariationSettings;
|
||||
CopyableTArray<gfxFontVariation> fontVariationSettings;
|
||||
|
||||
// The logical size of the font, in nscoord units
|
||||
nscoord size = 0;
|
||||
|
|
|
@ -67,6 +67,9 @@ class UncheckedArray : public T {
|
|||
using T::Elements;
|
||||
using T::Length;
|
||||
|
||||
UncheckedArray() = default;
|
||||
MOZ_IMPLICIT UncheckedArray(T&& aSrc) : T(std::move(aSrc)) {}
|
||||
|
||||
E& operator[](size_t aIndex) { return Elements()[aIndex]; }
|
||||
const E& operator[](size_t aIndex) const { return Elements()[aIndex]; }
|
||||
E& LastElement() { return Elements()[Length() - 1]; }
|
||||
|
@ -102,9 +105,10 @@ struct Strip {
|
|||
struct Band {
|
||||
using Strip = regiondetails::Strip;
|
||||
#ifndef DEBUG
|
||||
using StripArray = regiondetails::UncheckedArray<AutoTArray<Strip, 2>, Strip>;
|
||||
using StripArray =
|
||||
regiondetails::UncheckedArray<CopyableAutoTArray<Strip, 2>, Strip>;
|
||||
#else
|
||||
using StripArray = AutoTArray<Strip, 2>;
|
||||
using StripArray = CopyableAutoTArray<Strip, 2>;
|
||||
#endif
|
||||
|
||||
MOZ_IMPLICIT Band(const nsRectAbsolute& aRect)
|
||||
|
@ -348,7 +352,7 @@ struct Band {
|
|||
}
|
||||
}
|
||||
|
||||
mStrips = newStrips;
|
||||
mStrips = std::move(newStrips);
|
||||
}
|
||||
|
||||
bool Intersects(const Band& aOther) const {
|
||||
|
@ -1900,7 +1904,7 @@ class nsRegion {
|
|||
|
||||
nsRegion& Copy(const nsRegion& aRegion) {
|
||||
mBounds = aRegion.mBounds;
|
||||
mBands = aRegion.mBands;
|
||||
mBands = aRegion.mBands.Clone();
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ class EnumerateFontsResult final : public Runnable {
|
|||
: Runnable("EnumerateFontsResult"),
|
||||
mRv(aRv),
|
||||
mEnumerateFontsPromise(std::move(aEnumerateFontsPromise)),
|
||||
mFontList(aFontList),
|
||||
mFontList(std::move(aFontList)),
|
||||
mWorkerThread(do_GetCurrentThread()) {
|
||||
MOZ_ASSERT(!NS_IsMainThread());
|
||||
}
|
||||
|
|
|
@ -436,9 +436,7 @@ static void NotifyDidRender(layers::CompositorBridgeParent* aBridge,
|
|||
aBridge->GetWrBridge()->RecordFrame();
|
||||
}
|
||||
|
||||
auto info = aInfo->Raw();
|
||||
|
||||
for (const auto& epoch : info.epochs) {
|
||||
for (const auto& epoch : aInfo->Raw().epochs) {
|
||||
aBridge->NotifyPipelineRendered(epoch.pipeline_id, epoch.epoch,
|
||||
aCompositeStartId, aCompositeStart,
|
||||
aRenderStart, aEnd, &aStats);
|
||||
|
@ -1123,8 +1121,9 @@ void wr_finished_scene_build(mozilla::wr::WrWindowId aWindowId,
|
|||
for (size_t i = 0; i < aDocumentIdsCount; ++i) {
|
||||
renderRoots[i] = wr::RenderRootFromId(aDocumentIds[i]);
|
||||
}
|
||||
layers::CompositorThreadHolder::Loop()->PostTask(NewRunnableFunction(
|
||||
"NotifyDidSceneBuild", &NotifyDidSceneBuild, cbp, renderRoots, info));
|
||||
layers::CompositorThreadHolder::Loop()->PostTask(
|
||||
NewRunnableFunction("NotifyDidSceneBuild", &NotifyDidSceneBuild, cbp,
|
||||
std::move(renderRoots), info));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче