fix crash when pressing "Bookmark Avatar" button

also modified LocationBookmarks for consistency
This commit is contained in:
Triplelexx 2017-04-04 18:05:00 +01:00
parent 8aa3e56ad4
commit 01b13d7032
6 changed files with 16 additions and 15 deletions

View file

@ -82,6 +82,7 @@
#include <controllers/StateController.h> #include <controllers/StateController.h>
#include <UserActivityLoggerScriptingInterface.h> #include <UserActivityLoggerScriptingInterface.h>
#include <LogHandler.h> #include <LogHandler.h>
#include "LocationBookmarks.h"
#include <MainWindow.h> #include <MainWindow.h>
#include <MappingRequest.h> #include <MappingRequest.h>
#include <MessagesClient.h> #include <MessagesClient.h>
@ -524,6 +525,7 @@ bool setupEssentials(int& argc, char** argv) {
DependencyManager::set<EntityScriptServerLogClient>(); DependencyManager::set<EntityScriptServerLogClient>();
DependencyManager::set<OctreeStatsProvider>(nullptr, qApp->getOcteeSceneStats()); DependencyManager::set<OctreeStatsProvider>(nullptr, qApp->getOcteeSceneStats());
DependencyManager::set<AvatarBookmarks>(); DependencyManager::set<AvatarBookmarks>();
DependencyManager::set<LocationBookmarks>();
return previousSessionCrashed; return previousSessionCrashed;
} }
@ -698,9 +700,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
usleep(USECS_PER_MSEC * 50); // 20hz usleep(USECS_PER_MSEC * 50); // 20hz
} }
_locationBookmarks = new LocationBookmarks(); // Before setting up the menu
_avatarBookmarks = new AvatarBookmarks();
// start the nodeThread so its event loop is running // start the nodeThread so its event loop is running
QThread* nodeThread = new QThread(this); QThread* nodeThread = new QThread(this);
nodeThread->setObjectName("NodeList Thread"); nodeThread->setObjectName("NodeList Thread");
@ -2003,6 +2002,7 @@ void Application::initializeUi() {
rootContext->setContextProperty("ScriptDiscoveryService", DependencyManager::get<ScriptEngines>().data()); rootContext->setContextProperty("ScriptDiscoveryService", DependencyManager::get<ScriptEngines>().data());
rootContext->setContextProperty("AudioDevice", AudioDeviceScriptingInterface::getInstance()); rootContext->setContextProperty("AudioDevice", AudioDeviceScriptingInterface::getInstance());
rootContext->setContextProperty("AvatarBookmarks", DependencyManager::get<AvatarBookmarks>().data()); rootContext->setContextProperty("AvatarBookmarks", DependencyManager::get<AvatarBookmarks>().data());
rootContext->setContextProperty("LocationBookmarks", DependencyManager::get<LocationBookmarks>().data());
// Caches // Caches
rootContext->setContextProperty("AnimationCache", DependencyManager::get<AnimationCache>().data()); rootContext->setContextProperty("AnimationCache", DependencyManager::get<AnimationCache>().data());
@ -5485,6 +5485,7 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri
scriptEngine->registerGlobalObject("AudioStats", DependencyManager::get<AudioClient>()->getStats().data()); scriptEngine->registerGlobalObject("AudioStats", DependencyManager::get<AudioClient>()->getStats().data());
scriptEngine->registerGlobalObject("AudioScope", DependencyManager::get<AudioScope>().data()); scriptEngine->registerGlobalObject("AudioScope", DependencyManager::get<AudioScope>().data());
scriptEngine->registerGlobalObject("AvatarBookmarks", DependencyManager::get<AvatarBookmarks>().data()); scriptEngine->registerGlobalObject("AvatarBookmarks", DependencyManager::get<AvatarBookmarks>().data());
scriptEngine->registerGlobalObject("LocationBookmarks", DependencyManager::get<LocationBookmarks>().data());
// Caches // Caches
scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get<AnimationCache>().data()); scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get<AnimationCache>().data());

View file

@ -52,8 +52,6 @@
#include "avatar/MyAvatar.h" #include "avatar/MyAvatar.h"
#include "BandwidthRecorder.h" #include "BandwidthRecorder.h"
#include "LocationBookmarks.h"
#include "AvatarBookmarks.h"
#include "Camera.h" #include "Camera.h"
#include "ConnectionMonitor.h" #include "ConnectionMonitor.h"
#include "gpu/Context.h" #include "gpu/Context.h"
@ -264,8 +262,6 @@ public:
glm::mat4 getEyeProjection(int eye) const; glm::mat4 getEyeProjection(int eye) const;
QRect getDesirableApplicationGeometry() const; QRect getDesirableApplicationGeometry() const;
LocationBookmarks* getLocationBookmarks() const { return _locationBookmarks; }
AvatarBookmarks* getAvatarBookmarks() const { return _avatarBookmarks; }
virtual bool canAcceptURL(const QString& url) const override; virtual bool canAcceptURL(const QString& url) const override;
virtual bool acceptURL(const QString& url, bool defaultUpload = false) override; virtual bool acceptURL(const QString& url, bool defaultUpload = false) override;
@ -605,9 +601,6 @@ private:
bool _aboutToQuit; bool _aboutToQuit;
QPointer<LocationBookmarks> _locationBookmarks;
QPointer<AvatarBookmarks> _avatarBookmarks;
bool _notifiedPacketVersionMismatchThisDomain; bool _notifiedPacketVersionMismatchThisDomain;
QThread _settingsThread; QThread _settingsThread;

View file

@ -136,7 +136,6 @@ int Bookmarks::getMenuItemLocation(QList<QAction*> actions, const QString& name)
if (name.toLower().localeAwareCompare(action->text().toLower()) < 0) { if (name.toLower().localeAwareCompare(action->text().toLower()) < 0) {
menuItemLocation = actions.indexOf(action); menuItemLocation = actions.indexOf(action);
break; break;
} }
} }
return menuItemLocation; return menuItemLocation;

View file

@ -12,10 +12,12 @@
#ifndef hifi_LocationBookmarks_h #ifndef hifi_LocationBookmarks_h
#define hifi_LocationBookmarks_h #define hifi_LocationBookmarks_h
#include <DependencyManager.h>
#include "Bookmarks.h" #include "Bookmarks.h"
class LocationBookmarks: public Bookmarks { class LocationBookmarks : public Bookmarks, public Dependency {
Q_OBJECT Q_OBJECT
SINGLETON_DEPENDENCY
public: public:
LocationBookmarks(); LocationBookmarks();

View file

@ -32,6 +32,7 @@
#include "assets/ATPAssetMigrator.h" #include "assets/ATPAssetMigrator.h"
#include "audio/AudioScope.h" #include "audio/AudioScope.h"
#include "avatar/AvatarManager.h" #include "avatar/AvatarManager.h"
#include "AvatarBookmarks.h"
#include "devices/DdeFaceTracker.h" #include "devices/DdeFaceTracker.h"
#include "devices/Faceshift.h" #include "devices/Faceshift.h"
#include "MainWindow.h" #include "MainWindow.h"
@ -40,6 +41,7 @@
#include "ui/DialogsManager.h" #include "ui/DialogsManager.h"
#include "ui/StandAloneJSConsole.h" #include "ui/StandAloneJSConsole.h"
#include "InterfaceLogging.h" #include "InterfaceLogging.h"
#include "LocationBookmarks.h"
#if defined(Q_OS_MAC) || defined(Q_OS_WIN) #if defined(Q_OS_MAC) || defined(Q_OS_WIN)
#include "SpeechRecognizer.h" #include "SpeechRecognizer.h"
@ -195,7 +197,8 @@ Menu::Menu() {
qApp, SLOT(resetSensors())); qApp, SLOT(resetSensors()));
// Avatar > AvatarBookmarks related menus -- Note: the AvatarBookmarks class adds its own submenus here. // Avatar > AvatarBookmarks related menus -- Note: the AvatarBookmarks class adds its own submenus here.
qApp->getAvatarBookmarks()->setupMenus(this, avatarMenu); auto avatarBookmarks = DependencyManager::get<AvatarBookmarks>();
avatarBookmarks->setupMenus(this, avatarMenu);
// Display menu ---------------------------------- // Display menu ----------------------------------
// FIXME - this is not yet matching Alan's spec because it doesn't have // FIXME - this is not yet matching Alan's spec because it doesn't have
@ -259,7 +262,8 @@ Menu::Menu() {
dialogsManager.data(), SLOT(toggleAddressBar())); dialogsManager.data(), SLOT(toggleAddressBar()));
// Navigate > LocationBookmarks related menus -- Note: the LocationBookmarks class adds its own submenus here. // Navigate > LocationBookmarks related menus -- Note: the LocationBookmarks class adds its own submenus here.
qApp->getLocationBookmarks()->setupMenus(this, navigateMenu); auto locationBookmarks = DependencyManager::get<LocationBookmarks>();
locationBookmarks->setupMenus(this, navigateMenu);
// Navigate > Copy Address [advanced] // Navigate > Copy Address [advanced]
auto addressManager = DependencyManager::get<AddressManager>(); auto addressManager = DependencyManager::get<AddressManager>();

View file

@ -17,6 +17,7 @@
#include "DependencyManager.h" #include "DependencyManager.h"
#include "AddressManager.h" #include "AddressManager.h"
#include "DialogsManager.h" #include "DialogsManager.h"
#include "LocationBookmarks.h"
HIFI_QML_DEF(AddressBarDialog) HIFI_QML_DEF(AddressBarDialog)
@ -52,7 +53,8 @@ void AddressBarDialog::loadAddress(const QString& address, bool fromSuggestions)
void AddressBarDialog::loadHome() { void AddressBarDialog::loadHome() {
qDebug() << "Called LoadHome"; qDebug() << "Called LoadHome";
QString homeLocation = qApp->getLocationBookmarks()->addressForBookmark(LocationBookmarks::HOME_BOOKMARK); auto locationBookmarks = DependencyManager::get<LocationBookmarks>();
QString homeLocation = locationBookmarks->addressForBookmark(LocationBookmarks::HOME_BOOKMARK);
const QString DEFAULT_HOME_LOCATION = "localhost"; const QString DEFAULT_HOME_LOCATION = "localhost";
if (homeLocation == "") { if (homeLocation == "") {
homeLocation = DEFAULT_HOME_LOCATION; homeLocation = DEFAULT_HOME_LOCATION;