From d37ebc55c0011977fe530a728a98a6646a477957 Mon Sep 17 00:00:00 2001 From: Andrew Lindesay Date: Sat, 9 May 2026 16:25:51 +1200 Subject: [PATCH] HaikuDepot: fix issue in pkg data update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Jérôme Duval Tested-by: Commit checker robot --- src/apps/haikudepot/model/Model.cpp | 11 +++++++++++ src/apps/haikudepot/model/Model.h | 2 ++ .../server/PopulatePkgChangelogFromServerProcess.cpp | 2 +- .../PopulatePkgUserRatingsFromServerProcess.cpp | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/apps/haikudepot/model/Model.cpp b/src/apps/haikudepot/model/Model.cpp index 99dd4f07ab..3a520742c6 100644 --- a/src/apps/haikudepot/model/Model.cpp +++ b/src/apps/haikudepot/model/Model.cpp @@ -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& packages) { diff --git a/src/apps/haikudepot/model/Model.h b/src/apps/haikudepot/model/Model.h index 6864f055fe..d435eb4e95 100644 --- a/src/apps/haikudepot/model/Model.h +++ b/src/apps/haikudepot/model/Model.h @@ -112,6 +112,8 @@ public: const std::vector FilteredPackages() const; void AddPackage(const PackageInfoRef& package); + void AddPackageWithChange(const PackageInfoRef& package, + uint32 changeMask); void AddPackages(const std::vector& packages); void AddPackagesWithChange(const std::vector& packages, uint32 changesMask); diff --git a/src/apps/haikudepot/server/PopulatePkgChangelogFromServerProcess.cpp b/src/apps/haikudepot/server/PopulatePkgChangelogFromServerProcess.cpp index 82c5d13078..0e4ea378cc 100644 --- a/src/apps/haikudepot/server/PopulatePkgChangelogFromServerProcess.cpp +++ b/src/apps/haikudepot/server/PopulatePkgChangelogFromServerProcess.cpp @@ -103,7 +103,7 @@ PopulatePkgChangelogFromServerProcess::_UpdateChangelog(const BString& value) PackageInfoRef updatedPackage = PackageInfoBuilder(package).WithLocalizedText(localizedText).BuildRef(); - fModel->AddPackage(updatedPackage); + fModel->AddPackageWithChange(updatedPackage, static_cast(PKG_CHANGED_LOCALIZED_TEXT)); return B_OK; } diff --git a/src/apps/haikudepot/server/PopulatePkgUserRatingsFromServerProcess.cpp b/src/apps/haikudepot/server/PopulatePkgUserRatingsFromServerProcess.cpp index b528cf1123..2bcbd02311 100644 --- a/src/apps/haikudepot/server/PopulatePkgUserRatingsFromServerProcess.cpp +++ b/src/apps/haikudepot/server/PopulatePkgUserRatingsFromServerProcess.cpp @@ -283,7 +283,7 @@ PopulatePkgUserRatingsFromServerProcess::RunInternal() .WithUserRatingInfo(userRatingInfoBuilder.BuildRef()) .BuildRef(); - fModel->AddPackage(updatedPackage); + fModel->AddPackageWithChange(updatedPackage, static_cast(PKG_CHANGED_RATINGS)); } return status;