From 2657af8d4bdd18d40e043e4587b429efe14f95ba Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 14:13:10 -0800 Subject: [PATCH 1/4] use proper flags for ANDROID, pass url to C++ --- gvr-interface/src/GVRInterface.cpp | 18 ++++++++++++++++-- gvr-interface/src/GVRMainWindow.cpp | 2 +- .../gvrinterface/InterfaceActivity.java | 4 +++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gvr-interface/src/GVRInterface.cpp b/gvr-interface/src/GVRInterface.cpp index 2517af91f6..3c1000e9e3 100644 --- a/gvr-interface/src/GVRInterface.cpp +++ b/gvr-interface/src/GVRInterface.cpp @@ -9,7 +9,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifdef Q_WS_ANDROID +#ifdef ANDROID + +#include #include #include @@ -58,8 +60,20 @@ GVRInterface::GVRInterface(int argc, char* argv[]) : idleTimer->start(0); } +#ifdef ANDROID + +extern "C" { + +JNIEXPORT void Java_io_highfidelity_gvrinterface_InterfaceActivity_handleHifiURL(JNIEnv *jni, jclass clazz, jstring hifiURLString) { + qDebug() << "The lookup string in c++ is" << QAndroidJniObject(hifiURLString).toString(); +} + +} + +#endif + void GVRInterface::idle() { -#if defined(Q_WS_ANDROID) && defined(HAVE_LIBOVR) +#if defined(ANDROID) && defined(HAVE_LIBOVR) if (!_inVRMode && ovr_IsHeadsetDocked()) { qDebug() << "The headset just got docked - assume we are in VR mode."; _inVRMode = true; diff --git a/gvr-interface/src/GVRMainWindow.cpp b/gvr-interface/src/GVRMainWindow.cpp index 310d24e5c5..3176457677 100644 --- a/gvr-interface/src/GVRMainWindow.cpp +++ b/gvr-interface/src/GVRMainWindow.cpp @@ -29,7 +29,7 @@ GVRMainWindow::GVRMainWindow(QWidget* parent) : QMainWindow(parent) { -#ifndef Q_OS_ANDROID +#ifndef ANDROID const int NOTE_4_WIDTH = 2560; const int NOTE_4_HEIGHT = 1440; setFixedSize(NOTE_4_WIDTH / 2, NOTE_4_HEIGHT / 2); diff --git a/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java b/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java index 2b35c19960..c7cbdd3dff 100644 --- a/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java +++ b/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java @@ -20,6 +20,8 @@ import org.qtproject.qt5.android.bindings.QtActivity; public class InterfaceActivity extends QtActivity { + public static native void handleHifiURL(String hifiURLString); + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -31,7 +33,7 @@ public class InterfaceActivity extends QtActivity { Uri data = intent.getData(); if (data.getScheme().equals("hifi")) { - + handleHifiURL(data.toString()); } } From f37fc30e0c723868f5f893e930ce7a5a6c6d6d80 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 14:29:41 -0800 Subject: [PATCH 2/4] hand the launchURL off to RenderingClient --- gvr-interface/src/GVRInterface.cpp | 8 +++++++- gvr-interface/src/RenderingClient.cpp | 10 ++++++---- gvr-interface/src/RenderingClient.h | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gvr-interface/src/GVRInterface.cpp b/gvr-interface/src/GVRInterface.cpp index 3c1000e9e3..31c094e5ab 100644 --- a/gvr-interface/src/GVRInterface.cpp +++ b/gvr-interface/src/GVRInterface.cpp @@ -36,10 +36,16 @@ #include "GVRInterface.h" +static QString launchURLString = ""; + GVRInterface::GVRInterface(int argc, char* argv[]) : QApplication(argc, argv), _inVRMode(false) { + // did we get launched with a lookup URL? If so it is time to give that to the AddressManager + qDebug() << "We were opened via a hifi URL -" << launchURLString; + launchURLString = ""; + _client = new RenderingClient(this); connect(this, &QGuiApplication::applicationStateChanged, this, &GVRInterface::handleApplicationStateChange); @@ -65,7 +71,7 @@ GVRInterface::GVRInterface(int argc, char* argv[]) : extern "C" { JNIEXPORT void Java_io_highfidelity_gvrinterface_InterfaceActivity_handleHifiURL(JNIEnv *jni, jclass clazz, jstring hifiURLString) { - qDebug() << "The lookup string in c++ is" << QAndroidJniObject(hifiURLString).toString(); + launchURLString = QAndroidJniObject(hifiURLString).toString(); } } diff --git a/gvr-interface/src/RenderingClient.cpp b/gvr-interface/src/RenderingClient.cpp index dcd0911b1b..01f65f4121 100644 --- a/gvr-interface/src/RenderingClient.cpp +++ b/gvr-interface/src/RenderingClient.cpp @@ -21,11 +21,16 @@ RenderingClient* RenderingClient::_instance = NULL; -RenderingClient::RenderingClient(QObject *parent) : +RenderingClient::RenderingClient(QObject *parent, const QString& launchURLString) : Client(parent) { _instance = this; + // connect to AddressManager and pass it the launch URL, if we have one + auto addressManager = DependencyManager::get(); + connect(addressManager.data(), &AddressManager::locationChangeRequired, this, &RenderingClient::goToLocation); + addressManager->loadSettings(launchURLString); + // tell the NodeList which node types all rendering clients will want to know about DependencyManager::get()->addSetOfNodeTypesToNodeInterestSet(NodeSet() << NodeType::AudioMixer << NodeType::AvatarMixer); @@ -42,9 +47,6 @@ RenderingClient::RenderingClient(QObject *parent) : connect(audioThread, &QThread::started, audioClient.data(), &AudioClient::start); audioThread->start(); - - connect(DependencyManager::get().data(), &AddressManager::locationChangeRequired, - this, &RenderingClient::goToLocation); } RenderingClient::~RenderingClient() { diff --git a/gvr-interface/src/RenderingClient.h b/gvr-interface/src/RenderingClient.h index b88f2cd1bb..7c17e3ecf6 100644 --- a/gvr-interface/src/RenderingClient.h +++ b/gvr-interface/src/RenderingClient.h @@ -21,7 +21,7 @@ class RenderingClient : public Client { Q_OBJECT public: - RenderingClient(QObject* parent = 0); + RenderingClient(QObject* parent = 0, const QString& launchURLString = QString()); ~RenderingClient(); const glm::vec3& getPosition() const { return _position; } From de5a0fe15779ace74136145fd952a756faeec515 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 14:32:49 -0800 Subject: [PATCH 3/4] actually pass launchURLString to RenderingClient --- gvr-interface/src/GVRInterface.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gvr-interface/src/GVRInterface.cpp b/gvr-interface/src/GVRInterface.cpp index 31c094e5ab..35b1d1011d 100644 --- a/gvr-interface/src/GVRInterface.cpp +++ b/gvr-interface/src/GVRInterface.cpp @@ -36,17 +36,20 @@ #include "GVRInterface.h" -static QString launchURLString = ""; +static QString launchURLString = QString(); GVRInterface::GVRInterface(int argc, char* argv[]) : QApplication(argc, argv), _inVRMode(false) { - // did we get launched with a lookup URL? If so it is time to give that to the AddressManager - qDebug() << "We were opened via a hifi URL -" << launchURLString; - launchURLString = ""; + if (!launchURLString.isEmpty()) { + // did we get launched with a lookup URL? If so it is time to give that to the AddressManager + qDebug() << "We were opened via a hifi URL -" << launchURLString; + } - _client = new RenderingClient(this); + _client = new RenderingClient(this, launchURLString); + + launchURLString = QString(); connect(this, &QGuiApplication::applicationStateChanged, this, &GVRInterface::handleApplicationStateChange); From 98833e732d2a58c675d7827f7c3d61e71f8542b6 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 14:47:38 -0800 Subject: [PATCH 4/4] fix instructions for soxr on windows --- BUILD_WIN.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 3c0ece7f6d..8e7c403f2e 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -182,9 +182,15 @@ _Note that the INSTALL target should handle the copying of files into an install Download the zip from the [soxr sourceforge page](http://sourceforge.net/projects/soxr/). -We recommend you extract it to %HIFI_LIB_DIR%\soxr. This will help our FindSoxr cmake module find what it needs. You can place it wherever you like on your machine if you specify SOXR_ROOT_DIR as an environment variable or a variable passed when cmake is run. +We recommend you install it to %HIFI_LIB_DIR%\soxr. This will help our FindSoxr cmake module find what it needs. You can place it wherever you like on your machine if you specify SOXR_ROOT_DIR as an environment variable or a variable passed when cmake is run. -You will need to use cmake to build and install Soxr. If you'd like to keep everything containted in the Soxr folder, pass `-DCMAKE_INSTALL_PREFIX=.` when you run Cmake so that it will be installed to the same directory. +Extract the soxr archive wherever you like. Then, inside the extracted folder, create a directory called `build`. From that build directory, the following commands will build and then install soxr to `%HIFI_LIB_DIR%`. + +``` +cmake .. -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=%HIFI_LIB_DIR%/soxr +nmake +nmake install +``` ###Build High Fidelity using Visual Studio Follow the same build steps from the CMake section of [BUILD.md](BUILD.md), but pass a different generator to CMake.