This commit is contained in:
Philip Rosedale 2014-09-18 14:51:19 -07:00
commit d3cc22b39d
9 changed files with 59 additions and 59 deletions

View file

@ -219,6 +219,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) :
if (portStr) { if (portStr) {
listenPort = atoi(portStr); listenPort = atoi(portStr);
} }
// call the OAuthWebviewHandler static getter so that its instance lives in our thread
// make sure it is ready before the NodeList might need it
OAuthWebViewHandler::getInstance();
// start the nodeThread so its event loop is running // start the nodeThread so its event loop is running
_nodeThread->start(); _nodeThread->start();
@ -418,11 +422,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) :
connect(_window, &MainWindow::windowGeometryChanged, connect(_window, &MainWindow::windowGeometryChanged,
_runningScriptsWidget, &RunningScriptsWidget::setBoundary); _runningScriptsWidget, &RunningScriptsWidget::setBoundary);
// call the OAuthWebviewHandler static getter so that its instance lives in our thread
OAuthWebViewHandler::getInstance();
// make sure the High Fidelity root CA is in our list of trusted certs
OAuthWebViewHandler::addHighFidelityRootCAToSSLConfig();
_trayIcon->show(); _trayIcon->show();
#ifdef HAVE_RTMIDI #ifdef HAVE_RTMIDI

View file

@ -15,6 +15,8 @@
#include <LimitedNodeList.h> #include <LimitedNodeList.h>
#include <OAuthNetworkAccessManager.h> #include <OAuthNetworkAccessManager.h>
#include "Application.h"
#include "DataWebDialog.h" #include "DataWebDialog.h"
DataWebDialog::DataWebDialog() { DataWebDialog::DataWebDialog() {
@ -23,6 +25,12 @@ DataWebDialog::DataWebDialog() {
// use an OAuthNetworkAccessManager instead of regular QNetworkAccessManager so our requests are authed // use an OAuthNetworkAccessManager instead of regular QNetworkAccessManager so our requests are authed
page()->setNetworkAccessManager(OAuthNetworkAccessManager::getInstance()); page()->setNetworkAccessManager(OAuthNetworkAccessManager::getInstance());
// have the page delegate external links so they can be captured by the Application in case they are a hifi link
page()->setLinkDelegationPolicy(QWebPage::DelegateExternalLinks);
// have the Application handle external links
connect(this, &QWebView::linkClicked, Application::getInstance(), &Application::openUrl);
} }
DataWebDialog* DataWebDialog::dialogForPath(const QString& path) { DataWebDialog* DataWebDialog::dialogForPath(const QString& path) {

View file

@ -27,7 +27,7 @@ OAuthWebViewHandler::OAuthWebViewHandler() :
_webViewRedisplayTimer(), _webViewRedisplayTimer(),
_lastAuthorizationURL() _lastAuthorizationURL()
{ {
addHighFidelityRootCAToSSLConfig();
} }
const char HIGH_FIDELITY_CA[] = "-----BEGIN CERTIFICATE-----\n" const char HIGH_FIDELITY_CA[] = "-----BEGIN CERTIFICATE-----\n"

View file

@ -17,15 +17,15 @@
#include "Player.h" #include "Player.h"
Player::Player(AvatarData* avatar) : Player::Player(AvatarData* avatar) :
_recording(new Recording()), _recording(new Recording()),
_avatar(avatar), _avatar(avatar),
_audioThread(NULL), _audioThread(NULL),
_playFromCurrentPosition(true), _playFromCurrentPosition(true),
_loop(false), _loop(false),
_useAttachments(true), _useAttachments(true),
_useDisplayName(true), _useDisplayName(true),
_useHeadURL(true), _useHeadURL(true),
_useSkeletonURL(true) _useSkeletonURL(true)
{ {
_timer.invalidate(); _timer.invalidate();
_options.setLoop(false); _options.setLoop(false);
@ -157,10 +157,9 @@ void Player::loopRecording() {
setupAudioThread(); setupAudioThread();
_currentFrame = 0; _currentFrame = 0;
_timer.restart(); _timer.restart();
} }
void Player::loadFromFile(QString file) { void Player::loadFromFile(const QString& file) {
if (_recording) { if (_recording) {
_recording->clear(); _recording->clear();
} else { } else {

View file

@ -34,10 +34,10 @@ public:
RecordingPointer getRecording() const { return _recording; } RecordingPointer getRecording() const { return _recording; }
public slots: public slots:
void startPlaying(); void startPlaying();
void stopPlaying(); void stopPlaying();
void loadFromFile(QString file); void loadFromFile(const QString& file);
void loadRecording(RecordingPointer recording); void loadRecording(RecordingPointer recording);
void play(); void play();

View file

@ -86,7 +86,7 @@ void Recorder::stopRecording() {
qDebug().nospace() << "Recorded " << _recording->getFrameNumber() << " during " << _recording->getLength() << " msec (" << _recording->getFrameNumber() / (_recording->getLength() / 1000.0f) << " fps)"; qDebug().nospace() << "Recorded " << _recording->getFrameNumber() << " during " << _recording->getLength() << " msec (" << _recording->getFrameNumber() / (_recording->getLength() / 1000.0f) << " fps)";
} }
void Recorder::saveToFile(QString file) { void Recorder::saveToFile(const QString& file) {
if (_recording->isEmpty()) { if (_recording->isEmpty()) {
qDebug() << "Cannot save recording to file, recording is empty."; qDebug() << "Cannot save recording to file, recording is empty.";
} }

View file

@ -38,7 +38,7 @@ public:
public slots: public slots:
void startRecording(); void startRecording();
void stopRecording(); void stopRecording();
void saveToFile(QString file); void saveToFile(const QString& file);
void record(); void record();
void record(char* samples, int size); void record(char* samples, int size);

View file

@ -20,7 +20,6 @@
#include <QEventLoop> #include <QEventLoop>
#include <QFile> #include <QFile>
#include <QFileInfo> #include <QFileInfo>
#include <QMessageBox>
#include <QPair> #include <QPair>
#include "AvatarData.h" #include "AvatarData.h"
@ -74,7 +73,7 @@ void Recording::addFrame(int timestamp, RecordingFrame &frame) {
_frames << frame; _frames << frame;
} }
void Recording::addAudioPacket(QByteArray byteArray) { void Recording::addAudioPacket(const QByteArray& byteArray) {
if (!_audio) { if (!_audio) {
_audio = new Sound(byteArray); _audio = new Sound(byteArray);
return; return;
@ -89,7 +88,7 @@ void Recording::clear() {
_audio = NULL; _audio = NULL;
} }
void writeVec3(QDataStream& stream, glm::vec3 value) { void writeVec3(QDataStream& stream, const glm::vec3& value) {
unsigned char buffer[sizeof(value)]; unsigned char buffer[sizeof(value)];
memcpy(buffer, &value, sizeof(value)); memcpy(buffer, &value, sizeof(value));
stream.writeRawData(reinterpret_cast<char*>(buffer), sizeof(value)); stream.writeRawData(reinterpret_cast<char*>(buffer), sizeof(value));
@ -102,7 +101,7 @@ bool readVec3(QDataStream& stream, glm::vec3& value) {
return true; return true;
} }
void writeQuat(QDataStream& stream, glm::quat value) { void writeQuat(QDataStream& stream, const glm::quat& value) {
unsigned char buffer[256]; unsigned char buffer[256];
int writtenToBuffer = packOrientationQuatToBytes(buffer, value); int writtenToBuffer = packOrientationQuatToBytes(buffer, value);
stream.writeRawData(reinterpret_cast<char*>(buffer), writtenToBuffer); stream.writeRawData(reinterpret_cast<char*>(buffer), writtenToBuffer);
@ -136,7 +135,7 @@ bool readFloat(QDataStream& stream, float& value, int radix) {
return true; return true;
} }
void writeRecordingToFile(RecordingPointer recording, QString filename) { void writeRecordingToFile(RecordingPointer recording, const QString& filename) {
if (!recording || recording->getFrameNumber() < 1) { if (!recording || recording->getFrameNumber() < 1) {
qDebug() << "Can't save empty recording"; qDebug() << "Can't save empty recording";
return; return;
@ -329,7 +328,7 @@ void writeRecordingToFile(RecordingPointer recording, QString filename) {
fileStream << recording->_audio->getByteArray(); fileStream << recording->_audio->getByteArray();
qint64 writtingTime = timer.restart(); qint64 writingTime = timer.restart();
// Write data length and CRC-16 // Write data length and CRC-16
quint32 dataLength = file.pos() - dataOffset; quint32 dataLength = file.pos() - dataOffset;
file.seek(dataOffset); // Go to beginning of data for checksum file.seek(dataOffset); // Go to beginning of data for checksum
@ -374,10 +373,10 @@ void writeRecordingToFile(RecordingPointer recording, QString filename) {
} }
qint64 checksumTime = timer.elapsed(); qint64 checksumTime = timer.elapsed();
qDebug() << "Wrote" << file.size() << "bytes in" << writtingTime + checksumTime << "ms. (" << checksumTime << "ms for checksum)"; qDebug() << "Wrote" << file.size() << "bytes in" << writingTime + checksumTime << "ms. (" << checksumTime << "ms for checksum)";
} }
RecordingPointer readRecordingFromFile(RecordingPointer recording, QString filename) { RecordingPointer readRecordingFromFile(RecordingPointer recording, const QString& filename) {
QByteArray byteArray; QByteArray byteArray;
QUrl url(filename); QUrl url(filename);
QElapsedTimer timer; QElapsedTimer timer;
@ -416,10 +415,6 @@ RecordingPointer readRecordingFromFile(RecordingPointer recording, QString filen
if (filename.endsWith(".rec") || filename.endsWith(".REC")) { if (filename.endsWith(".rec") || filename.endsWith(".REC")) {
qDebug() << "Old .rec format"; qDebug() << "Old .rec format";
QMessageBox::warning(NULL,
QString("Old recording format"),
QString("Converting your file to the new format."),
QMessageBox::Ok);
readRecordingFromRecFile(recording, filename, byteArray); readRecordingFromRecFile(recording, filename, byteArray);
return recording; return recording;
} else if (!filename.endsWith(".hfr") && !filename.endsWith(".HFR")) { } else if (!filename.endsWith(".hfr") && !filename.endsWith(".HFR")) {
@ -641,7 +636,7 @@ RecordingPointer readRecordingFromFile(RecordingPointer recording, QString filen
} }
RecordingPointer readRecordingFromRecFile(RecordingPointer recording, QString filename, QByteArray byteArray) { RecordingPointer readRecordingFromRecFile(RecordingPointer recording, const QString& filename, const QByteArray& byteArray) {
QElapsedTimer timer; QElapsedTimer timer;
timer.start(); timer.start();
@ -786,21 +781,18 @@ RecordingPointer readRecordingFromRecFile(RecordingPointer recording, QString fi
qDebug() << "Read " << byteArray.size() << " bytes in " << timer.elapsed() << " ms."; qDebug() << "Read " << byteArray.size() << " bytes in " << timer.elapsed() << " ms.";
// Set new filename // Set new filename
if (filename.startsWith("http") || filename.startsWith("https") || filename.startsWith("ftp")) { QString newFilename = filename;
filename = QUrl(filename).fileName(); if (newFilename.startsWith("http") || newFilename.startsWith("https") || newFilename.startsWith("ftp")) {
newFilename = QUrl(newFilename).fileName();
} }
if (filename.endsWith(".rec") || filename.endsWith(".REC")) { if (newFilename.endsWith(".rec") || newFilename.endsWith(".REC")) {
filename.chop(qstrlen(".rec")); newFilename.chop(qstrlen(".rec"));
} }
filename.append(".hfr"); newFilename.append(".hfr");
filename = QFileInfo(filename).absoluteFilePath(); newFilename = QFileInfo(newFilename).absoluteFilePath();
// Set recording to new format // Set recording to new format
writeRecordingToFile(recording, filename); writeRecordingToFile(recording, newFilename);
QMessageBox::warning(NULL, qDebug() << "Recording has been successfully converted at" << newFilename;
QString("New recording location"),
QString("The new recording was saved at:\n" + filename),
QMessageBox::Ok);
qDebug() << "Recording has been successfully converted at" << filename;
return recording; return recording;
} }

View file

@ -62,7 +62,7 @@ public:
protected: protected:
void addFrame(int timestamp, RecordingFrame& frame); void addFrame(int timestamp, RecordingFrame& frame);
void addAudioPacket(QByteArray byteArray); void addAudioPacket(const QByteArray& byteArray);
void clear(); void clear();
private: private:
@ -74,9 +74,10 @@ private:
friend class Recorder; friend class Recorder;
friend class Player; friend class Player;
friend void writeRecordingToFile(RecordingPointer recording, QString file); friend void writeRecordingToFile(RecordingPointer recording, const QString& file);
friend RecordingPointer readRecordingFromFile(RecordingPointer recording, QString file); friend RecordingPointer readRecordingFromFile(RecordingPointer recording, const QString& file);
friend RecordingPointer readRecordingFromRecFile(RecordingPointer recording, QString filename, QByteArray byteArray); friend RecordingPointer readRecordingFromRecFile(RecordingPointer recording, const QString& filename,
const QByteArray& byteArray);
}; };
/// Stores the different values associated to one recording frame /// Stores the different values associated to one recording frame
@ -95,13 +96,13 @@ public:
protected: protected:
void setBlendshapeCoefficients(QVector<float> blendshapeCoefficients); void setBlendshapeCoefficients(QVector<float> blendshapeCoefficients);
void setJointRotations(QVector<glm::quat> jointRotations) { _jointRotations = jointRotations; } void setJointRotations(QVector<glm::quat> jointRotations) { _jointRotations = jointRotations; }
void setTranslation(glm::vec3 translation) { _translation = translation; } void setTranslation(const glm::vec3& translation) { _translation = translation; }
void setRotation(glm::quat rotation) { _rotation = rotation; } void setRotation(const glm::quat& rotation) { _rotation = rotation; }
void setScale(float scale) { _scale = scale; } void setScale(float scale) { _scale = scale; }
void setHeadRotation(glm::quat headRotation) { _headRotation = headRotation; } void setHeadRotation(glm::quat headRotation) { _headRotation = headRotation; }
void setLeanSideways(float leanSideways) { _leanSideways = leanSideways; } void setLeanSideways(float leanSideways) { _leanSideways = leanSideways; }
void setLeanForward(float leanForward) { _leanForward = leanForward; } void setLeanForward(float leanForward) { _leanForward = leanForward; }
void setLookAtPosition(glm::vec3 lookAtPosition) { _lookAtPosition = lookAtPosition; } void setLookAtPosition(const glm::vec3& lookAtPosition) { _lookAtPosition = lookAtPosition; }
private: private:
QVector<float> _blendshapeCoefficients; QVector<float> _blendshapeCoefficients;
@ -115,13 +116,14 @@ private:
glm::vec3 _lookAtPosition; glm::vec3 _lookAtPosition;
friend class Recorder; friend class Recorder;
friend void writeRecordingToFile(RecordingPointer recording, QString file); friend void writeRecordingToFile(RecordingPointer recording, const QString& file);
friend RecordingPointer readRecordingFromFile(RecordingPointer recording, QString file); friend RecordingPointer readRecordingFromFile(RecordingPointer recording, const QString& file);
friend RecordingPointer readRecordingFromRecFile(RecordingPointer recording, QString filename, QByteArray byteArray); friend RecordingPointer readRecordingFromRecFile(RecordingPointer recording, const QString& filename,
const QByteArray& byteArray);
}; };
void writeRecordingToFile(RecordingPointer recording, QString filename); void writeRecordingToFile(RecordingPointer recording, const QString& filename);
RecordingPointer readRecordingFromFile(RecordingPointer recording, QString filename); RecordingPointer readRecordingFromFile(RecordingPointer recording, const QString& filename);
RecordingPointer readRecordingFromRecFile(RecordingPointer recording, QString filename, QByteArray byteArray); RecordingPointer readRecordingFromRecFile(RecordingPointer recording, const QString& filename, const QByteArray& byteArray);
#endif // hifi_Recording_h #endif // hifi_Recording_h