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:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user