History

Merge branch 'master' of https://github.com/highfidelity/hifi into one

Sam Gateau committed 7 years ago

Commit 5f062bb2 parents 9dd6c8d 7701be071 files · +745 −304Browse files

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

Unified · Split

interface/src/Application.cpp+46−10
@@ -322,6 +322,8 @@ static const QString INFO_HELP_PATH = "html/tabletHelp.html"; · 321 unmodified lines
322322
323323 static const unsigned int THROTTLED_SIM_FRAMERATE = 15;
324324 static const int THROTTLED_SIM_FRAME_PERIOD_MS = MSECS_PER_SECOND / THROTTLED_SIM_FRAMERATE;
325+static const int ENTITY_SERVER_ADDED_TIMEOUT = 5000;
326+static const int ENTITY_SERVER_CONNECTION_TIMEOUT = 5000;
325327
326328 static const uint32_t INVALID_FRAME = UINT32_MAX;
327329
@@ -1180,6 +1182,18 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo · 852 unmodified lines
11801182 getOverlays().deleteOverlay(getTabletScreenID());
11811183 getOverlays().deleteOverlay(getTabletHomeButtonID());
11821184 getOverlays().deleteOverlay(getTabletFrameID());
1185+ _failedToConnectToEntityServer = false;
1186+ });
1187+
1188+ _entityServerConnectionTimer.setSingleShot(true);
1189+ connect(&_entityServerConnectionTimer, &QTimer::timeout, this, &Application::setFailedToConnectToEntityServer);
1190+
1191+ connect(&domainHandler, &DomainHandler::connectedToDomain, this, [this]() {
1192+ if (!isServerlessMode()) {
1193+ _entityServerConnectionTimer.setInterval(ENTITY_SERVER_ADDED_TIMEOUT);
1194+ _entityServerConnectionTimer.start();
1195+ _failedToConnectToEntityServer = false;
1196+ }
11831197 });
11841198 connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &Application::domainConnectionRefused);
11851199
@@ -3348,26 +3362,37 @@ void Application::showHelp() { · 2162 unmodified lines
33483362 static const QString HAND_CONTROLLER_NAME_OCULUS_TOUCH = "oculus";
33493363 static const QString HAND_CONTROLLER_NAME_WINDOWS_MR = "windowsMR";
33503364
3365+ static const QString VIVE_PLUGIN_NAME = "HTC Vive";
3366+ static const QString OCULUS_RIFT_PLUGIN_NAME = "Oculus Rift";
3367+ static const QString WINDOWS_MR_PLUGIN_NAME = "WindowsMR";
3368+
33513369 static const QString TAB_KEYBOARD_MOUSE = "kbm";
33523370 static const QString TAB_GAMEPAD = "gamepad";
33533371 static const QString TAB_HAND_CONTROLLERS = "handControllers";
33543372
3355− QString handControllerName = HAND_CONTROLLER_NAME_VIVE;
3373+ QString handControllerName;
33563374 QString defaultTab = TAB_KEYBOARD_MOUSE;
33573375
3358− if (PluginUtils::isViveControllerAvailable()) {
3359− defaultTab = TAB_HAND_CONTROLLERS;
3360− handControllerName = HAND_CONTROLLER_NAME_VIVE;
3361− } else if (PluginUtils::isOculusTouchControllerAvailable()) {
3362− defaultTab = TAB_HAND_CONTROLLERS;
3363− handControllerName = HAND_CONTROLLER_NAME_OCULUS_TOUCH;
3364− } else if (qApp->getActiveDisplayPlugin()->getName() == "WindowMS") {
3376+ if (PluginUtils::isHMDAvailable(WINDOWS_MR_PLUGIN_NAME)) {
33653377 defaultTab = TAB_HAND_CONTROLLERS;
33663378 handControllerName = HAND_CONTROLLER_NAME_WINDOWS_MR;
3379+ } else if (PluginUtils::isHMDAvailable(VIVE_PLUGIN_NAME)) {
3380+ defaultTab = TAB_HAND_CONTROLLERS;
3381+ handControllerName = HAND_CONTROLLER_NAME_VIVE;
3382+ } else if (PluginUtils::isHMDAvailable(OCULUS_RIFT_PLUGIN_NAME)) {
3383+ if (PluginUtils::isOculusTouchControllerAvailable()) {
3384+ defaultTab = TAB_HAND_CONTROLLERS;
3385+ handControllerName = HAND_CONTROLLER_NAME_OCULUS_TOUCH;
3386+ } else if (PluginUtils::isXboxControllerAvailable()) {
3387+ defaultTab = TAB_GAMEPAD;
3388+ } else {
3389+ defaultTab = TAB_KEYBOARD_MOUSE;
3390+ }
33673391 } else if (PluginUtils::isXboxControllerAvailable()) {
33683392 defaultTab = TAB_GAMEPAD;
3393+ } else {
3394+ defaultTab = TAB_KEYBOARD_MOUSE;
33693395 }
3370− // TODO need some way to detect windowsMR to load controls reference default tab in Help > Controls Reference menu.
33713396
33723397 QUrlQuery queryString;
33733398 queryString.addQueryItem("handControllerName", handControllerName);
@@ -5630,6 +5655,7 @@ void Application::update(float deltaTime) { · 2256 unmodified lines
56305655 quint64 now = usecTimestampNow();
56315656 if (isServerlessMode() || _octreeProcessor.isLoadSequenceComplete()) {
56325657 bool enableInterstitial = DependencyManager::get<NodeList>()->getDomainHandler().getInterstitialModeEnabled();
5658+
56335659 if (gpuTextureMemSizeStable() || !enableInterstitial) {
56345660 // we've received a new full-scene octree stats packet, or it's been long enough to try again anyway
56355661 _lastPhysicsCheckTime = now;
@@ -6568,7 +6594,13 @@ void Application::resettingDomain() { · 932 unmodified lines
65686594 }
65696595
65706596 void Application::nodeAdded(SharedNodePointer node) const {
6571− // nothing to do here
6597+ if (node->getType() == NodeType::EntityServer) {
6598+ if (!_failedToConnectToEntityServer) {
6599+ _entityServerConnectionTimer.stop();
6600+ _entityServerConnectionTimer.setInterval(ENTITY_SERVER_CONNECTION_TIMEOUT);
6601+ _entityServerConnectionTimer.start();
6602+ }
6603+ }
65726604 }
65736605
65746606 void Application::nodeActivated(SharedNodePointer node) {
@@ -6596,6 +6628,10 @@ void Application::nodeActivated(SharedNodePointer node) { · 21 unmodified lines
65966628 if (node->getType() == NodeType::EntityServer) {
65976629 _queryExpiry = SteadyClock::now();
65986630 _octreeQuery.incrementConnectionID();
6631+
6632+ if (!_failedToConnectToEntityServer) {
6633+ _entityServerConnectionTimer.stop();
6634+ }
65996635 }
66006636
66016637 if (node->getType() == NodeType::AudioMixer && !isInterstitialMode()) {