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
|
void
|
||||||
Model::AddPackages(const std::vector<PackageInfoRef>& packages)
|
Model::AddPackages(const std::vector<PackageInfoRef>& packages)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user