History

Merge branch 'master' into 20263

David Rowe committed 11 years ago

Commit 95efe982 parents ebe8007 89967fb109 files · +681 −487Browse files

Showing the changes to interface/src/Application.cpp (1 of 109 files). Show all

Unified · Split

interface/src/Application.cpp+76−45
@@ -85,6 +85,8 @@ · 84 unmodified lines
8585 #include "Util.h"
8686
8787 #include "audio/AudioToolBox.h"
88+#include "audio/AudioIOStatsRenderer.h"
89+#include "audio/AudioScope.h"
8890
8991 #include "devices/DdeFaceTracker.h"
9092 #include "devices/Faceshift.h"
@@ -142,8 +144,42 @@ void messageHandler(QtMsgType type, const QMessageLogContext& context, const QSt · 51 unmodified lines
142144 }
143145 }
144146
147+bool setupEssentials(int& argc, char** argv) {
148+ unsigned int listenPort = 0; // bind to an ephemeral port by default
149+ const char** constArgv = const_cast<const char**>(argv);
150+ const char* portStr = getCmdOption(argc, constArgv, "--listenPort");
151+ if (portStr) {
152+ listenPort = atoi(portStr);
153+ }
154+
155+ DependencyManager::registerInheritance<LimitedNodeList, NodeList>();
156+
157+ // Set dependencies
158+ auto glCanvas = DependencyManager::set<GLCanvas>();
159+ auto addressManager = DependencyManager::set<AddressManager>();
160+ auto nodeList = DependencyManager::set<NodeList>(NodeType::Agent, listenPort);
161+ auto geometryCache = DependencyManager::set<GeometryCache>();
162+ auto glowEffect = DependencyManager::set<GlowEffect>();
163+ auto faceshift = DependencyManager::set<Faceshift>();
164+ auto audio = DependencyManager::set<Audio>();
165+ auto audioScope = DependencyManager::set<AudioScope>();
166+ auto audioIOStatsRenderer = DependencyManager::set<AudioIOStatsRenderer>();
167+ auto deferredLightingEffect = DependencyManager::set<DeferredLightingEffect>();
168+ auto ambientOcclusionEffect = DependencyManager::set<AmbientOcclusionEffect>();
169+ auto textureCache = DependencyManager::set<TextureCache>();
170+ auto animationCache = DependencyManager::set<AnimationCache>();
171+ auto visage = DependencyManager::set<Visage>();
172+ auto ddeFaceTracker = DependencyManager::set<DdeFaceTracker>();
173+ auto modelBlender = DependencyManager::set<ModelBlender>();
174+ auto audioToolBox = DependencyManager::set<AudioToolBox>();
175+
176+ return true;
177+}
178+
179+
145180 Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) :
146181 QApplication(argc, argv),
182+ _dependencyManagerIsSetup(setupEssentials(argc, argv)),
147183 _window(new MainWindow(desktop())),
148184 _toolWindow(NULL),
149185 _nodeThread(new QThread(this)),
@@ -189,9 +225,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 39 unmodified lines
189225 _isVSyncOn(true),
190226 _aboutToQuit(false)
191227 {
192− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
228+ auto glCanvas = DependencyManager::get<GLCanvas>();
229+ auto nodeList = DependencyManager::get<NodeList>();
193230 Model::setAbstractViewStateInterface(this); // The model class will sometimes need to know view state details from us
194231
232+
195233 // read the ApplicationInfo.ini file for Name/Version/Domain information
196234 QSettings applicationInfo(PathUtils::resourcesPath() + "info/ApplicationInfo.ini", QSettings::IniFormat);
197235
@@ -224,23 +262,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 26 unmodified lines
224262 _window->setMenuBar(Menu::getInstance());
225263
226264 _runningScriptsWidget = new RunningScriptsWidget(_window);
227−
228− unsigned int listenPort = 0; // bind to an ephemeral port by default
229− const char** constArgv = const_cast<const char**>(argv);
230− const char* portStr = getCmdOption(argc, constArgv, "--listenPort");
231− if (portStr) {
232− listenPort = atoi(portStr);
233− }
234265
235266 // start the nodeThread so its event loop is running
236267 _nodeThread->start();
237268
238269 // make sure the node thread is given highest priority
239270 _nodeThread->setPriority(QThread::TimeCriticalPriority);
240−
271+
241272 // put the NodeList and datagram processing on the node thread
242− NodeList* nodeList = NodeList::createInstance(NodeType::Agent, listenPort);
243−
244273 nodeList->moveToThread(_nodeThread);
245274 _datagramProcessor.moveToThread(_nodeThread);
246275
@@ -250,7 +279,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 3 unmodified lines
250279 // put the audio processing on a separate thread
251280 QThread* audioThread = new QThread(this);
252281
253− Audio::SharedPointer audioIO = DependencyManager::get<Audio>();
282+ auto audioIO = DependencyManager::get<Audio>();
254283 audioIO->moveToThread(audioThread);
255284 connect(audioThread, &QThread::started, audioIO.data(), &Audio::start);
256285
@@ -273,11 +302,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 16 unmodified lines
273302 connect(locationUpdateTimer, &QTimer::timeout, this, &Application::updateLocationInServer);
274303 locationUpdateTimer->start(DATA_SERVER_LOCATION_CHANGE_UPDATE_MSECS);
275304
276− connect(nodeList, &NodeList::nodeAdded, this, &Application::nodeAdded);
277− connect(nodeList, &NodeList::nodeKilled, this, &Application::nodeKilled);
278− connect(nodeList, SIGNAL(nodeKilled(SharedNodePointer)), SLOT(nodeKilled(SharedNodePointer)));
279− connect(nodeList, &NodeList::uuidChanged, _myAvatar, &MyAvatar::setSessionUUID);
280− connect(nodeList, &NodeList::limitOfSilentDomainCheckInsReached, nodeList, &NodeList::reset);
305+ connect(nodeList.data(), &NodeList::nodeAdded, this, &Application::nodeAdded);
306+ connect(nodeList.data(), &NodeList::nodeKilled, this, &Application::nodeKilled);
307+ connect(nodeList.data(), SIGNAL(nodeKilled(SharedNodePointer)), SLOT(nodeKilled(SharedNodePointer)));
308+ connect(nodeList.data(), &NodeList::uuidChanged, _myAvatar, &MyAvatar::setSessionUUID);
309+ connect(nodeList.data(), &NodeList::limitOfSilentDomainCheckInsReached, nodeList.data(), &NodeList::reset);
281310
282311 // connect to appropriate slots on AccountManager
283312 AccountManager& accountManager = AccountManager::getInstance();
@@ -303,7 +332,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 19 unmodified lines
303332 // once the event loop has started, check and signal for an access token
304333 QMetaObject::invokeMethod(&accountManager, "checkAndSignalForAccessToken", Qt::QueuedConnection);
305334
306− AddressManager::SharedPointer addressManager = DependencyManager::get<AddressManager>();
335+ auto addressManager = DependencyManager::get<AddressManager>();
307336
308337 // use our MyAvatar position and quat for address manager path
309338 addressManager->setPositionGetter(getPositionForPath);
@@ -327,7 +356,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 17 unmodified lines
327356
328357 // move the silentNodeTimer to the _nodeThread
329358 QTimer* silentNodeTimer = new QTimer();
330− connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes()));
359+ connect(silentNodeTimer, SIGNAL(timeout()), nodeList.data(), SLOT(removeSilentNodes()));
331360 silentNodeTimer->start(NODE_SILENCE_THRESHOLD_MSECS);
332361 silentNodeTimer->moveToThread(_nodeThread);
333362
@@ -446,7 +475,7 @@ Application::~Application() { · 112 unmodified lines
446475 // kill any audio injectors that are still around
447476 AudioScriptingInterface::getInstance().stopAllInjectors();
448477
449− Audio::SharedPointer audioIO = DependencyManager::get<Audio>();
478+ auto audioIO = DependencyManager::get<Audio>();
450479
451480 // stop the audio process
452481 QMetaObject::invokeMethod(audioIO.data(), "stop", Qt::BlockingQueuedConnection);
@@ -461,6 +490,8 @@ Application::~Application() { · 8 unmodified lines
461490 Menu::getInstance()->deleteLater();
462491
463492 _myAvatar = NULL;
493+
494+ DependencyManager::destroy<GLCanvas>();
464495 }
465496
466497 void Application::saveSettings() {
@@ -736,7 +767,7 @@ void Application::controlledBroadcastToNodes(const QByteArray& packet, const Nod · 269 unmodified lines
736767 foreach(NodeType_t type, destinationNodeTypes) {
737768
738769 // Perform the broadcast for one type
739− int nReceivingNodes = NodeList::getInstance()->broadcastToNodes(packet, NodeSet() << type);
770+ int nReceivingNodes = DependencyManager::get<NodeList>()->broadcastToNodes(packet, NodeSet() << type);
740771
741772 // Feed number of bytes to corresponding channel of the bandwidth meter, if any (done otherwise)
742773 BandwidthMeter::ChannelIndex channel;
@@ -955,7 +986,7 @@ void Application::keyPressEvent(QKeyEvent* event) { · 212 unmodified lines
955986 if (isShifted) {
956987 _viewFrustum.setFocalLength(_viewFrustum.getFocalLength() - 0.1f);
957988 if (TV3DManager::isConnected()) {
958− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
989+ auto glCanvas = DependencyManager::get<GLCanvas>();
959990 TV3DManager::configureCamera(_myCamera, glCanvas->getDeviceWidth(), glCanvas->getDeviceHeight());
960991 }
961992 } else {
@@ -968,7 +999,7 @@ void Application::keyPressEvent(QKeyEvent* event) { · 6 unmodified lines
968999 if (isShifted) {
9691000 _viewFrustum.setFocalLength(_viewFrustum.getFocalLength() + 0.1f);
9701001 if (TV3DManager::isConnected()) {
971− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
1002+ auto glCanvas = DependencyManager::get<GLCanvas>();
9721003 TV3DManager::configureCamera(_myCamera, glCanvas->getDeviceWidth(), glCanvas->getDeviceHeight());
9731004 }
9741005
@@ -1330,7 +1361,7 @@ void Application::dropEvent(QDropEvent *event) { · 355 unmodified lines
13301361 SnapshotMetaData* snapshotData = Snapshot::parseSnapshotData(snapshotPath);
13311362 if (snapshotData) {
13321363 if (!snapshotData->getDomain().isEmpty()) {
1333− NodeList::getInstance()->getDomainHandler().setHostnameAndPort(snapshotData->getDomain());
1364+ DependencyManager::get<NodeList>()->getDomainHandler().setHostnameAndPort(snapshotData->getDomain());
13341365 }
13351366
13361367 _myAvatar->setPosition(snapshotData->getLocation());
@@ -1344,7 +1375,7 @@ void Application::dropEvent(QDropEvent *event) { · 7 unmodified lines
13441375 }
13451376
13461377 void Application::sendPingPackets() {
1347− QByteArray pingPacket = NodeList::getInstance()->constructPingPacket();
1378+ QByteArray pingPacket = DependencyManager::get<NodeList>()->constructPingPacket();
13481379 controlledBroadcastToNodes(pingPacket, NodeSet()
13491380 << NodeType::EntityServer
13501381 << NodeType::AudioMixer << NodeType::AvatarMixer
@@ -1370,7 +1401,7 @@ void Application::timer() { · 19 unmodified lines
13701401 _timerStart.start();
13711402
13721403 // ask the node list to check in with the domain server
1373− NodeList::getInstance()->sendDomainServerCheckIn();
1404+ DependencyManager::get<NodeList>()->sendDomainServerCheckIn();
13741405 }
13751406
13761407 void Application::idle() {
@@ -1426,7 +1457,7 @@ void Application::idle() { · 49 unmodified lines
14261457
14271458 void Application::checkBandwidthMeterClick() {
14281459 // ... to be called upon button release
1429− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
1460+ auto glCanvas = DependencyManager::get<GLCanvas>();
14301461 if (Menu::getInstance()->isOptionChecked(MenuOption::Bandwidth) &&
14311462 Menu::getInstance()->isOptionChecked(MenuOption::Stats) &&
14321463 Menu::getInstance()->isOptionChecked(MenuOption::UserInterface) &&
@@ -1462,7 +1493,7 @@ void Application::setFullscreen(bool fullscreen) { · 29 unmodified lines
14621493 }
14631494
14641495 void Application::setEnable3DTVMode(bool enable3DTVMode) {
1465− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
1496+ auto glCanvas = DependencyManager::get<GLCanvas>();
14661497 resizeGL(glCanvas->getDeviceWidth(), glCanvas->getDeviceHeight());
14671498 }
14681499
@@ -1488,7 +1519,7 @@ void Application::setEnableVRMode(bool enableVRMode) { · 19 unmodified lines
14881519 _myCamera.setHmdRotation(glm::quat());
14891520 }
14901521
1491− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
1522+ auto glCanvas = DependencyManager::get<GLCanvas>();
14921523 resizeGL(glCanvas->getDeviceWidth(), glCanvas->getDeviceHeight());
14931524 }
14941525
@@ -1498,7 +1529,7 @@ void Application::setLowVelocityFilter(bool lowVelocityFilter) { · 3 unmodified lines
14981529
14991530 bool Application::mouseOnScreen() const {
15001531 if (OculusManager::isConnected()) {
1501− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
1532+ auto glCanvas = DependencyManager::get<GLCanvas>();
15021533 return getMouseX() >= 0 && getMouseX() <= glCanvas->getDeviceWidth() &&
15031534 getMouseY() >= 0 && getMouseY() <= glCanvas->getDeviceHeight();
15041535 }
@@ -1540,9 +1571,9 @@ int Application::getMouseDragStartedY() const { · 35 unmodified lines
15401571 }
15411572
15421573 FaceTracker* Application::getActiveFaceTracker() {
1543− Faceshift::SharedPointer faceshift = DependencyManager::get<Faceshift>();
1544− Visage::SharedPointer visage = DependencyManager::get<Visage>();
1545− DdeFaceTracker::SharedPointer dde = DependencyManager::get<DdeFaceTracker>();
1574+ auto faceshift = DependencyManager::get<Faceshift>();
1575+ auto visage = DependencyManager::get<Visage>();
1576+ auto dde = DependencyManager::get<DdeFaceTracker>();
15461577
15471578 return (dde->isActive() ? static_cast<FaceTracker*>(dde.data()) :
15481579 (faceshift->isActive() ? static_cast<FaceTracker*>(faceshift.data()) :
@@ -1658,7 +1689,7 @@ void Application::init() { · 109 unmodified lines
16581689 Leapmotion::init();
16591690
16601691 // fire off an immediate domain-server check in now that settings are loaded
1661− NodeList::getInstance()->sendDomainServerCheckIn();
1692+ DependencyManager::get<NodeList>()->sendDomainServerCheckIn();
16621693
16631694 _entities.init();
16641695 _entities.setViewFrustum(getViewFrustum());
@@ -1686,7 +1717,7 @@ void Application::init() { · 21 unmodified lines
16861717
16871718 _metavoxels.init();
16881719
1689− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
1720+ auto glCanvas = DependencyManager::get<GLCanvas>();
16901721 _rearMirrorTools = new RearMirrorTools(glCanvas.data(), _mirrorViewRect, _settings);
16911722
16921723 connect(_rearMirrorTools, SIGNAL(closeView()), SLOT(closeMirrorView()));
@@ -1776,7 +1807,7 @@ void Application::updateMouseRay() { · 83 unmodified lines
17761807 void Application::updateFaceshift() {
17771808 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
17781809 PerformanceWarning warn(showWarnings, "Application::updateFaceshift()");
1779− Faceshift::SharedPointer faceshift = DependencyManager::get<Faceshift>();
1810+ auto faceshift = DependencyManager::get<Faceshift>();
17801811 // Update faceshift
17811812 faceshift->update();
17821813
@@ -2125,7 +2156,7 @@ int Application::sendNackPackets() { · 342 unmodified lines
21252156 char packet[MAX_PACKET_SIZE];
21262157
21272158 // iterates thru all nodes in NodeList
2128− NodeList* nodeList = NodeList::getInstance();
2159+ auto nodeList = DependencyManager::get<NodeList>();
21292160
21302161 nodeList->eachNode([&](const SharedNodePointer& node){
21312162
@@ -2223,7 +2254,7 @@ void Application::queryOctree(NodeType_t serverType, PacketType packetType, Node · 91 unmodified lines
22232254 int inViewServers = 0;
22242255 int unknownJurisdictionServers = 0;
22252256
2226− NodeList* nodeList = NodeList::getInstance();
2257+ auto nodeList = DependencyManager::get<NodeList>();
22272258
22282259 nodeList->eachNode([&](const SharedNodePointer& node) {
22292260 // only send to the NodeTypes that are serverType
@@ -2587,7 +2618,7 @@ void Application::updateShadowMap() { · 357 unmodified lines
25872618
25882619 fbo->release();
25892620
2590− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
2621+ auto glCanvas = DependencyManager::get<GLCanvas>();
25912622 glViewport(0, 0, glCanvas->getDeviceWidth(), glCanvas->getDeviceHeight());
25922623 }
25932624
@@ -2923,7 +2954,7 @@ bool Application::getCascadeShadowsEnabled() { · 329 unmodified lines
29232954 }
29242955
29252956 glm::vec2 Application::getScaledScreenPoint(glm::vec2 projectedPoint) {
2926− GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
2957+ auto glCanvas = DependencyManager::get<GLCanvas>();
29272958 float horizontalScale = glCanvas->getDeviceWidth() / 2.0f;
29282959 float verticalScale = glCanvas->getDeviceHeight() / 2.0f;
29292960
@@ -3109,7 +3140,7 @@ void Application::setMenuShortcutsEnabled(bool enabled) { · 179 unmodified lines
31093140 void Application::updateWindowTitle(){
31103141
31113142 QString buildVersion = " (build " + applicationVersion() + ")";
3112− NodeList* nodeList = NodeList::getInstance();
3143+ auto nodeList = DependencyManager::get<NodeList>();
31133144
31143145 QString connectionStatus = nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED) ";
31153146 QString username = AccountManager::getInstance().getAccountInfo().getUsername();
@@ -3126,7 +3157,7 @@ void Application::updateWindowTitle(){ · 10 unmodified lines
31263157 void Application::updateLocationInServer() {
31273158
31283159 AccountManager& accountManager = AccountManager::getInstance();
3129− DomainHandler& domainHandler = NodeList::getInstance()->getDomainHandler();
3160+ DomainHandler& domainHandler = DependencyManager::get<NodeList>()->getDomainHandler();
31303161
31313162 if (accountManager.isLoggedIn() && domainHandler.isConnected() && !domainHandler.getUUID().isNull()) {
31323163
@@ -3177,7 +3208,7 @@ void Application::domainChanged(const QString& domainHostname) { · 44 unmodified lines
31773208
31783209 void Application::connectedToDomain(const QString& hostname) {
31793210 AccountManager& accountManager = AccountManager::getInstance();
3180− const QUuid& domainID = NodeList::getInstance()->getDomainHandler().getUUID();
3211+ const QUuid& domainID = DependencyManager::get<NodeList>()->getDomainHandler().getUUID();
31813212
31823213 if (accountManager.isLoggedIn() && !domainID.isNull()) {
31833214 // update our data-server with the domain-server we're logged in with
@@ -3464,8 +3495,8 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri · 280 unmodified lines
34643495 // when the application is about to quit, stop our script engine so it unwinds properly
34653496 connect(this, SIGNAL(aboutToQuit()), scriptEngine, SLOT(stop()));
34663497
3467− NodeList* nodeList = NodeList::getInstance();
3468− connect(nodeList, &NodeList::nodeKilled, scriptEngine, &ScriptEngine::nodeKilled);
3498+ auto nodeList = DependencyManager::get<NodeList>();
3499+ connect(nodeList.data(), &NodeList::nodeKilled, scriptEngine, &ScriptEngine::nodeKilled);
34693500
34703501 scriptEngine->moveToThread(workerThread);
34713502

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t