HaikuDepot: fix issue in pkg data update

This change will fix a sporadic problem caused by
the user selecting and interacting with packages
prior to all the package data being loaded.

Change-Id: I8ce38c03ffb6b0abc7979037e48d779a7d17a03c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10967
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
Andrew Lindesay
2026-05-09 21:04:22 +00:00
parent 1632ec7785
commit d37ebc55c0
4 changed files with 15 additions and 2 deletions
+11
View File
@@ -385,6 +385,17 @@ Model::AddPackage(const PackageInfoRef& package)
}
void
Model::AddPackageWithChange(const PackageInfoRef& package, uint32 changeMask)
{
if (!package.IsSet())
HDFATAL("attempt to add an unset package");
BAutolock locker(&fLock);
fPackages[package->Name()] = package;
_NotifyPackageChange(PackageChangeEvent(package, changeMask));
}
void
Model::AddPackages(const std::vector<PackageInfoRef>& packages)
{
+2
View File
@@ -112,6 +112,8 @@ public:
const std::vector<PackageInfoRef>
FilteredPackages() const;
void AddPackage(const PackageInfoRef& package);
void AddPackageWithChange(const PackageInfoRef& package,
uint32 changeMask);
void AddPackages(const std::vector<PackageInfoRef>& packages);
void AddPackagesWithChange(const std::vector<PackageInfoRef>& packages,
uint32 changesMask);
@@ -103,7 +103,7 @@ PopulatePkgChangelogFromServerProcess::_UpdateChangelog(const BString& value)
PackageInfoRef updatedPackage
= PackageInfoBuilder(package).WithLocalizedText(localizedText).BuildRef();
fModel->AddPackage(updatedPackage);
fModel->AddPackageWithChange(updatedPackage, static_cast<uint32>(PKG_CHANGED_LOCALIZED_TEXT));
return B_OK;
}
@@ -283,7 +283,7 @@ PopulatePkgUserRatingsFromServerProcess::RunInternal()
.WithUserRatingInfo(userRatingInfoBuilder.BuildRef())
.BuildRef();
fModel->AddPackage(updatedPackage);
fModel->AddPackageWithChange(updatedPackage, static_cast<uint32>(PKG_CHANGED_RATINGS));
}
return status;