Merge remote-tracking branch 'origin/tracking' into custom

This commit is contained in:
roytam1 2025-09-23 15:20:06 +08:00
commit e4c5aafee9
6 changed files with 25 additions and 26 deletions

View file

@ -45,12 +45,12 @@ ApplyMorphologyHorizontal_Scalar(uint8_t* aSourceData, int32_t aSourceStride,
for (int32_t x = aDestRect.x; x < aDestRect.XMost(); x++, startX++, endX++) { for (int32_t x = aDestRect.x; x < aDestRect.XMost(); x++, startX++, endX++) {
int32_t sourceIndex = y * aSourceStride + 4 * startX; int32_t sourceIndex = y * aSourceStride + 4 * startX;
uint8_t u[4]; uint8_t u[4];
for (size_t i = 0; i < 4; i++) { for (int32_t i = 0; i < int32_t(std::size(u)); i++) {
u[i] = aSourceData[sourceIndex + i]; u[i] = aSourceData[sourceIndex + i];
} }
sourceIndex += 4; sourceIndex += 4;
for (int32_t ix = startX + 1; ix <= endX; ix++, sourceIndex += 4) { for (int32_t ix = startX + 1; ix <= endX; ix++, sourceIndex += 4) {
for (size_t i = 0; i < 4; i++) { for (int32_t i = 0; i < int32_t(std::size(u)); i++) {
if (Operator == MORPHOLOGY_OPERATOR_ERODE) { if (Operator == MORPHOLOGY_OPERATOR_ERODE) {
u[i] = umin(u[i], aSourceData[sourceIndex + i]); u[i] = umin(u[i], aSourceData[sourceIndex + i]);
} else { } else {
@ -60,7 +60,7 @@ ApplyMorphologyHorizontal_Scalar(uint8_t* aSourceData, int32_t aSourceStride,
} }
int32_t destIndex = y * aDestStride + 4 * x; int32_t destIndex = y * aDestStride + 4 * x;
for (size_t i = 0; i < 4; i++) { for (int32_t i = 0; i < int32_t(std::size(u)); i++) {
aDestData[destIndex+i] = u[i]; aDestData[destIndex+i] = u[i];
} }
} }
@ -97,12 +97,12 @@ static void ApplyMorphologyVertical_Scalar(uint8_t* aSourceData, int32_t aSource
for (int32_t x = aDestRect.x; x < aDestRect.XMost(); x++) { for (int32_t x = aDestRect.x; x < aDestRect.XMost(); x++) {
int32_t sourceIndex = startY * aSourceStride + 4 * x; int32_t sourceIndex = startY * aSourceStride + 4 * x;
uint8_t u[4]; uint8_t u[4];
for (size_t i = 0; i < 4; i++) { for (int32_t i = 0; i < int32_t(std::size(u)); i++) {
u[i] = aSourceData[sourceIndex + i]; u[i] = aSourceData[sourceIndex + i];
} }
sourceIndex += aSourceStride; sourceIndex += aSourceStride;
for (int32_t iy = startY + 1; iy <= endY; iy++, sourceIndex += aSourceStride) { for (int32_t iy = startY + 1; iy <= endY; iy++, sourceIndex += aSourceStride) {
for (size_t i = 0; i < 4; i++) { for (int32_t i = 0; i < int32_t(std::size(u)); i++) {
if (Operator == MORPHOLOGY_OPERATOR_ERODE) { if (Operator == MORPHOLOGY_OPERATOR_ERODE) {
u[i] = umin(u[i], aSourceData[sourceIndex + i]); u[i] = umin(u[i], aSourceData[sourceIndex + i]);
} else { } else {
@ -112,7 +112,7 @@ static void ApplyMorphologyVertical_Scalar(uint8_t* aSourceData, int32_t aSource
} }
int32_t destIndex = y * aDestStride + 4 * x; int32_t destIndex = y * aDestStride + 4 * x;
for (size_t i = 0; i < 4; i++) { for (int32_t i = 0; i < int32_t(std::size(u)); i++) {
aDestData[destIndex+i] = u[i]; aDestData[destIndex+i] = u[i];
} }
} }

View file

@ -495,7 +495,7 @@ public:
private: private:
// The font table data block // The font table data block
const nsTArray<uint8_t> mTableData; nsTArray<uint8_t> mTableData;
// The blob destroy function needs to know the owning font entry // The blob destroy function needs to know the owning font entry
// so that it can hold the font-entry's reference while modifying the // so that it can hold the font-entry's reference while modifying the
@ -591,16 +591,12 @@ gfxFontEntry::ShareFontTableAndGetBlob(uint32_t aTag,
mFontTableCache = MakeUnique<nsTHashtable<FontTableHashEntry>>(8); mFontTableCache = MakeUnique<nsTHashtable<FontTableHashEntry>>(8);
} }
FontTableHashEntry* entry; FontTableHashEntry *entry = mFontTableCache->PutEntry(aTag);
if (MOZ_UNLIKELY(entry = mFontTableCache->GetEntry(aTag))) { if (MOZ_UNLIKELY(!entry)) {
// We must have been racing with another GetFontTable for the same table, // OOM or other issue storing the entry.
// and it won the race and filled in the entry before us. return nullptr;
// Ignore `aBuffer` in that case, and return a reference to the existing blob.
return entry->GetBlob();
} }
entry = mFontTableCache->PutEntry(aTag);
if (!aBuffer) { if (!aBuffer) {
// ensure the entry is null // ensure the entry is null
entry->Clear(); entry->Clear();

View file

@ -265,7 +265,8 @@ public:
// unregisters the table from the font entry. // unregisters the table from the font entry.
// //
// Pass nullptr for aBuffer to indicate that the table is not present and // Pass nullptr for aBuffer to indicate that the table is not present and
// nullptr will be returned. // nullptr will be returned. Also returns nullptr on OOM or when there are
// other issues storing the entry in the cache table.
hb_blob_t *ShareFontTableAndGetBlob(uint32_t aTag, hb_blob_t *ShareFontTableAndGetBlob(uint32_t aTag,
nsTArray<uint8_t>* aTable); nsTArray<uint8_t>* aTable);

View file

@ -272,7 +272,9 @@ public:
virtual void GetAzureBackendInfo(mozilla::widget::InfoObject &aObj) { virtual void GetAzureBackendInfo(mozilla::widget::InfoObject &aObj) {
aObj.DefineProperty("AzureCanvasBackend", GetBackendName(mPreferredCanvasBackend)); aObj.DefineProperty("AzureCanvasBackend", GetBackendName(mPreferredCanvasBackend));
aObj.DefineProperty("AzureCanvasAccelerated", AllowOpenGLCanvas()); if (mPreferredCanvasBackend == mozilla::gfx::BackendType::SKIA) {
aObj.DefineProperty("AzureCanvasSkiaOpenGL", AllowOpenGLCanvas());
}
aObj.DefineProperty("AzureFallbackCanvasBackend", GetBackendName(mFallbackCanvasBackend)); aObj.DefineProperty("AzureFallbackCanvasBackend", GetBackendName(mFallbackCanvasBackend));
aObj.DefineProperty("AzureContentBackend", GetBackendName(mContentBackend)); aObj.DefineProperty("AzureContentBackend", GetBackendName(mContentBackend));
} }

View file

@ -111,7 +111,7 @@ input:-moz-autofill-highlight,
select:-moz-autofill-highlight, select:-moz-autofill-highlight,
textarea:-moz-autofill-highlight { textarea:-moz-autofill-highlight {
background-color: #fffcd0 !important; background-color: #fffcd0 !important;
color: #090909; color: #090909 !important;
} }
input > .anonymous-div, input > .anonymous-div,

View file

@ -620,22 +620,22 @@ nsHttpResponseHead::ParseHeaderLine_locked(const nsACString &line, bool original
// permit only a single value here. // permit only a single value here.
if (nsHttp::ParseInt64(val.get(), &ignored, &len)) { if (nsHttp::ParseInt64(val.get(), &ignored, &len)) {
mContentLength = len; mContentLength = len;
} } else {
else {
// If this is a negative content length then just ignore it // If this is a negative content length then just ignore it
LOG(("invalid content-length! %s\n", val.get())); LOG(("invalid content-length! %s\n", val.get()));
} }
} } else if (hdr == nsHttp::Content_Type) {
else if (hdr == nsHttp::Content_Type) {
LOG(("ParseContentType [type=%s]\n", val.get())); LOG(("ParseContentType [type=%s]\n", val.get()));
bool dummy; bool dummy;
net_ParseContentType(val, net_ParseContentType(val,
mContentType, mContentCharset, &dummy); mContentType, mContentCharset, &dummy);
} } else if (hdr == nsHttp::Cache_Control) {
else if (hdr == nsHttp::Cache_Control) // Re-parse merged header in its entirety. See Issue #2852
ParseCacheControl(val.get()); ParseCacheControl(mHeaders.PeekHeader(hdr));
else if (hdr == nsHttp::Pragma) } else if (hdr == nsHttp::Pragma) {
ParsePragma(val.get()); ParsePragma(val.get());
}
return NS_OK; return NS_OK;
} }