mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-19 10:18:43 +02:00
Revert "Job #19766 BUG: Stop or reload all scripts crashes interface fixed, part 3"
This reverts commit 46f2ab73bc
.
This commit is contained in:
parent
46f2ab73bc
commit
1e1cc69287
5 changed files with 38 additions and 175 deletions
|
@ -20,10 +20,6 @@ if (NOT QT_CMAKE_PREFIX_PATH)
|
|||
set(QT_CMAKE_PREFIX_PATH $ENV{QT_CMAKE_PREFIX_PATH})
|
||||
endif ()
|
||||
|
||||
if (NOT ZLIB_ROOT)
|
||||
set(ZLIB_ROOT $ENV{ZLIB_ROOT})
|
||||
endif ()
|
||||
|
||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_CMAKE_PREFIX_PATH})
|
||||
|
||||
# set our Base SDK to 10.8
|
||||
|
|
|
@ -33,64 +33,6 @@ SharedAssignmentPointer AssignmentClient::_currentAssignment;
|
|||
|
||||
int hifiSockAddrMeta = qRegisterMetaType<HifiSockAddr>("HifiSockAddr");
|
||||
|
||||
template <class T>
|
||||
class Parse : public Parser {
|
||||
public:
|
||||
Parse(const QString& option, bool required, T* value) : Parser(option, required), _value(value) {}
|
||||
bool parse(const QStringList& argumentList);
|
||||
private:
|
||||
T* _value;
|
||||
};
|
||||
|
||||
template<>
|
||||
bool Parse<Assignment::Type>::parse(const QStringList& argumentList) {
|
||||
int argumentIndex = findToken(argumentList);
|
||||
if (argumentIndex != -1) {
|
||||
argumentIndex++;
|
||||
if (argumentList.size() > argumentIndex) {
|
||||
bool ok;
|
||||
int value = argumentList[argumentIndex].toInt(&ok);
|
||||
if (ok) {
|
||||
*_value = static_cast<Assignment::Type>(value);
|
||||
}
|
||||
validateValue(ok);
|
||||
} else {
|
||||
valueNotSpecified();
|
||||
}
|
||||
}
|
||||
return isValid();
|
||||
}
|
||||
|
||||
template<>
|
||||
bool Parse<QUuid>::parse(const QStringList& argumentList) {
|
||||
int argumentIndex = findToken(argumentList);
|
||||
if (argumentIndex != -1) {
|
||||
argumentIndex++;
|
||||
if (argumentList.size() > argumentIndex) {
|
||||
*_value = QString(argumentList[argumentIndex]);
|
||||
validateValue(!_value->isNull());
|
||||
} else {
|
||||
valueNotSpecified();
|
||||
}
|
||||
}
|
||||
return isValid();
|
||||
}
|
||||
|
||||
template<>
|
||||
bool Parse<QString>::parse(const QStringList& argumentList) {
|
||||
int argumentIndex = findToken(argumentList);
|
||||
if (argumentIndex != -1) {
|
||||
argumentIndex++;
|
||||
if (argumentList.size() > argumentIndex) {
|
||||
*_value = argumentList[argumentIndex];
|
||||
validateValue(true);
|
||||
} else {
|
||||
valueNotSpecified();
|
||||
}
|
||||
}
|
||||
return isValid();
|
||||
}
|
||||
|
||||
AssignmentClient::AssignmentClient(int &argc, char **argv) :
|
||||
QCoreApplication(argc, argv),
|
||||
_assignmentServerHostname(DEFAULT_ASSIGNMENT_SERVER_HOSTNAME)
|
||||
|
@ -101,42 +43,40 @@ AssignmentClient::AssignmentClient(int &argc, char **argv) :
|
|||
QSettings::setDefaultFormat(QSettings::IniFormat);
|
||||
|
||||
QStringList argumentList = arguments();
|
||||
|
||||
// Define parser tokens
|
||||
const QString ASSIGNMENT_TYPE_OVERRIDE_OPTION = "-t";
|
||||
const QString ASSIGNMENT_POOL_OPTION = "--pool";
|
||||
const QString ASSIGNMENT_WALLET_DESTINATION_ID_OPTION = "--wallet";
|
||||
const QString CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION = "-a";
|
||||
|
||||
// Define parser results
|
||||
Assignment::Type requestAssignmentType = Assignment::AllTypes;
|
||||
QString assignmentPool;
|
||||
QUuid walletUUID;
|
||||
|
||||
// Define parsers
|
||||
_parsers.insert(ASSIGNMENT_TYPE_OVERRIDE_OPTION, new Parse<Assignment::Type>(ASSIGNMENT_TYPE_OVERRIDE_OPTION, false, &requestAssignmentType));
|
||||
_parsers.insert(ASSIGNMENT_POOL_OPTION, new Parse<QString>(ASSIGNMENT_POOL_OPTION, false, &assignmentPool));
|
||||
_parsers.insert(ASSIGNMENT_WALLET_DESTINATION_ID_OPTION, new Parse<QUuid>(ASSIGNMENT_WALLET_DESTINATION_ID_OPTION, false, &walletUUID));
|
||||
_parsers.insert(CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION, new Parse<QString>(CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION, false, &_assignmentServerHostname));
|
||||
|
||||
|
||||
// register meta type is required for queued invoke method on Assignment subclasses
|
||||
|
||||
// set the logging target to the the CHILD_TARGET_NAME
|
||||
Logging::setTargetName(ASSIGNMENT_CLIENT_TARGET_NAME);
|
||||
|
||||
foreach (Parser* option, _parsers) {
|
||||
if (option) {
|
||||
option->parse(argumentList);
|
||||
}
|
||||
const QString ASSIGNMENT_TYPE_OVVERIDE_OPTION = "-t";
|
||||
int argumentIndex = argumentList.indexOf(ASSIGNMENT_TYPE_OVVERIDE_OPTION);
|
||||
|
||||
Assignment::Type requestAssignmentType = Assignment::AllTypes;
|
||||
|
||||
if (argumentIndex != -1) {
|
||||
requestAssignmentType = (Assignment::Type) argumentList[argumentIndex + 1].toInt();
|
||||
}
|
||||
|
||||
|
||||
const QString ASSIGNMENT_POOL_OPTION = "--pool";
|
||||
|
||||
argumentIndex = argumentList.indexOf(ASSIGNMENT_POOL_OPTION);
|
||||
|
||||
QString assignmentPool;
|
||||
|
||||
if (argumentIndex != -1) {
|
||||
assignmentPool = argumentList[argumentIndex + 1];
|
||||
}
|
||||
|
||||
// setup our _requestAssignment member variable from the passed arguments
|
||||
_requestAssignment = Assignment(Assignment::RequestCommand, requestAssignmentType, assignmentPool);
|
||||
|
||||
// check if we were passed a wallet UUID on the command line
|
||||
// this would represent where the user running AC wants funds sent to
|
||||
if (_parsers[ASSIGNMENT_WALLET_DESTINATION_ID_OPTION]->exists() &&
|
||||
_parsers[ASSIGNMENT_WALLET_DESTINATION_ID_OPTION]->isValid()) {
|
||||
|
||||
const QString ASSIGNMENT_WALLET_DESTINATION_ID_OPTION = "--wallet";
|
||||
if ((argumentIndex = argumentList.indexOf(ASSIGNMENT_WALLET_DESTINATION_ID_OPTION)) != -1) {
|
||||
QUuid walletUUID = QString(argumentList[argumentIndex + 1]);
|
||||
qDebug() << "The destination wallet UUID for credits is" << uuidStringWithoutCurlyBraces(walletUUID);
|
||||
_requestAssignment.setWalletUUID(walletUUID);
|
||||
}
|
||||
|
@ -144,9 +84,14 @@ AssignmentClient::AssignmentClient(int &argc, char **argv) :
|
|||
// create a NodeList as an unassigned client
|
||||
NodeList* nodeList = NodeList::createInstance(NodeType::Unassigned);
|
||||
|
||||
// check for an overriden assignment server hostname
|
||||
if (_parsers[CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION]->exists() &&
|
||||
_parsers[CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION]->isValid()) {
|
||||
// check for an overriden assignment server hostname
|
||||
const QString CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION = "-a";
|
||||
|
||||
argumentIndex = argumentList.indexOf(CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION);
|
||||
|
||||
if (argumentIndex != -1) {
|
||||
_assignmentServerHostname = argumentList[argumentIndex + 1];
|
||||
|
||||
// set the custom assignment socket on our NodeList
|
||||
HifiSockAddr customAssignmentSocket = HifiSockAddr(_assignmentServerHostname, DEFAULT_DOMAIN_SERVER_PORT);
|
||||
|
||||
|
@ -168,12 +113,6 @@ AssignmentClient::AssignmentClient(int &argc, char **argv) :
|
|||
this, &AssignmentClient::handleAuthenticationRequest);
|
||||
}
|
||||
|
||||
AssignmentClient::~AssignmentClient() {
|
||||
foreach (Parser* option, _parsers) {
|
||||
delete option;
|
||||
}
|
||||
}
|
||||
|
||||
void AssignmentClient::sendAssignmentRequest() {
|
||||
if (!_currentAssignment) {
|
||||
NodeList::getInstance()->sendAssignment(_requestAssignment);
|
||||
|
|
|
@ -16,57 +16,11 @@
|
|||
|
||||
#include "ThreadedAssignment.h"
|
||||
|
||||
class Parser {
|
||||
public:
|
||||
Parser(const QString& option, bool required) : _option(option), _required(required), _exists(false), _isValid(false) {}
|
||||
virtual bool parse(const QStringList& argumentList) { return false; }
|
||||
bool exists() { return _exists; }
|
||||
bool isValid() { return _isValid; }
|
||||
|
||||
protected:
|
||||
int findToken(const QStringList& argumentList) {
|
||||
int argumentIndex = argumentList.indexOf(_option);
|
||||
validateOption(argumentIndex);
|
||||
return argumentIndex;
|
||||
}
|
||||
|
||||
void validateOption(int index) {
|
||||
_exists = true;
|
||||
if (index == -1) {
|
||||
_exists = false;
|
||||
if (_required) {
|
||||
qDebug() << "Command line option " << _option << " is missing";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void valueNotSpecified() {
|
||||
_isValid = false;
|
||||
qDebug() << "Command line option " << _option << " value is missing";
|
||||
}
|
||||
|
||||
void validateValue(bool ok) {
|
||||
_isValid = ok;
|
||||
if (!ok) {
|
||||
qDebug() << "Command line option " << _option << " value is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
QString _option;
|
||||
bool _required;
|
||||
bool _exists;
|
||||
bool _isValid;
|
||||
};
|
||||
|
||||
class AssignmentClient : public QCoreApplication {
|
||||
Q_OBJECT
|
||||
public:
|
||||
AssignmentClient(int &argc, char **argv);
|
||||
~AssignmentClient();
|
||||
|
||||
static const SharedAssignmentPointer& getCurrentAssignment() { return _currentAssignment; }
|
||||
|
||||
private slots:
|
||||
void sendAssignmentRequest();
|
||||
void readPendingDatagrams();
|
||||
|
@ -77,8 +31,6 @@ private:
|
|||
Assignment _requestAssignment;
|
||||
static SharedAssignmentPointer _currentAssignment;
|
||||
QString _assignmentServerHostname;
|
||||
|
||||
QMap<QString, Parser*> _parsers;
|
||||
};
|
||||
|
||||
#endif // hifi_AssignmentClient_h
|
||||
|
|
|
@ -3483,10 +3483,8 @@ void Application::saveScripts() {
|
|||
}
|
||||
|
||||
ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {
|
||||
QUrl scriptUrl(scriptName);
|
||||
const QString& scriptURLString = scriptUrl.toString();
|
||||
if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptURLString) && !_scriptEnginesHash[scriptURLString]->isFinished()){
|
||||
return _scriptEnginesHash[scriptURLString];
|
||||
if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptName) && !_scriptEnginesHash[scriptName]->isFinished()){
|
||||
return _scriptEnginesHash[scriptName];
|
||||
}
|
||||
|
||||
ScriptEngine* scriptEngine;
|
||||
|
@ -3494,8 +3492,9 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript
|
|||
scriptEngine = new ScriptEngine(NO_SCRIPT, "", &_controllerScriptingInterface);
|
||||
} else {
|
||||
// start the script on a new thread...
|
||||
QUrl scriptUrl(scriptName);
|
||||
scriptEngine = new ScriptEngine(scriptUrl, &_controllerScriptingInterface);
|
||||
_scriptEnginesHash.insert(scriptURLString, scriptEngine);
|
||||
_scriptEnginesHash.insert(scriptUrl.toString(), scriptEngine);
|
||||
|
||||
if (!scriptEngine->hasScript()) {
|
||||
qDebug() << "Application::loadScript(), script failed to load...";
|
||||
|
|
|
@ -219,9 +219,8 @@ QAudioDeviceInfo defaultAudioDeviceForMode(QAudio::Mode mode) {
|
|||
pPropertyStore->Release();
|
||||
pPropertyStore = NULL;
|
||||
//QAudio devices seems to only take the 31 first characters of the Friendly Device Name.
|
||||
//const DWORD QT_WIN_MAX_AUDIO_DEVICENAME_LEN = 31;
|
||||
// deviceName = QString::fromWCharArray((wchar_t*)pv.pwszVal).left(QT_WIN_MAX_AUDIO_DEVICENAME_LEN);
|
||||
deviceName = QString::fromWCharArray((wchar_t*)pv.pwszVal);
|
||||
const DWORD QT_WIN_MAX_AUDIO_DEVICENAME_LEN = 31;
|
||||
deviceName = QString::fromWCharArray((wchar_t*)pv.pwszVal).left(QT_WIN_MAX_AUDIO_DEVICENAME_LEN);
|
||||
qDebug() << (mode == QAudio::AudioOutput ? "output" : "input") << " device:" << deviceName;
|
||||
PropVariantClear(&pv);
|
||||
}
|
||||
|
@ -1078,35 +1077,13 @@ void Audio::renderToolBox(int x, int y, bool boxed) {
|
|||
}
|
||||
|
||||
_iconBounds = QRect(x, y, MUTE_ICON_SIZE, MUTE_ICON_SIZE);
|
||||
|
||||
static quint64 last = 0; // Hold the last time sample
|
||||
|
||||
if (!_muted) {
|
||||
last = 0;
|
||||
glColor3f(1,1,1);
|
||||
glBindTexture(GL_TEXTURE_2D, _micTextureId);
|
||||
} else {
|
||||
quint64 usecTimestampNow();
|
||||
static const float CYCLE_DURATION = 3.0f; // Seconds
|
||||
quint64 now = usecTimestampNow();
|
||||
float delta = (float)(now - last) / 1000000.0f;
|
||||
float from = 1.0f; // Linear fade down (upper bound)
|
||||
float to = 0.3f; // Linear fade down (lower bound)
|
||||
|
||||
if (delta > CYCLE_DURATION) {
|
||||
last = now;
|
||||
delta -= (int)delta;
|
||||
} else if (delta > (CYCLE_DURATION * 0.5f)) {
|
||||
// Linear fade up
|
||||
from = 0.3f; // lower bound
|
||||
to = 1.0f; // upper bound
|
||||
}
|
||||
// Compute a linear ramp to fade the color from full to partial saturation
|
||||
float linearRamp = (from - to) * delta / CYCLE_DURATION + to;
|
||||
glColor3f(linearRamp, linearRamp, linearRamp);
|
||||
glBindTexture(GL_TEXTURE_2D, _muteTextureId);
|
||||
}
|
||||
|
||||
glColor3f(1,1,1);
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
glTexCoord2f(1, 1);
|
||||
|
|
Loading…
Reference in a new issue