From 366be3c0c0775860f70fe817c0cbc2c9dc4eeb2d Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Thu, 11 Jun 2015 16:27:50 -0700 Subject: [PATCH 01/12] Check if entity looked at has valid hyperlink href attached --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 98cbc1f845..cd70eb93af 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -919,7 +919,14 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event, unsigned int deviceI entityScript.property("mouseMoveEvent").call(entityScript, entityScriptArgs); } - //qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << rayPickResult.entityID; + QString urlString = rayPickResult.properties.getHref(); + QUrl url = QUrl(urlString, QUrl::StrictMode); + if (url.isValid() && !url.isEmpty()){ + qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << urlString; + } else { + qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << "Not valid href"; + } + emit mouseMoveOnEntity(rayPickResult, event, deviceID); if (entityScript.property("mouseMoveOnEntity").isValid()) { entityScript.property("mouseMoveOnEntity").call(entityScript, entityScriptArgs); From b9b8cfd60d8f12f2c9b9c02e28bb959e91b4de47 Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Fri, 12 Jun 2015 14:08:06 -0700 Subject: [PATCH 02/12] Starting the new address bar layout --- interface/resources/images/arrowcontainer.svg | 3 ++ interface/resources/images/darkgreyarrow.svg | 3 ++ interface/resources/images/lightgreyarrow.svg | 3 ++ interface/resources/images/sepline.svg | 3 ++ interface/resources/qml/AddressBarDialog.qml | 32 +++++++++++++++++-- .../src/EntityTreeRenderer.cpp | 5 ++- 6 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 interface/resources/images/arrowcontainer.svg create mode 100644 interface/resources/images/darkgreyarrow.svg create mode 100644 interface/resources/images/lightgreyarrow.svg create mode 100644 interface/resources/images/sepline.svg diff --git a/interface/resources/images/arrowcontainer.svg b/interface/resources/images/arrowcontainer.svg new file mode 100644 index 0000000000..7f8bd28944 --- /dev/null +++ b/interface/resources/images/arrowcontainer.svg @@ -0,0 +1,3 @@ + + +2015-06-12 18:23ZCanvas 1 Navi Bar diff --git a/interface/resources/images/darkgreyarrow.svg b/interface/resources/images/darkgreyarrow.svg new file mode 100644 index 0000000000..6feb2be586 --- /dev/null +++ b/interface/resources/images/darkgreyarrow.svg @@ -0,0 +1,3 @@ + + +2015-06-12 18:23ZCanvas 1 Navi Bar diff --git a/interface/resources/images/lightgreyarrow.svg b/interface/resources/images/lightgreyarrow.svg new file mode 100644 index 0000000000..defaf8d798 --- /dev/null +++ b/interface/resources/images/lightgreyarrow.svg @@ -0,0 +1,3 @@ + + +2015-06-12 18:23ZCanvas 1 Navi Bar diff --git a/interface/resources/images/sepline.svg b/interface/resources/images/sepline.svg new file mode 100644 index 0000000000..32afaf7148 --- /dev/null +++ b/interface/resources/images/sepline.svg @@ -0,0 +1,3 @@ + + +2015-06-12 18:23ZCanvas 1 Navi Bar diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index 3377b20d87..5cac0da223 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -45,19 +45,47 @@ DialogContainer { property int inputAreaHeight: 56.0 * root.scale // Height of the background's input area property int inputAreaStep: (height - inputAreaHeight) / 2 + Image { + id: arrowContainer + + source: "../images/arrowcontainer.svg" + + anchors { + fill: parent + leftMargin: parent.height + hifi.layout.spacing * 2 + rightMargin: parent.height + hifi.layout.spacing * 50 + topMargin: parent.inputAreaStep + hifi.layout.spacing + bottomMargin: parent.inputAreaStep + hifi.layout.spacing + } + } + + //Image { + // id: darkGreyArrowBack + + // source: "../images/darkgreyarrow.svg" + + //anchors { + // fill: parent + // leftMargin: parent.height + hifi.layout.spacing * 4 + // rightMargin: parent.height + hifi.layout.spacing * 55 + // topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + // bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + //} + //} + TextInput { id: addressLine anchors { fill: parent - leftMargin: parent.height + hifi.layout.spacing * 2 + leftMargin: parent.height + parent.height + hifi.layout.spacing * 5 rightMargin: hifi.layout.spacing * 2 topMargin: parent.inputAreaStep + hifi.layout.spacing bottomMargin: parent.inputAreaStep + hifi.layout.spacing } - font.pixelSize: hifi.fonts.pixelSize * root.scale + font.pixelSize: hifi.fonts.pixelSize * root.scale * 0.75 helperText: "Go to: place, @user, /path, network address" diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 9ef32b411e..57bc0ec60e 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -48,6 +48,9 @@ #include "RenderablePolyVoxEntityItem.h" #include "EntitiesRendererLogging.h" +#include "DependencyManager.h" +#include "AddressManager.h" + EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterface* viewState, AbstractScriptingServicesInterface* scriptingServices) : OctreeRenderer(), @@ -921,7 +924,7 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event, unsigned int deviceI QString urlString = rayPickResult.properties.getHref(); QUrl url = QUrl(urlString, QUrl::StrictMode); - if (url.isValid() && !url.isEmpty()){ + if (url.isValid() && !url.isEmpty()) { qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << urlString; } else { qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << "Not valid href"; From 7142be07b69a802d225adf735e0165b0ea887212 Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Fri, 12 Jun 2015 17:45:18 -0700 Subject: [PATCH 03/12] New address bar layout with back and forward buttons --- .../resources/images/address-bar.001.svg | 81 ++++++++++++++++++ interface/resources/images/darkgreyarrow.png | Bin 0 -> 369 bytes interface/resources/images/lightgreyarrow.png | Bin 0 -> 369 bytes interface/resources/images/lightgreyarrow.svg | 14 ++- interface/resources/images/sepline.png | Bin 0 -> 127 bytes interface/resources/qml/AddressBarDialog.qml | 54 +++++++++--- 6 files changed, 134 insertions(+), 15 deletions(-) create mode 100644 interface/resources/images/address-bar.001.svg create mode 100644 interface/resources/images/darkgreyarrow.png create mode 100644 interface/resources/images/lightgreyarrow.png create mode 100644 interface/resources/images/sepline.png diff --git a/interface/resources/images/address-bar.001.svg b/interface/resources/images/address-bar.001.svg new file mode 100644 index 0000000000..7734b95be5 --- /dev/null +++ b/interface/resources/images/address-bar.001.svg @@ -0,0 +1,81 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/interface/resources/images/darkgreyarrow.png b/interface/resources/images/darkgreyarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9a8a2bbf69185a4a64bce1da6460ba0996b57a GIT binary patch literal 369 zcmV-%0gnEOP)#J37rGx zfCU5K0F*EXn*jn2z`>A!gh|+IazDrdr7hPcmkYG{a=qSbFG(VdizKWliWIIVL7;~F zz%mj7mJGa_ZzTYH!IkTO>IBS0)x-4v90dY1-mc!7rvP9LH^S1rHOjMGO#bqtwd7GQ zqYKap3SiDa?Yb*E0JeO>sZZXOO>RaVA=N=PxrNp++2j^Flud5IP|ly%>AG%ziE>G^ z{94IKldkKYaCg{O49egM?gpEqyisSWVOOSzx`L}jp$vX=Iu7qIf$Mn|gRb&yz(bT?YD?ay+nz0Xi}X@b^0xL?KLG{+pmtFIQSBgb P00000NkvXXu0mjfAz_+$ literal 0 HcmV?d00001 diff --git a/interface/resources/images/lightgreyarrow.png b/interface/resources/images/lightgreyarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1e221f3c73af148b0cde671a1d14ffdf9d43d75f GIT binary patch literal 369 zcmV-%0gnEOP)%^Hu`8V`qj`n;EIrpw7JNlQCp83a5T3eZtj_~t zrD7I4wj)DAr`U0xZ>a76s-r1fv6B%QU#+){ERVC^5>WL;y<XA9r8U7y*M$)1X#ML@Un$<^*$3PU?JUszyK(FG zOM=x~pRP9e$8qUVKYYf - -2015-06-12 18:23ZCanvas 1 Navi Bar + + + + + + + + + diff --git a/interface/resources/images/sepline.png b/interface/resources/images/sepline.png new file mode 100644 index 0000000000000000000000000000000000000000..959fcee72f740ca4de861595bf835dacad79b9fe GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ooU@+uhV_;yApCv5Gz`!6`;u=vBoS#-wo>-L1 z;Fyx1l&avFo0y&&l$w}QS$HzlhJk@W(bL5-q~cc6ojsMG>)13B7?ao~+B+FJdy3pF fuRLd9kzml|VXm>1eSCv~fq}u()z4*}Q$iB}btNK7 literal 0 HcmV?d00001 diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index 5cac0da223..1ddce9b04d 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -39,12 +39,13 @@ DialogContainer { Image { id: backgroundImage - source: "../images/address-bar.svg" + source: "../images/address-bar.001.svg" width: 576 * root.scale height: 80 * root.scale property int inputAreaHeight: 56.0 * root.scale // Height of the background's input area property int inputAreaStep: (height - inputAreaHeight) / 2 + /* Image { id: arrowContainer @@ -57,21 +58,50 @@ DialogContainer { topMargin: parent.inputAreaStep + hifi.layout.spacing bottomMargin: parent.inputAreaStep + hifi.layout.spacing } + }*/ + + Image { + id: darkGreyArrowBack + + source: "../images/darkgreyarrow.png" + + anchors { + fill: parent + leftMargin: parent.height + hifi.layout.spacing * 2 + rightMargin: parent.height + hifi.layout.spacing * 60 + topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + } } - //Image { - // id: darkGreyArrowBack + Image { + id: seperator - // source: "../images/darkgreyarrow.svg" + source: "../images/sepline.png" - //anchors { - // fill: parent - // leftMargin: parent.height + hifi.layout.spacing * 4 - // rightMargin: parent.height + hifi.layout.spacing * 55 - // topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing - // bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing - //} - //} + anchors { + fill: parent + leftMargin: parent.height + hifi.layout.spacing * 7 + rightMargin: parent.height + hifi.layout.spacing * 57 + topMargin: parent.inputAreaStep + hifi.layout.spacing + bottomMargin: parent.inputAreaStep + hifi.layout.spacing + } + } + + + Image { + id: lightGreyArrowForward + + source: "../images/lightgreyarrow.png" + + anchors { + fill: parent + leftMargin: parent.height + hifi.layout.spacing * 10 + rightMargin: parent.height + hifi.layout.spacing * 52 + topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + } + } TextInput { id: addressLine From 428b80a50d11fda3b3c33e90e53f14c793759bcf Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Fri, 12 Jun 2015 17:49:07 -0700 Subject: [PATCH 04/12] Removing old debug print code --- .../entities-renderer/src/EntityTreeRenderer.cpp | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 57bc0ec60e..e1bd01547e 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -914,22 +914,13 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event, unsigned int deviceI bool precisionPicking = false; // for mouse moves we do not do precision picking RayToEntityIntersectionResult rayPickResult = findRayIntersectionWorker(ray, Octree::TryLock, precisionPicking); if (rayPickResult.intersects) { + //qCDebug(entitiesrenderer) << "mouseReleaseEvent over entity:" << rayPickResult.entityID; QScriptValueList entityScriptArgs = createMouseEventArgs(rayPickResult.entityID, event, deviceID); - // load the entity script if needed... QScriptValue entityScript = loadEntityScript(rayPickResult.entity); if (entityScript.property("mouseMoveEvent").isValid()) { entityScript.property("mouseMoveEvent").call(entityScript, entityScriptArgs); } - - QString urlString = rayPickResult.properties.getHref(); - QUrl url = QUrl(urlString, QUrl::StrictMode); - if (url.isValid() && !url.isEmpty()) { - qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << urlString; - } else { - qCDebug(entitiesrenderer) << "mouseMoveEvent over entity:" << "Not valid href"; - } - emit mouseMoveOnEntity(rayPickResult, event, deviceID); if (entityScript.property("mouseMoveOnEntity").isValid()) { entityScript.property("mouseMoveOnEntity").call(entityScript, entityScriptArgs); From a24e0f7b1423953baf4237be7f5f3935471742e0 Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Tue, 16 Jun 2015 09:50:03 -0700 Subject: [PATCH 05/12] Finishing up new address bar layout --- .../resources/images/address-bar.001.svg | 81 ------------------- interface/resources/images/address-bar.svg | 26 ++++-- interface/resources/images/arrowcontainer.svg | 3 - interface/resources/images/darkgreyarrow.svg | 14 +++- interface/resources/images/left-arrow.svg | 50 ++++++++++++ interface/resources/qml/AddressBarDialog.qml | 50 +++--------- 6 files changed, 94 insertions(+), 130 deletions(-) delete mode 100644 interface/resources/images/address-bar.001.svg delete mode 100644 interface/resources/images/arrowcontainer.svg create mode 100644 interface/resources/images/left-arrow.svg diff --git a/interface/resources/images/address-bar.001.svg b/interface/resources/images/address-bar.001.svg deleted file mode 100644 index 7734b95be5..0000000000 --- a/interface/resources/images/address-bar.001.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/interface/resources/images/address-bar.svg b/interface/resources/images/address-bar.svg index 0a472cbe4e..dd907aa6c9 100644 --- a/interface/resources/images/address-bar.svg +++ b/interface/resources/images/address-bar.svg @@ -15,7 +15,7 @@ viewBox="0 0 1440 200" id="svg4136" inkscape:version="0.91 r13725" - sodipodi:docname="address-bar.svg"> + sodipodi:docname="address-bar.002.svg"> @@ -39,14 +39,14 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1840" + inkscape:window-width="1835" inkscape:window-height="1057" id="namedview4140" showgrid="false" - inkscape:zoom="0.8671875" - inkscape:cx="707.02439" + inkscape:zoom="0.61319416" + inkscape:cx="132.58366" inkscape:cy="52.468468" - inkscape:window-x="72" + inkscape:window-x="77" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg4136" /> @@ -59,6 +59,15 @@ y="30" rx="16.025024" ry="17.019567" /> + + diff --git a/interface/resources/images/arrowcontainer.svg b/interface/resources/images/arrowcontainer.svg deleted file mode 100644 index 7f8bd28944..0000000000 --- a/interface/resources/images/arrowcontainer.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -2015-06-12 18:23ZCanvas 1 Navi Bar diff --git a/interface/resources/images/darkgreyarrow.svg b/interface/resources/images/darkgreyarrow.svg index 6feb2be586..2d049d90d7 100644 --- a/interface/resources/images/darkgreyarrow.svg +++ b/interface/resources/images/darkgreyarrow.svg @@ -1,3 +1,11 @@ - - -2015-06-12 18:23ZCanvas 1 Navi Bar + + + + + + + + + diff --git a/interface/resources/images/left-arrow.svg b/interface/resources/images/left-arrow.svg new file mode 100644 index 0000000000..cede9fa959 --- /dev/null +++ b/interface/resources/images/left-arrow.svg @@ -0,0 +1,50 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index 1ddce9b04d..e80c5f2aa5 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -39,68 +39,42 @@ DialogContainer { Image { id: backgroundImage - source: "../images/address-bar.001.svg" + source: "../images/address-bar.svg" width: 576 * root.scale height: 80 * root.scale property int inputAreaHeight: 56.0 * root.scale // Height of the background's input area property int inputAreaStep: (height - inputAreaHeight) / 2 - /* Image { - id: arrowContainer + id: backArrow - source: "../images/arrowcontainer.svg" + source: "../images/left-arrow.svg" + scale: 0.9 anchors { fill: parent - leftMargin: parent.height + hifi.layout.spacing * 2 - rightMargin: parent.height + hifi.layout.spacing * 50 - topMargin: parent.inputAreaStep + hifi.layout.spacing - bottomMargin: parent.inputAreaStep + hifi.layout.spacing - } - }*/ - - Image { - id: darkGreyArrowBack - - source: "../images/darkgreyarrow.png" - - anchors { - fill: parent - leftMargin: parent.height + hifi.layout.spacing * 2 + leftMargin: parent.height + hifi.layout.spacing + 6 rightMargin: parent.height + hifi.layout.spacing * 60 topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing } } - - Image { - id: seperator - - source: "../images/sepline.png" - - anchors { - fill: parent - leftMargin: parent.height + hifi.layout.spacing * 7 - rightMargin: parent.height + hifi.layout.spacing * 57 - topMargin: parent.inputAreaStep + hifi.layout.spacing - bottomMargin: parent.inputAreaStep + hifi.layout.spacing - } - } - Image { - id: lightGreyArrowForward + id: forwardArrow - source: "../images/lightgreyarrow.png" + source: "../images/darkgreyarrow.svg" anchors { fill: parent - leftMargin: parent.height + hifi.layout.spacing * 10 - rightMargin: parent.height + hifi.layout.spacing * 52 + leftMargin: parent.height + hifi.layout.spacing * 9 + rightMargin: parent.height + hifi.layout.spacing * 53 topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing } + + width: parent.width * 0.5 + height: parent.height * 0.5 } TextInput { From 6d99d50f722e7bcd662e3e749e0f47d2a0b9453f Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Tue, 16 Jun 2015 10:51:42 -0700 Subject: [PATCH 06/12] Don't clip local audio sounds (https://app.asana.com/0/32622044445063/37633564937422) and quiet some warnings (of https://app.asana.com/0/32622044445063/37620738098871). --- libraries/audio/src/AudioInjector.cpp | 3 +-- libraries/audio/src/AudioInjectorLocalBuffer.cpp | 12 +++++++++--- libraries/audio/src/AudioInjectorLocalBuffer.h | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 912351e21a..333a944e1b 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -51,7 +51,7 @@ void AudioInjector::setIsFinished(bool isFinished) { emit finished(); if (_localBuffer) { - _localBuffer->stop(); + // delete will stop (and nosily if we do so ourselves here first). _localBuffer->deleteLater(); _localBuffer = NULL; } @@ -60,7 +60,6 @@ void AudioInjector::setIsFinished(bool isFinished) { if (_shouldDeleteAfterFinish) { // we've been asked to delete after finishing, trigger a queued deleteLater here - qCDebug(audio) << "AudioInjector triggering delete from setIsFinished"; QMetaObject::invokeMethod(this, "deleteLater", Qt::QueuedConnection); } } diff --git a/libraries/audio/src/AudioInjectorLocalBuffer.cpp b/libraries/audio/src/AudioInjectorLocalBuffer.cpp index f40e613437..457abeb89e 100644 --- a/libraries/audio/src/AudioInjectorLocalBuffer.cpp +++ b/libraries/audio/src/AudioInjectorLocalBuffer.cpp @@ -17,7 +17,8 @@ AudioInjectorLocalBuffer::AudioInjectorLocalBuffer(const QByteArray& rawAudioArr _shouldLoop(false), _isStopped(false), _currentOffset(0), - _volume(1.0f) + _volume(1.0f), + _isFinished(false) { } @@ -51,6 +52,11 @@ void copy(char* to, char* from, int size, qreal factor) { qint64 AudioInjectorLocalBuffer::readData(char* data, qint64 maxSize) { if (!_isStopped) { + if (_isFinished) { + emit bufferEmpty(); + return -1; // qt docs say -1 is appropriate when subsequent calls will not write data + } + // first copy to the end of the raw audio int bytesToEnd = _rawAudioArray.size() - _currentOffset; @@ -70,8 +76,8 @@ qint64 AudioInjectorLocalBuffer::readData(char* data, qint64 maxSize) { } if (!_shouldLoop && bytesRead == bytesToEnd) { - // we hit the end of the buffer, emit a signal - emit bufferEmpty(); + // If we emit bufferEmpty now, we'll clip the end of the sound. Wait until the next call. + _isFinished = true; } else if (_shouldLoop && _currentOffset == _rawAudioArray.size()) { _currentOffset = 0; } diff --git a/libraries/audio/src/AudioInjectorLocalBuffer.h b/libraries/audio/src/AudioInjectorLocalBuffer.h index 9753cbbd83..270e730590 100644 --- a/libraries/audio/src/AudioInjectorLocalBuffer.h +++ b/libraries/audio/src/AudioInjectorLocalBuffer.h @@ -44,6 +44,7 @@ private: int _currentOffset; float _volume; + bool _isFinished; }; #endif // hifi_AudioInjectorLocalBuffer_h \ No newline at end of file From 45a5f1364a21abb89771654baf97b498bafe2b89 Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Wed, 17 Jun 2015 11:56:44 -0700 Subject: [PATCH 07/12] fix compile issue if you don't have sdl2 --- interface/src/devices/SDL2Manager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/src/devices/SDL2Manager.cpp b/interface/src/devices/SDL2Manager.cpp index 32408fce18..e039a80b0d 100644 --- a/interface/src/devices/SDL2Manager.cpp +++ b/interface/src/devices/SDL2Manager.cpp @@ -74,9 +74,11 @@ SDL2Manager* SDL2Manager::getInstance() { } void SDL2Manager::focusOutEvent() { +#ifdef HAVE_SDL2 for (auto joystick : _openJoysticks) { joystick->focusOutEvent(); } +#endif } void SDL2Manager::update() { From b4dfaba55ec57bf18830723e0691fc2a73ffed1d Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Wed, 17 Jun 2015 11:59:15 -0700 Subject: [PATCH 08/12] Incorporate ctrlaltdavid's changes. --- libraries/audio-client/src/AudioClient.cpp | 11 ++++++++++- libraries/audio-client/src/AudioClient.h | 5 +++++ libraries/audio/src/AudioInjector.cpp | 5 +---- libraries/audio/src/AudioInjectorLocalBuffer.cpp | 13 ++----------- libraries/audio/src/AudioInjectorLocalBuffer.h | 4 ---- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 6450f25208..84022d0fb9 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1011,7 +1011,10 @@ bool AudioClient::outputLocalInjector(bool isStereo, AudioInjector* injector) { localOutput->moveToThread(injector->getLocalBuffer()->thread()); // have it be stopped when that local buffer is about to close - connect(injector->getLocalBuffer(), &AudioInjectorLocalBuffer::bufferEmpty, localOutput, &QAudioOutput::stop); + connect(localOutput, &QAudioOutput::stateChanged, this, &AudioClient::audioStateChanged); + connect(this, &AudioClient::audioFinished, localOutput, &QAudioOutput::stop); + connect(this, &AudioClient::audioFinished, injector, &AudioInjector::stop); + connect(injector->getLocalBuffer(), &QIODevice::aboutToClose, localOutput, &QAudioOutput::stop); qCDebug(audioclient) << "Starting QAudioOutput for local injector" << localOutput; @@ -1329,3 +1332,9 @@ void AudioClient::saveSettings() { windowSecondsForDesiredReduction.set(_receivedAudioStream.getWindowSecondsForDesiredReduction()); repetitionWithFade.set(_receivedAudioStream.getRepetitionWithFade()); } + +void AudioClient::audioStateChanged(QAudio::State state) { + if (state == QAudio::IdleState) { + emit audioFinished(); + } +} diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 642edde84a..d2492e1064 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -188,6 +188,8 @@ signals: void receivedFirstPacket(); void disconnected(); + void audioFinished(); + protected: AudioClient(); ~AudioClient(); @@ -196,6 +198,9 @@ protected: deleteLater(); } +private slots: + void audioStateChanged(QAudio::State state); + private: void outputFormatChanged(); diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 333a944e1b..675a3b8b28 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -51,7 +51,7 @@ void AudioInjector::setIsFinished(bool isFinished) { emit finished(); if (_localBuffer) { - // delete will stop (and nosily if we do so ourselves here first). + _localBuffer->stop(); _localBuffer->deleteLater(); _localBuffer = NULL; } @@ -121,9 +121,6 @@ void AudioInjector::injectLocally() { success = _localAudioInterface->outputLocalInjector(_options.stereo, this); - // if we're not looping and the buffer tells us it is empty then emit finished - connect(_localBuffer, &AudioInjectorLocalBuffer::bufferEmpty, this, &AudioInjector::stop); - if (!success) { qCDebug(audio) << "AudioInjector::injectLocally could not output locally via _localAudioInterface"; } diff --git a/libraries/audio/src/AudioInjectorLocalBuffer.cpp b/libraries/audio/src/AudioInjectorLocalBuffer.cpp index 457abeb89e..27e93a678e 100644 --- a/libraries/audio/src/AudioInjectorLocalBuffer.cpp +++ b/libraries/audio/src/AudioInjectorLocalBuffer.cpp @@ -17,8 +17,7 @@ AudioInjectorLocalBuffer::AudioInjectorLocalBuffer(const QByteArray& rawAudioArr _shouldLoop(false), _isStopped(false), _currentOffset(0), - _volume(1.0f), - _isFinished(false) + _volume(1.0f) { } @@ -52,11 +51,6 @@ void copy(char* to, char* from, int size, qreal factor) { qint64 AudioInjectorLocalBuffer::readData(char* data, qint64 maxSize) { if (!_isStopped) { - if (_isFinished) { - emit bufferEmpty(); - return -1; // qt docs say -1 is appropriate when subsequent calls will not write data - } - // first copy to the end of the raw audio int bytesToEnd = _rawAudioArray.size() - _currentOffset; @@ -75,10 +69,7 @@ qint64 AudioInjectorLocalBuffer::readData(char* data, qint64 maxSize) { _currentOffset += bytesRead; } - if (!_shouldLoop && bytesRead == bytesToEnd) { - // If we emit bufferEmpty now, we'll clip the end of the sound. Wait until the next call. - _isFinished = true; - } else if (_shouldLoop && _currentOffset == _rawAudioArray.size()) { + if (_shouldLoop && _currentOffset == _rawAudioArray.size()) { _currentOffset = 0; } diff --git a/libraries/audio/src/AudioInjectorLocalBuffer.h b/libraries/audio/src/AudioInjectorLocalBuffer.h index 270e730590..32a1221b78 100644 --- a/libraries/audio/src/AudioInjectorLocalBuffer.h +++ b/libraries/audio/src/AudioInjectorLocalBuffer.h @@ -32,9 +32,6 @@ public: void setCurrentOffset(int currentOffset) { _currentOffset = currentOffset; } void setVolume(float volume) { _volume = glm::clamp(volume, 0.0f, 1.0f); } -signals: - void bufferEmpty(); - private: qint64 recursiveReadFromFront(char* data, qint64 maxSize); @@ -44,7 +41,6 @@ private: int _currentOffset; float _volume; - bool _isFinished; }; #endif // hifi_AudioInjectorLocalBuffer_h \ No newline at end of file From 1328ea619971967dee5362b43fd45251e7aca35a Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Wed, 17 Jun 2015 13:41:41 -0700 Subject: [PATCH 09/12] Calling AddressManager back and forward functions --- interface/resources/qml/AddressBarDialog.qml | 19 +++++++++++++++++-- interface/src/ui/AddressBarDialog.cpp | 12 +++++++++++- interface/src/ui/AddressBarDialog.h | 2 ++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index e80c5f2aa5..b8543c132d 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -58,6 +58,15 @@ DialogContainer { topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing } + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton + onClicked: { + event.accepted = true + addressBarDialog.loadBack() + } + } } Image { @@ -73,8 +82,14 @@ DialogContainer { bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing } - width: parent.width * 0.5 - height: parent.height * 0.5 + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton + onClicked: { + event.accepted = true + addressBarDialog.loadForward() + } + } } TextInput { diff --git a/interface/src/ui/AddressBarDialog.cpp b/interface/src/ui/AddressBarDialog.cpp index 3c3a843586..50fbf979a0 100644 --- a/interface/src/ui/AddressBarDialog.cpp +++ b/interface/src/ui/AddressBarDialog.cpp @@ -31,10 +31,20 @@ void AddressBarDialog::hide() { void AddressBarDialog::loadAddress(const QString& address) { qDebug() << "Called LoadAddress with address " << address; if (!address.isEmpty()) { - DependencyManager::get()->handleLookupString(address); + DependencyManager::get()->handleLookupString(address);; } } +void AddressBarDialog::loadBack() { + qDebug() << "Called LoadBack"; + DependencyManager::get()->goBack(); +} + +void AddressBarDialog::loadForward() { + qDebug() << "Called LoadForward"; + DependencyManager::get()->goForward(); +} + void AddressBarDialog::displayAddressOfflineMessage() { OffscreenUi::error("That user or place is currently offline"); } diff --git a/interface/src/ui/AddressBarDialog.h b/interface/src/ui/AddressBarDialog.h index 395cf3c725..da54e29929 100644 --- a/interface/src/ui/AddressBarDialog.h +++ b/interface/src/ui/AddressBarDialog.h @@ -28,6 +28,8 @@ protected: void hide(); Q_INVOKABLE void loadAddress(const QString& address); + Q_INVOKABLE void loadBack(); + Q_INVOKABLE void loadForward(); }; #endif From 58ee5217e3c1c515118e9ce1e65a2ed50505ad4b Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Jun 2015 14:08:02 -0700 Subject: [PATCH 10/12] fix some warnings --- interface/src/devices/OculusManager.cpp | 1 + libraries/entities/src/DeleteEntityOperator.cpp | 1 + libraries/render-utils/src/TextRenderer3D.cpp | 1 - libraries/render-utils/src/TextRenderer3D.h | 2 -- libraries/shared/src/MatrixStack.h | 2 ++ libraries/shared/src/PhysicsCollisionGroups.h | 2 +- libraries/ui/src/VrMenu.cpp | 4 ++-- tools/vhacd-util/src/VHACDUtilApp.cpp | 1 + 8 files changed, 8 insertions(+), 6 deletions(-) diff --git a/interface/src/devices/OculusManager.cpp b/interface/src/devices/OculusManager.cpp index a7383ae4bb..96926406d9 100644 --- a/interface/src/devices/OculusManager.cpp +++ b/interface/src/devices/OculusManager.cpp @@ -164,6 +164,7 @@ void OculusManager::connect() { int configResult = ovrHmd_ConfigureRendering(_ovrHmd, &cfg.Config, distortionCaps, _eyeFov, _eyeRenderDesc); assert(configResult); + (void)configResult; // quiet warning _recommendedTexSize = ovrHmd_GetFovTextureSize(_ovrHmd, ovrEye_Left, _eyeFov[ovrEye_Left], 1.0f); diff --git a/libraries/entities/src/DeleteEntityOperator.cpp b/libraries/entities/src/DeleteEntityOperator.cpp index 051accc732..bb96b9698d 100644 --- a/libraries/entities/src/DeleteEntityOperator.cpp +++ b/libraries/entities/src/DeleteEntityOperator.cpp @@ -95,6 +95,7 @@ bool DeleteEntityOperator::preRecursion(OctreeElement* element) { EntityItemPointer theEntity = details.entity; bool entityDeleted = entityTreeElement->removeEntityItem(theEntity); // remove it from the element assert(entityDeleted); + (void)entityDeleted; // quite warning _tree->setContainingElement(details.entity->getEntityItemID(), NULL); // update or id to element lookup _foundCount++; } diff --git a/libraries/render-utils/src/TextRenderer3D.cpp b/libraries/render-utils/src/TextRenderer3D.cpp index 0eb560bf72..2f898542b9 100644 --- a/libraries/render-utils/src/TextRenderer3D.cpp +++ b/libraries/render-utils/src/TextRenderer3D.cpp @@ -451,7 +451,6 @@ TextRenderer3D::TextRenderer3D(const char* family, float pointSize, int weight, EffectType effect, int effectThickness, const QColor& color) : _effectType(effect), _effectThickness(effectThickness), - _pointSize(pointSize), _color(toGlm(color)), _font(loadFont3D(family)) { if (!_font) { diff --git a/libraries/render-utils/src/TextRenderer3D.h b/libraries/render-utils/src/TextRenderer3D.h index e61203b06f..9f6a16d743 100644 --- a/libraries/render-utils/src/TextRenderer3D.h +++ b/libraries/render-utils/src/TextRenderer3D.h @@ -65,8 +65,6 @@ private: // the thickness of the effect const int _effectThickness; - const float _pointSize; - // text color const glm::vec4 _color; diff --git a/libraries/shared/src/MatrixStack.h b/libraries/shared/src/MatrixStack.h index a02e284725..5a0b56ff9b 100644 --- a/libraries/shared/src/MatrixStack.h +++ b/libraries/shared/src/MatrixStack.h @@ -118,7 +118,9 @@ public: template void withPush(Function f) { + #ifdef DEBUG size_t startingDepth = size(); + #endif push(); f(); pop(); diff --git a/libraries/shared/src/PhysicsCollisionGroups.h b/libraries/shared/src/PhysicsCollisionGroups.h index cce9637cd4..08d83a29ca 100644 --- a/libraries/shared/src/PhysicsCollisionGroups.h +++ b/libraries/shared/src/PhysicsCollisionGroups.h @@ -55,7 +55,7 @@ const int16_t COLLISION_GROUP_COLLISIONLESS = 1 << 15; const int16_t COLLISION_MASK_DEFAULT = ~ COLLISION_GROUP_COLLISIONLESS; // STATIC also doesn't collide with other STATIC -const int16_t COLLISION_MASK_STATIC = ~ (COLLISION_GROUP_COLLISIONLESS | COLLISION_MASK_STATIC); +const int16_t COLLISION_MASK_STATIC = ~ (COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_STATIC); const int16_t COLLISION_MASK_KINEMATIC = COLLISION_MASK_DEFAULT; diff --git a/libraries/ui/src/VrMenu.cpp b/libraries/ui/src/VrMenu.cpp index b6cb0b136b..1b402ff2a3 100644 --- a/libraries/ui/src/VrMenu.cpp +++ b/libraries/ui/src/VrMenu.cpp @@ -135,8 +135,8 @@ void VrMenu::setRootMenu(QObject* rootMenu) { void VrMenu::addMenu(QMenu* menu) { Q_ASSERT(!MenuUserData::forObject(menu)); - QObject * parent = menu->parent(); - QObject * qmlParent; + QObject* parent = menu->parent(); + QObject* qmlParent = nullptr; if (dynamic_cast(parent)) { MenuUserData* userData = MenuUserData::forObject(parent); qmlParent = findMenuObject(userData->uuid.toString()); diff --git a/tools/vhacd-util/src/VHACDUtilApp.cpp b/tools/vhacd-util/src/VHACDUtilApp.cpp index ed4dab020f..2af6bca337 100644 --- a/tools/vhacd-util/src/VHACDUtilApp.cpp +++ b/tools/vhacd-util/src/VHACDUtilApp.cpp @@ -322,6 +322,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : QString outputFileName = baseFileName + "-" + QString::number(count) + ".obj"; writeOBJ(outputFileName, fbx, outputCentimeters, count); count++; + (void)meshPart; // quiet warning } } } From f2ba91383c294b36344040901460f9addb0180df Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Jun 2015 14:26:36 -0700 Subject: [PATCH 11/12] fix some warnings --- libraries/physics/src/MeshMassProperties.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/physics/src/MeshMassProperties.cpp b/libraries/physics/src/MeshMassProperties.cpp index ee2945422d..4e471f7870 100644 --- a/libraries/physics/src/MeshMassProperties.cpp +++ b/libraries/physics/src/MeshMassProperties.cpp @@ -270,7 +270,9 @@ void MeshMassProperties::computeMassProperties(const VectorOfPoints& points, con } // create some variables to hold temporary results + #ifdef DEBUG uint32_t numPoints = points.size(); + #endif const btVector3 p0(0.0f, 0.0f, 0.0f); btMatrix3x3 tetraInertia; btMatrix3x3 doubleDebugInertia; From 225e2ebfdc8003be22124f221f26bdce927c6738 Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Wed, 17 Jun 2015 14:27:16 -0700 Subject: [PATCH 12/12] Fixing build issues and finishing up address bar --- interface/resources/qml/AddressBarDialog.qml | 11 +++++------ interface/src/ui/AddressBarDialog.cpp | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index b8543c132d..70cb22dc4d 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -62,8 +62,7 @@ DialogContainer { MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton - onClicked: { - event.accepted = true + onClicked: { addressBarDialog.loadBack() } } @@ -85,8 +84,7 @@ DialogContainer { MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton - onClicked: { - event.accepted = true + onClicked: { addressBarDialog.loadForward() } } @@ -113,7 +111,7 @@ DialogContainer { addressBarDialog.loadAddress(addressLine.text) } } - + MouseArea { // Drag the icon width: parent.height @@ -129,6 +127,7 @@ DialogContainer { } } + /* MouseArea { // Drag the input rectangle width: parent.width - parent.height @@ -142,7 +141,7 @@ DialogContainer { maximumX: root.parent ? root.maximumX : 0 maximumY: root.parent ? root.maximumY + parent.inputAreaStep : 0 } - } + }*/ } } diff --git a/interface/src/ui/AddressBarDialog.cpp b/interface/src/ui/AddressBarDialog.cpp index 50fbf979a0..80f51ff906 100644 --- a/interface/src/ui/AddressBarDialog.cpp +++ b/interface/src/ui/AddressBarDialog.cpp @@ -31,7 +31,7 @@ void AddressBarDialog::hide() { void AddressBarDialog::loadAddress(const QString& address) { qDebug() << "Called LoadAddress with address " << address; if (!address.isEmpty()) { - DependencyManager::get()->handleLookupString(address);; + DependencyManager::get()->handleLookupString(address); } }