HaikuDepot: Referencable Fixes

Some misuse of BReferencable / BReference are causing the
debugger to fire while debugging another issue.  This
should fix some of it.

Change-Id: I895e209afe9e350e35b111739140c85133107227
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2556
Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
Andrew Lindesay
2020-05-03 09:47:43 +00:00
parent 92290d9bc3
commit 1f3909ade1
11 changed files with 32 additions and 28 deletions
+3 -3
View File
@@ -1,5 +1,5 @@
/* /*
* Copyright 2019, Andrew Lindesay <[email protected]>. * Copyright 2019-2020, Andrew Lindesay <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
#include "LanguageModel.h" #include "LanguageModel.h"
@@ -33,7 +33,7 @@ LanguagesCompareFn(const LanguageRef& l1, const LanguageRef& l2)
LanguageModel::LanguageModel() LanguageModel::LanguageModel()
: :
fSupportedLanguages(LanguagesCompareFn, NULL), fSupportedLanguages(LanguagesCompareFn, NULL),
fPreferredLanguage(LANGUAGE_DEFAULT) fPreferredLanguage(LanguageRef(new Language(LANGUAGE_DEFAULT)))
{ {
const Language defaultLanguage = _DeriveDefaultLanguage(); const Language defaultLanguage = _DeriveDefaultLanguage();
fSupportedLanguages.Add(LanguageRef( fSupportedLanguages.Add(LanguageRef(
@@ -69,7 +69,7 @@ LanguageModel::AddSupportedLanguages(const LanguageList& languages)
void void
LanguageModel::_SetPreferredLanguage(const Language& language) LanguageModel::_SetPreferredLanguage(const Language& language)
{ {
fPreferredLanguage = language; fPreferredLanguage = LanguageRef(new Language(language));
if(Logger::IsDebugEnabled()) if(Logger::IsDebugEnabled())
printf("set preferred language [%s]\n", language.Code()); printf("set preferred language [%s]\n", language.Code());
} }
+3 -3
View File
@@ -1,5 +1,5 @@
/* /*
* Copyright 2019, Andrew Lindesay <[email protected]>. * Copyright 2019-2020, Andrew Lindesay <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
#ifndef LANGUAGE_MODEL_H #ifndef LANGUAGE_MODEL_H
@@ -28,7 +28,7 @@ public:
int32 IndexOfSupportedLanguage( int32 IndexOfSupportedLanguage(
const BString& languageCode) const; const BString& languageCode) const;
const Language& PreferredLanguage() const const LanguageRef PreferredLanguage() const
{ return fPreferredLanguage; } { return fPreferredLanguage; }
private: private:
@@ -40,7 +40,7 @@ private:
private: private:
LanguageList fSupportedLanguages; LanguageList fSupportedLanguages;
Language fPreferredLanguage; LanguageRef fPreferredLanguage;
}; };
+3 -3
View File
@@ -915,7 +915,7 @@ Model::DumpExportRepositoryDataPath(BPath& path) const
{ {
BString leaf; BString leaf;
leaf.SetToFormat("repository-all_%s.json.gz", leaf.SetToFormat("repository-all_%s.json.gz",
LanguageModel().PreferredLanguage().Code()); LanguageModel().PreferredLanguage()->Code());
return StorageUtils::LocalWorkingFilesPath(leaf, path); return StorageUtils::LocalWorkingFilesPath(leaf, path);
} }
@@ -930,7 +930,7 @@ Model::DumpExportReferenceDataPath(BPath& path) const
{ {
BString leaf; BString leaf;
leaf.SetToFormat("reference-all_%s.json.gz", leaf.SetToFormat("reference-all_%s.json.gz",
LanguageModel().PreferredLanguage().Code()); LanguageModel().PreferredLanguage()->Code());
return StorageUtils::LocalWorkingFilesPath(leaf, path); return StorageUtils::LocalWorkingFilesPath(leaf, path);
} }
@@ -948,7 +948,7 @@ Model::DumpExportPkgDataPath(BPath& path,
{ {
BString leaf; BString leaf;
leaf.SetToFormat("pkg-all-%s-%s.json.gz", repositorySourceCode.String(), leaf.SetToFormat("pkg-all-%s-%s.json.gz", repositorySourceCode.String(),
LanguageModel().PreferredLanguage().Code()); LanguageModel().PreferredLanguage()->Code());
return StorageUtils::LocalWorkingFilesPath(leaf, path); return StorageUtils::LocalWorkingFilesPath(leaf, path);
} }
@@ -107,7 +107,7 @@ ProcessCoordinatorFactory::CreateBulkLoadCoordinator(
for (int32 i = 0; i < repoNames.CountStrings(); i++) { for (int32 i = 0; i < repoNames.CountStrings(); i++) {
ProcessNode* processNode = new ProcessNode( ProcessNode* processNode = new ProcessNode(
new ServerPkgDataUpdateProcess( new ServerPkgDataUpdateProcess(
model->Language().PreferredLanguage().Code(), model->Language().PreferredLanguage()->Code(),
repoNames.StringAt(i), model, serverProcessOptions)); repoNames.StringAt(i), model, serverProcessOptions));
processNode->AddPredecessor(serverRepositoryDataUpdate); processNode->AddPredecessor(serverRepositoryDataUpdate);
processNode->AddPredecessor(serverReferenceDataUpdate); processNode->AddPredecessor(serverReferenceDataUpdate);
@@ -1,5 +1,5 @@
/* /*
* Copyright 2019, Andrew Lindesay <[email protected]>. * Copyright 2019-2020, Andrew Lindesay <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
@@ -66,7 +66,7 @@ ServerReferenceDataUpdateProcess::UrlPathComponent()
BString result; BString result;
AutoLocker<BLocker> locker(fModel->Lock()); AutoLocker<BLocker> locker(fModel->Lock());
result.SetToFormat("/__reference/all-%s.json.gz", result.SetToFormat("/__reference/all-%s.json.gz",
fModel->Language().PreferredLanguage().Code()); fModel->Language().PreferredLanguage()->Code());
return result; return result;
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright 2017-2019, Andrew Lindesay <[email protected]>. * Copyright 2017-2020, Andrew Lindesay <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
@@ -181,7 +181,7 @@ ServerRepositoryDataUpdateProcess::UrlPathComponent()
BString result; BString result;
AutoLocker<BLocker> locker(fModel->Lock()); AutoLocker<BLocker> locker(fModel->Lock());
result.SetToFormat("/__repository/all-%s.json.gz", result.SetToFormat("/__repository/all-%s.json.gz",
fModel->Language().PreferredLanguage().Code()); fModel->Language().PreferredLanguage()->Code());
return result; return result;
} }
@@ -1,6 +1,7 @@
/* /*
* Copyright 2013-214, Stephan Aßmus <[email protected]>. * Copyright 2013-214, Stephan Aßmus <[email protected]>.
* Copyright 2017, Julian Harnath <[email protected]>. * Copyright 2017, Julian Harnath <[email protected]>.
* Copyright 2020, Andrew Lindesay <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
@@ -123,7 +124,7 @@ public:
virtual ~PackageView() virtual ~PackageView()
{ {
fPackageListener->SetPackage(PackageInfoRef(NULL)); fPackageListener->SetPackage(PackageInfoRef(NULL));
delete fPackageListener; fPackageListener->ReleaseReference();
} }
virtual void AllAttached() virtual void AllAttached()
+4 -4
View File
@@ -1,6 +1,6 @@
/* /*
* Copyright 2014, Stephan Aßmus <[email protected]>. * Copyright 2014, Stephan Aßmus <[email protected]>.
* Copyright 2016-2019, Andrew Lindesay <[email protected]>. * Copyright 2016-2020, Andrew Lindesay <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
@@ -153,8 +153,8 @@ protected:
virtual const BBitmap* StarBitmap() virtual const BBitmap* StarBitmap()
{ {
if (fRatingDeterminate) if (fRatingDeterminate)
return fStarBlueBitmap.Bitmap(SharedBitmap::SIZE_16); return fStarBlueBitmap->Bitmap(SharedBitmap::SIZE_16);
return fStarGrayBitmap.Bitmap(SharedBitmap::SIZE_16); return fStarGrayBitmap->Bitmap(SharedBitmap::SIZE_16);
} }
private: private:
@@ -246,7 +246,7 @@ RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame,
{ {
AutoLocker<BLocker> locker(fModel.Lock()); AutoLocker<BLocker> locker(fModel.Lock());
fCommentLanguageCode = fModel.Language().PreferredLanguage().Code(); fCommentLanguageCode = fModel.Language().PreferredLanguage()->Code();
// Construct languages popup // Construct languages popup
BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language")); BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language"));
+1 -1
View File
@@ -147,7 +147,7 @@ UserLoginWindow::UserLoginWindow(BWindow* parent, BRect frame, Model& model)
{ {
AutoLocker<BLocker> locker(fModel.Lock()); AutoLocker<BLocker> locker(fModel.Lock());
fPreferredLanguageCode = fModel.Language().PreferredLanguage().Code(); fPreferredLanguageCode = fModel.Language().PreferredLanguage()->Code();
// Construct languages popup // Construct languages popup
BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language")); BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language"));
fLanguageCodeField = new BMenuField("language", fLanguageCodeField = new BMenuField("language",
@@ -1,6 +1,6 @@
/* /*
* Copyright 2013-2014, Stephan Aßmus <superstippi@gmx.de>. * Copyright 2013-2014, Stephan Aßmus <superstippi@gmx.de>.
* Copyright 2018, Andrew Lindesay <apl@lindesay.co.nz>. * Copyright 2018-2020, Andrew Lindesay <apl@lindesay.co.nz>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
@@ -17,8 +17,8 @@
RatingView::RatingView(const char* name) RatingView::RatingView(const char* name)
: :
BView(name, B_WILL_DRAW), BView(name, B_WILL_DRAW),
fStarBlueBitmap(RSRC_STAR_BLUE), fStarBlueBitmap(new SharedBitmap(RSRC_STAR_BLUE)),
fStarGrayBitmap(RSRC_STAR_GREY), fStarGrayBitmap(new SharedBitmap(RSRC_STAR_GREY)),
fRating(RATING_MISSING) fRating(RATING_MISSING)
{ {
SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
@@ -46,8 +46,8 @@ const BBitmap*
RatingView::StarBitmap() RatingView::StarBitmap()
{ {
if (fRating < RATING_MIN) if (fRating < RATING_MIN)
return fStarGrayBitmap.Bitmap(SharedBitmap::SIZE_16); return fStarGrayBitmap->Bitmap(SharedBitmap::SIZE_16);
return fStarBlueBitmap.Bitmap(SharedBitmap::SIZE_16); return fStarBlueBitmap->Bitmap(SharedBitmap::SIZE_16);
} }
+6 -3
View File
@@ -1,12 +1,13 @@
/* /*
* Copyright 2013-2014, Stephan Aßmus <superstippi@gmx.de>. * Copyright 2013-2014, Stephan Aßmus <superstippi@gmx.de>.
* Copyright 2018, Andrew Lindesay <apl@lindesay.co.nz>. * Copyright 2018-2020, Andrew Lindesay <apl@lindesay.co.nz>.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
*/ */
#ifndef RATING_VIEW_H #ifndef RATING_VIEW_H
#define RATING_VIEW_H #define RATING_VIEW_H
#include <Referenceable.h>
#include <View.h> #include <View.h>
#include "SharedBitmap.h" #include "SharedBitmap.h"
@@ -29,8 +30,10 @@ public:
protected: protected:
virtual const BBitmap* StarBitmap(); virtual const BBitmap* StarBitmap();
SharedBitmap fStarBlueBitmap; BReference<SharedBitmap>
SharedBitmap fStarGrayBitmap; fStarBlueBitmap;
BReference<SharedBitmap>
fStarGrayBitmap;
private: private:
float fRating; float fRating;