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 void
Model::AddPackages(const std::vector<PackageInfoRef>& packages) Model::AddPackages(const std::vector<PackageInfoRef>& packages)
{ {
+2
View File
@@ -112,6 +112,8 @@ public:
const std::vector<PackageInfoRef> const std::vector<PackageInfoRef>
FilteredPackages() const; FilteredPackages() const;
void AddPackage(const PackageInfoRef& package); void AddPackage(const PackageInfoRef& package);
void AddPackageWithChange(const PackageInfoRef& package,
uint32 changeMask);
void AddPackages(const std::vector<PackageInfoRef>& packages); void AddPackages(const std::vector<PackageInfoRef>& packages);
void AddPackagesWithChange(const std::vector<PackageInfoRef>& packages, void AddPackagesWithChange(const std::vector<PackageInfoRef>& packages,
uint32 changesMask); uint32 changesMask);
@@ -103,7 +103,7 @@ PopulatePkgChangelogFromServerProcess::_UpdateChangelog(const BString& value)
PackageInfoRef updatedPackage PackageInfoRef updatedPackage
= PackageInfoBuilder(package).WithLocalizedText(localizedText).BuildRef(); = PackageInfoBuilder(package).WithLocalizedText(localizedText).BuildRef();
fModel->AddPackage(updatedPackage); fModel->AddPackageWithChange(updatedPackage, static_cast<uint32>(PKG_CHANGED_LOCALIZED_TEXT));
return B_OK; return B_OK;
} }
@@ -283,7 +283,7 @@ PopulatePkgUserRatingsFromServerProcess::RunInternal()
.WithUserRatingInfo(userRatingInfoBuilder.BuildRef()) .WithUserRatingInfo(userRatingInfoBuilder.BuildRef())
.BuildRef(); .BuildRef();
fModel->AddPackage(updatedPackage); fModel->AddPackageWithChange(updatedPackage, static_cast<uint32>(PKG_CHANGED_RATINGS));
} }
return status; return status;