From 231d1373b6ac8c48c09f1e9d8e408fcb85fb9878 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 5 Jun 2019 08:38:34 +1200 Subject: [PATCH 001/106] Update MyAvatar, Avatar JSDoc per recent changes --- .../src/avatars/ScriptableAvatar.h | 6 +- interface/src/avatar/MyAvatar.h | 85 +++++++++++++------ libraries/avatars/src/AvatarData.h | 6 ++ 3 files changed, 68 insertions(+), 29 deletions(-) diff --git a/assignment-client/src/avatars/ScriptableAvatar.h b/assignment-client/src/avatars/ScriptableAvatar.h index 34dc25914f..3ef908bedb 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.h +++ b/assignment-client/src/avatars/ScriptableAvatar.h @@ -74,7 +74,8 @@ * avatar. Read-only. * @property {number} sensorToWorldScale - The scale that transforms dimensions in the user's real world to the avatar's * size in the virtual world. Read-only. - * @property {boolean} hasPriority - is the avatar in a Hero zone? Read-only. + * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. + * Read-only. * * @example Create a scriptable avatar. * (function () { @@ -138,6 +139,9 @@ public: /// Returns the index of the joint with the specified name, or -1 if not found/unknown. Q_INVOKABLE virtual int getJointIndex(const QString& name) const override; + /**jsdoc + * @comment Uses the base class's JSDoc. + */ Q_INVOKABLE virtual void setSkeletonModelURL(const QUrl& skeletonModelURL) override; /**jsdoc diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 058603f320..95f55c1cf0 100755 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -39,6 +39,23 @@ class ModelItemID; class MyHead; class DetailedMotionState; +/**jsdoc + *

Locomotion control types.

+ * + * + * + * + * + * + * + * + * + *
ValueNameDescription
0DefaultYour walking speed is constant; it doesn't change depending on how far + * forward you push your controller's joystick. Fully pushing your joystick forward makes your avatar run.
1AnalogYour walking speed changes in steps based on how far forward you push your + * controller's joystick. Fully pushing your joystick forward makes your avatar run.
2AnalogPlusYour walking speed changes proportionally to how far forward you push + * your controller's joystick. Fully pushing your joystick forward makes your avatar run.
+ * @typedef {number} MyAvatar.LocomotionControlsMode + */ enum LocomotionControlsMode { CONTROLS_DEFAULT = 0, CONTROLS_ANALOG, @@ -128,6 +145,8 @@ class MyAvatar : public Avatar { * avatar. Read-only. * @property {number} sensorToWorldScale - The scale that transforms dimensions in the user's real world to the avatar's * size in the virtual world. Read-only. + * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. + * Read-only. * * @comment IMPORTANT: This group of properties is copied from Avatar.h; they should NOT be edited here. * @property {Vec3} skeletonOffset - Can be used to apply a translation offset between the avatar's position and the @@ -239,9 +258,14 @@ class MyAvatar : public Avatar { * where MyAvatar.sessionUUID is not available (e.g., if not connected to a domain). Note: Likely to be deprecated. * Read-only. * - * @property {number} walkSpeed - The walk speed of your avatar. - * @property {number} walkBackwardSpeed - The walk backward speed of your avatar. - * @property {number} sprintSpeed - The sprint speed of your avatar. + * @property {number} walkSpeed - The walk speed of your avatar for the current control scheme (see + * {@link MyAvatar.getControlScheme|getControlScheme}). + * @property {number} walkBackwardSpeed - The walk backward speed of your avatar for the current control scheme (see + * {@link MyAvatar.getControlScheme|getControlScheme}). + * @property {number} sprintSpeed - The sprint (run) speed of your avatar for the current control scheme (see + * {@link MyAvatar.getControlScheme|getControlScheme}). + * @property {number} analogPlusWalkSpeed - The walk speed of your avatar for the "AnalogPlus" control scheme. + * @property {number} analogPlusSprintSpeed - The sprint speed of your avatar for the "AnalogPlus" control scheme. * @property {MyAvatar.SitStandModelType} userRecenterModel - Controls avatar leaning and recentering behavior. * @property {number} isInSittingState - true if your avatar is sitting (avatar leaning is disabled, * recenntering is enabled), false if it is standing (avatar leaning is enabled, and avatar recenters if it @@ -281,6 +305,7 @@ class MyAvatar : public Avatar { * @borrows Avatar.updateAvatarEntity as updateAvatarEntity * @borrows Avatar.clearAvatarEntity as clearAvatarEntity * @borrows Avatar.setForceFaceTrackerConnected as setForceFaceTrackerConnected + * @borrows Avatar.setSkeletonModelURL as setSkeletonModelURL * @borrows Avatar.getAttachmentData as getAttachmentData * @borrows Avatar.setAttachmentData as setAttachmentData * @borrows Avatar.attach as attach @@ -308,7 +333,6 @@ class MyAvatar : public Avatar { * @comment Avatar.setAbsoluteJointTranslationInObjectFrame as setAbsoluteJointTranslationInObjectFrame - Don't borrow because implementation is different. * @borrows Avatar.getTargetScale as getTargetScale * @borrows Avatar.resetLastSent as resetLastSent - * @borrows Avatar.hasPriority as hasPriority */ // FIXME: `glm::vec3 position` is not accessible from QML, so this exposes position in a QML-native type Q_PROPERTY(QVector3D qmlPosition READ getQmlPosition) @@ -789,26 +813,34 @@ public: */ Q_INVOKABLE void setSnapTurn(bool on) { _useSnapTurn = on; } - /** + /**jsdoc + * Gets the control scheme that is in use. * @function MyAvatar.getControlScheme - * @returns {number} - */ + * @returns {MyAvatar.LocomotionControlsMode} The control scheme that is in use. + */ Q_INVOKABLE int getControlScheme() const { return _controlSchemeIndex; } - /** + /**jsdoc + * Sets the control scheme to use. * @function MyAvatar.setControlScheme - * @param {number} index - */ + * @param {MyAvatar.LocomotionControlsMode} controlScheme - The control scheme to use. + */ Q_INVOKABLE void setControlScheme(int index) { _controlSchemeIndex = (index >= 0 && index <= 2) ? index : 0; } /**jsdoc + * Gets whether your avatar hovers when its feet are not on the ground. * @function MyAvatar.hoverWhenUnsupported - * @returns {boolean} + * @returns {boolean} true if your avatar hovers when its feet are not on the ground, false if it + * falls. */ + // FIXME: Should be named, getHoverWhenUnsupported(). Q_INVOKABLE bool hoverWhenUnsupported() const { return _hoverWhenUnsupported; } + /**jsdoc + * Sets whether your avatar hovers when its feet are not on the ground. * @function MyAvatar.setHoverWhenUnsupported - * @param {boolean} on + * @param {boolean} hover - true if your avatar hovers when its feet are not on the ground, false + * if it falls. */ Q_INVOKABLE void setHoverWhenUnsupported(bool on) { _hoverWhenUnsupported = on; } @@ -826,15 +858,19 @@ public: * @returns {string} "left" for the left hand, "right" for the right hand. */ Q_INVOKABLE QString getDominantHand() const; + /**jsdoc - * @function MyAVatar.setStrafeEnabled - * @param {bool} enabled - */ + * Sets whether strafing is enabled. + * @function MyAvatar.setStrafeEnabled + * @param {boolean} enabled - true if strafing is enabled, false if it isn't. + */ Q_INVOKABLE void setStrafeEnabled(bool enabled); + /**jsdoc - * @function MyAvatar.getStrafeEnabled - * @returns {bool} - */ + * Gets whether strafing is enabled. + * @function MyAvatar.getStrafeEnabled + * @returns {boolean} true if strafing is enabled, false if it isn't. + */ Q_INVOKABLE bool getStrafeEnabled() const; /**jsdoc * @function MyAvatar.setHmdAvatarAlignmentType @@ -1495,18 +1531,8 @@ public: */ Q_INVOKABLE float getDriveGear5(); - /**jsdoc - * Choose the control scheme. - * @function MyAvatar.setControlSchemeIndex - * @param {number} Choose the control scheme to be used. - */ void setControlSchemeIndex(int index); - /**jsdoc - * Check what control scheme is in use. - * @function MyAvatar.getControlSchemeIndex - * @returns {number} Returns the index associated with a given control scheme. - */ int getControlSchemeIndex(); /**jsdoc @@ -2409,6 +2435,9 @@ private: void updateEyeContactTarget(float deltaTime); // These are made private for MyAvatar so that you will use the "use" methods instead + /**jsdoc + * @comment Borrows the base class's JSDoc. + */ Q_INVOKABLE virtual void setSkeletonModelURL(const QUrl& skeletonModelURL) override; virtual void updatePalms() override {} diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index e5131ff94b..5c62e0b2c6 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -1211,6 +1211,12 @@ public: const QString& getDisplayName() const { return _displayName; } const QString& getSessionDisplayName() const { return _sessionDisplayName; } bool getLookAtSnappingEnabled() const { return _lookAtSnappingEnabled; } + + /**jsdoc + * Sets the avatar's skeleton model. + * @function Avatar.setSkeletonModelURL + * @param {string} url - The avatar's FST file. + */ Q_INVOKABLE virtual void setSkeletonModelURL(const QUrl& skeletonModelURL); virtual void setDisplayName(const QString& displayName); From f91c6dec3a24bfefc861ec9ef0c278e4c7973938 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 5 Jun 2019 08:38:52 +1200 Subject: [PATCH 002/106] Miscellaneous fixes noticed in passing --- interface/src/avatar/MyAvatar.h | 64 ++++++++++++++++----------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 95f55c1cf0..d78aebe0c1 100755 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -607,14 +607,13 @@ public: * the avatar will move in unpredictable ways. For more information about avatar joint orientation standards, see * Avatar Standards.

* @function MyAvatar.overrideAnimation - * @param url {string} The URL to the animation file. Animation files need to be FBX format, but only need to contain the + * @param {string} url - The URL to the animation file. Animation files need to be FBX format, but only need to contain the * avatar skeleton and animation data. - * @param fps {number} The frames per second (FPS) rate for the animation playback. 30 FPS is normal speed. - * @param loop {boolean} Set to true if the animation should loop. - * @param firstFrame {number} The frame the animation should start at. - * @param lastFrame {number} The frame the animation should end at. + * @param {number} fps - The frames per second (FPS) rate for the animation playback. 30 FPS is normal speed. + * @param {boolean} loop - true if the animation should loop, false if it shouldn't. + * @param {number} firstFrame - The frame to start the animation at. + * @param {number} lastFrame - The frame to end the animation at. * @example Play a clapping animation on your avatar for three seconds. - * // Clap your hands for 3 seconds then restore animation back to the avatar. * var ANIM_URL = "https://s3.amazonaws.com/hifi-public/animations/ClapAnimations/ClapHands_Standing.fbx"; * MyAvatar.overrideAnimation(ANIM_URL, 30, true, 0, 53); * Script.setTimeout(function () { @@ -625,18 +624,18 @@ public: Q_INVOKABLE void overrideAnimation(const QString& url, float fps, bool loop, float firstFrame, float lastFrame); /**jsdoc - * overrideHandAnimation() Gets the overrides the default hand poses that are triggered with controller buttons. - * use {@link MyAvatar.restoreHandAnimation}.

to restore the default poses. + * Overrides the default hand poses that are triggered with controller buttons. + * Use {@link MyAvatar.restoreHandAnimation} to restore the default poses. * @function MyAvatar.overrideHandAnimation - * @param isLeft {boolean} Set true if using the left hand - * @param url {string} The URL to the animation file. Animation files need to be FBX format, but only need to contain the + * @param isLeft {boolean} true to override the left hand, false to override the right hand. + * @param {string} url - The URL of the animation file. Animation files need to be FBX format, but only need to contain the * avatar skeleton and animation data. - * @param fps {number} The frames per second (FPS) rate for the animation playback. 30 FPS is normal speed. - * @param loop {boolean} Set to true if the animation should loop. - * @param firstFrame {number} The frame the animation should start at. - * @param lastFrame {number} The frame the animation should end at - * @example Override left hand animation for three seconds. - * // Override the left hand pose then restore the default pose. + * @param {number} fps - The frames per second (FPS) rate for the animation playback. 30 FPS is normal speed. + * @param {boolean} loop - true if the animation should loop, false if it shouldn't. + * @param {number} firstFrame - The frame to start the animation at. + * @param {number} lastFrame - The frame to end the animation at. + * @example Override left hand animation for three seconds. + * var ANIM_URL = "https://s3.amazonaws.com/hifi-public/animations/ClapAnimations/ClapHands_Standing.fbx"; * MyAvatar.overrideHandAnimation(isLeft, ANIM_URL, 30, true, 0, 53); * Script.setTimeout(function () { * MyAvatar.restoreHandAnimation(); @@ -653,7 +652,6 @@ public: * animation, this function has no effect.

* @function MyAvatar.restoreAnimation * @example Play a clapping animation on your avatar for three seconds. - * // Clap your hands for 3 seconds then restore animation back to the avatar. * var ANIM_URL = "https://s3.amazonaws.com/hifi-public/animations/ClapAnimations/ClapHands_Standing.fbx"; * MyAvatar.overrideAnimation(ANIM_URL, 30, true, 0, 53); * Script.setTimeout(function () { @@ -663,16 +661,15 @@ public: Q_INVOKABLE void restoreAnimation(); /**jsdoc - * Restores the default hand animation state machine that is driven by the state machine in the avatar-animation json. + * Restores the default hand animation state machine that is driven by the state machine in the avatar-animation JSON. *

The avatar animation system includes a set of default animations along with rules for how those animations are blended * together with procedural data (such as look at vectors, hand sensors etc.). Playing your own custom animations will * override the default animations. restoreHandAnimation() is used to restore the default hand poses - * If you aren't currently playing an override hand - * animation, this function has no effect.

+ * If you aren't currently playing an override hand animation, this function has no effect.

* @function MyAvatar.restoreHandAnimation * @param isLeft {boolean} Set to true if using the left hand * @example Override left hand animation for three seconds. - * // Override the left hand pose then restore the default pose. + * var ANIM_URL = "https://s3.amazonaws.com/hifi-public/animations/ClapAnimations/ClapHands_Standing.fbx"; * MyAvatar.overrideHandAnimation(isLeft, ANIM_URL, 30, true, 0, 53); * Script.setTimeout(function () { * MyAvatar.restoreHandAnimation(); @@ -713,12 +710,13 @@ public: * the avatar will move in unpredictable ways. For more information about avatar joint orientation standards, see * Avatar Standards. * @function MyAvatar.overrideRoleAnimation - * @param role {string} The animation role to override - * @param url {string} The URL to the animation file. Animation files need to be in FBX format, but only need to contain the avatar skeleton and animation data. - * @param fps {number} The frames per second (FPS) rate for the animation playback. 30 FPS is normal speed. - * @param loop {boolean} Set to true if the animation should loop - * @param firstFrame {number} The frame the animation should start at - * @param lastFrame {number} The frame the animation should end at + * @param {string} role - The animation role to override + * @param {string} url - The URL to the animation file. Animation files need to be in FBX format, but only need to contain + * the avatar skeleton and animation data. + * @param {number} fps - The frames per second (FPS) rate for the animation playback. 30 FPS is normal speed. + * @param {boolean} loop - true if the animation should loop, false if it shouldn't. + * @param {number} firstFrame - The frame the animation should start at. + * @param {number} lastFrame - The frame the animation should end at. * @example The default avatar-animation.json defines an "idleStand" animation role. This role specifies that when the avatar is not moving, * an animation clip of the avatar idling with hands hanging at its side will be used. It also specifies that when the avatar moves, the animation * will smoothly blend to the walking animation used by the "walkFwd" animation role. @@ -806,8 +804,9 @@ public: * mode. */ Q_INVOKABLE bool getSnapTurn() const { return _useSnapTurn; } + /**jsdoc - * Sets whether your should do snap turns or smooth turns in HMD mode. + * Sets whether you do snap turns or smooth turns in HMD mode. * @function MyAvatar.setSnapTurn * @param {boolean} on - true to do snap turns in HMD mode; false to do smooth turns in HMD mode. */ @@ -872,16 +871,17 @@ public: * @returns {boolean} true if strafing is enabled, false if it isn't. */ Q_INVOKABLE bool getStrafeEnabled() const; + /**jsdoc + * Sets the HMD alignment relative to your avatar. * @function MyAvatar.setHmdAvatarAlignmentType * @param {string} type - "head" to align your head and your avatar's head, "eyes" to align your * eyes and your avatar's eyes. - * */ Q_INVOKABLE void setHmdAvatarAlignmentType(const QString& type); /**jsdoc - * Gets the HMD alignment for your avatar. + * Gets the HMD alignment relative to your avatar. * @function MyAvatar.getHmdAvatarAlignmentType * @returns {string} "head" if aligning your head and your avatar's head, "eyes" if aligning your * eyes and your avatar's eyes. @@ -1610,8 +1610,8 @@ public: Q_INVOKABLE bool getCharacterControllerEnabled(); // deprecated /**jsdoc - * @comment Different behavior to the Avatar version of this method. * Gets the rotation of a joint relative to the avatar. + * @comment Different behavior to the Avatar version of this method. * @function MyAvatar.getAbsoluteJointRotationInObjectFrame * @param {number} index - The index of the joint. * @returns {Quat} The rotation of the joint relative to the avatar. @@ -1623,8 +1623,8 @@ public: virtual glm::quat getAbsoluteJointRotationInObjectFrame(int index) const override; /**jsdoc - * @comment Different behavior to the Avatar version of this method. * Gets the translation of a joint relative to the avatar. + * @comment Different behavior to the Avatar version of this method. * @function MyAvatar.getAbsoluteJointTranslationInObjectFrame * @param {number} index - The index of the joint. * @returns {Vec3} The translation of the joint relative to the avatar. From caf29dc45a83ec0bb6e262c37943934f3df3a178 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 6 Jun 2019 11:24:10 +1200 Subject: [PATCH 003/106] Doc review --- interface/src/avatar/MyAvatar.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index d78aebe0c1..b02ff0d805 100755 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -265,6 +265,8 @@ class MyAvatar : public Avatar { * @property {number} sprintSpeed - The sprint (run) speed of your avatar for the current control scheme (see * {@link MyAvatar.getControlScheme|getControlScheme}). * @property {number} analogPlusWalkSpeed - The walk speed of your avatar for the "AnalogPlus" control scheme. + *

Warning: Setting this value also sets the value of analogPlusSprintSpeed to twice + * the value.

* @property {number} analogPlusSprintSpeed - The sprint speed of your avatar for the "AnalogPlus" control scheme. * @property {MyAvatar.SitStandModelType} userRecenterModel - Controls avatar leaning and recentering behavior. * @property {number} isInSittingState - true if your avatar is sitting (avatar leaning is disabled, @@ -664,7 +666,7 @@ public: * Restores the default hand animation state machine that is driven by the state machine in the avatar-animation JSON. *

The avatar animation system includes a set of default animations along with rules for how those animations are blended * together with procedural data (such as look at vectors, hand sensors etc.). Playing your own custom animations will - * override the default animations. restoreHandAnimation() is used to restore the default hand poses + * override the default animations. restoreHandAnimation() is used to restore the default hand poses. * If you aren't currently playing an override hand animation, this function has no effect.

* @function MyAvatar.restoreHandAnimation * @param isLeft {boolean} Set to true if using the left hand From a55c723842f69c21e94feffeac7b64b486aa2be8 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Thu, 6 Jun 2019 11:03:50 -0700 Subject: [PATCH 004/106] remove spammy logging --- libraries/networking/src/NodeList.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 3a896afe9b..038d656dbb 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -673,13 +673,6 @@ void NodeList::processDomainServerList(QSharedPointer message) // refuse to process this packet if we aren't currently connected to the DS return; } -#ifdef DEBUG_EVENT_QUEUE - { - int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); - qCDebug(networking) << "DomainList received, pending count =" << _domainHandler.getCheckInPacketsSinceLastReply() - << "NodeList thread event queue size =" << nodeListQueueSize; - } -#endif // warn if ping lag is getting long if (pingLagTime > qint64(MSECS_PER_SECOND)) { From beb70988c3d80a1a596a76a0680cc98fa5cce3b8 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 7 Jun 2019 08:30:28 +1200 Subject: [PATCH 005/106] Tablet and related JSDoc --- .../qml/hifi/tablet/TabletButton.qml | 13 +- .../qml/hifi/toolbars/ToolbarButton.qml | 3 + .../ui/src/ui/TabletScriptingInterface.cpp | 41 +++ .../ui/src/ui/TabletScriptingInterface.h | 314 ++++++++++++------ 4 files changed, 272 insertions(+), 99 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletButton.qml b/interface/resources/qml/hifi/tablet/TabletButton.qml index 4d443fb97c..ec24caeef2 100644 --- a/interface/resources/qml/hifi/tablet/TabletButton.qml +++ b/interface/resources/qml/hifi/tablet/TabletButton.qml @@ -5,6 +5,9 @@ import TabletScriptingInterface 1.0 Item { id: tabletButton + // NOTE: These properties form part of the "TabletButtonProxy.ButtonProperties" type. + // Keep the type's JSDoc up to date with any changes. + property color defaultCaptionColor: "#ffffff" property color captionColor: defaultCaptionColor @@ -18,15 +21,15 @@ Item { property string activeText: tabletButton.text property string activeHoverText: tabletButton.activeText property bool isActive: false - property bool inDebugMode: false + property bool inDebugMode: false // tablet only property bool isEntered: false property double sortOrder: 100 property int stableOrder: 0 - property var tabletRoot; - property var flickable: null - property var gridView: null + property var tabletRoot; // tablet only + property var flickable: null // tablet only + property var gridView: null // tablet only - property int buttonIndex: -1 + property int buttonIndex: -1 // tablet only width: 129 height: 129 diff --git a/interface/resources/qml/hifi/toolbars/ToolbarButton.qml b/interface/resources/qml/hifi/toolbars/ToolbarButton.qml index 232973b4d3..f8fc787a2c 100644 --- a/interface/resources/qml/hifi/toolbars/ToolbarButton.qml +++ b/interface/resources/qml/hifi/toolbars/ToolbarButton.qml @@ -3,6 +3,9 @@ import QtQuick 2.5 StateImage { id: button + // NOTE: These properties form part of the "TabletButtonProxy.ButtonProperties" type. + // Keep the type's JSDoc up to date with any changes. + property color defaultCaptionColor: "#ffffff" property color captionColor: defaultCaptionColor diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index b8895b6714..a8f319286b 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -969,6 +969,46 @@ const QString OBJECT_NAME_KEY = "objectName"; const QString STABLE_ORDER_KEY = "stableOrder"; static int s_stableOrder = 1; +/**jsdoc + * Properties of a tablet button. + * + * @typedef {object} TabletButtonProxy.ButtonProperties + * + * @property {Uuid} uuid - The button ID. Read-only. + * @property {Uuid} objectName - Synonym for uuid. + * @property {number} stableOrder - The order in which the button was created: each button created gets a value incremented by + * one. + * + * @property {string} icon - The url of the default button icon displayed. (50 x 50 pixels. SVG, PNG, or other image format.) + * @property {string} hoverIcon - The url of the button icon displayed when the button is hovered and not active. + * @property {string} activeIcon - The url of the button icon displayed when the button is active. + * @property {string} activeHoverIcon - The url of the button icon displayed when the button is hovered and active. + * @property {string} text - The button caption. + * @property {string} hoverText - The button caption when the button is hovered and not active. + * @property {string} activeText - The button caption when the button is active. + * @property {string} activeHoverText - The button caption when the button is hovered and active. + * @comment {string} defaultCaptionColor="#ffffff" - Internal property. + * @property {string} captionColor="#ffffff" - The color of the button caption. + + * @property {boolean} isActive=false - true if the button is active, false if it isn't. + * @property {boolean} isEntered - true if the button is being hovered, false if it isn't. + * @property {boolean} buttonEnabled=true - true if the button is enabled, false if it is disabled. + * @property {number} sortOrder=100 - Determines the order of the buttons: buttons with lower numbers appear before buttons + * with larger numbers. + * + * @property {boolean} inDebugMode - If true and the tablet is being used, the button's isActive + * state toggles each time the button is clicked. Tablet only. + * + * @comment {object} tabletRoot - Internal tablet-only property. + * @property {object} flickable - Internal tablet-only property. + * @property {object} gridView - Internal tablet-only property. + * @property {number} buttonIndex - Internal tablet-only property. + * + * @comment {number} imageOffOut - Internal toolbar-only property. + * @comment {number} imageOffIn - Internal toolbar-only property. + * @comment {number} imageOnOut - Internal toolbar-only property. + * @comment {number} imageOnIn - Internal toolbar-only property. + */ TabletButtonProxy::TabletButtonProxy(const QVariantMap& properties) : _uuid(QUuid::createUuid()), _stableOrder(++s_stableOrder), @@ -977,6 +1017,7 @@ TabletButtonProxy::TabletButtonProxy(const QVariantMap& properties) : _properties[UUID_KEY] = _uuid; _properties[OBJECT_NAME_KEY] = _uuid.toString(); _properties[STABLE_ORDER_KEY] = _stableOrder; + // Other properties are defined in TabletButton.qml and ToolbarButton.qml. if (QThread::currentThread() != qApp->thread()) { qCWarning(uiLogging) << "Creating tablet button proxy on wrong thread"; } diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index 0b8dc95fa4..4e639d221f 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -39,6 +39,10 @@ class QmlWindowClass; class OffscreenQmlSurface; /**jsdoc + * The Tablet API provides the facilities to work with the system or other tablet. In toolbar mode (Developer > + * UI > Tablet Becomes Toolbar), the tablet's menu buttons are displayed in a toolbar and other tablet content is displayed + * in a dialog. + * * @namespace Tablet * * @hifi-interface @@ -46,6 +50,8 @@ class OffscreenQmlSurface; * @hifi-avatar */ /**jsdoc + * The tabletInterface API provides the facilities to work with the system or other tablet. + * * @namespace tabletInterface * * @hifi-interface @@ -53,12 +59,17 @@ class OffscreenQmlSurface; * @hifi-avatar * * @deprecated This API is deprecated and will be removed. Use {@link Tablet} instead. + * + * @borrows Tablet.getTablet as getTablet + * @borrows Tablet.playSound as playSound + * @borrows Tablet.tabletNotification as tabletNotification */ class TabletScriptingInterface : public QObject, public Dependency { Q_OBJECT public: /**jsdoc + * Standard tablet sounds. * * * @@ -69,7 +80,6 @@ public: * * * - * * *
ValueDescription
2Tablet open.
3Tablet hands in.
4Tablet hands out.
5Last.
* @typedef {number} Tablet.AudioEvents @@ -88,28 +98,26 @@ public: void setToolbarScriptingInterface(ToolbarScriptingInterface* toolbarScriptingInterface) { _toolbarScriptingInterface = toolbarScriptingInterface; } /**jsdoc - * Creates or returns a new TabletProxy and returns it. + * Gets an instance of a tablet. A new tablet is created if one with the specified ID doesn't already exist. * @function Tablet.getTablet - * @param {string} name - Tablet name. - * @returns {TabletProxy} Tablet instance. - */ - /**jsdoc - * Creates or returns a new TabletProxy and returns it. - * @function tabletInterface.getTablet - * @param {string} name - Tablet name. - * @returns {TabletProxy} Tablet instance. + * @param {string} name - A unique name that identifies the tablet. + * @returns {TabletProxy} The tablet instance. + * @example Display the High Fidelity home page on the system tablet. + * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + * tablet.gotoWebScreen("https://highfidelity.com/"); */ Q_INVOKABLE TabletProxy* getTablet(const QString& tabletId); void preloadSounds(); /**jsdoc + * Plays a standard tablet sound. The sound is played locally (only the user running the script hears it) without a + * position. * @function Tablet.playSound - * @param {Tablet.AudioEvents} sound - */ - /**jsdoc - * @function tabletInterface.playSound - * @param {Tablet.AudioEvents} sound + * @param {Tablet.AudioEvents} sound - The tablet sound to play. + * @example Play a tablet sound. + * var TABLET_BUTTON_CLICK = 0; + * Tablet.playSound(TABLET_BUTTON_CLICK); */ Q_INVOKABLE void playSound(TabletAudioEvents aEvent); @@ -124,15 +132,12 @@ public: QObject* getFlags(); signals: /**jsdoc - * Triggered when a tablet message or dialog is created. + * Triggered when a tablet message or dialog is displayed on the tablet that needs the user's attention. + *

Note: Only triggered if the script is running in the same script engine as the script that created + * the tablet. Be default, this means in scripts included as part of the default scripts.

* @function Tablet.tabletNotification * @returns {Signal} */ - /**jsdoc - * Triggered when a tablet message or dialog is created. - * @function tabletInterface.tabletNotification - * @returns {Signal} - */ void tabletNotification(); private: @@ -149,7 +154,9 @@ protected: }; /**jsdoc - * @typedef {object} TabletProxy#ButtonList + * Information on the buttons in the tablet main menu (toolbar in toolbar mode) for use in QML. Has properties and functions + * per http://doc.qt.io/qt-5/qabstractlistmodel.html. + * @typedef {object} TabletProxy.TabletButtonListModel */ class TabletButtonListModel : public QAbstractListModel { Q_OBJECT @@ -203,18 +210,27 @@ private: Q_DECLARE_METATYPE(TabletButtonsProxyModel*); /**jsdoc + * An instance of a tablet. In toolbar mode (Developer > + * UI > Tablet Becomes Toolbar), the tablet's menu buttons are displayed in a toolbar and other tablet content is displayed + * in a dialog. + * + *

Create a new tablet or retrieve an existing tablet using {@link Tablet.getTablet}.

+ * * @class TabletProxy - * + * * @hifi-interface * @hifi-client-entity * @hifi-avatar * - * @property {string} name - Name of this tablet. Read-only. - * @property {boolean} toolbarMode - Used to transition this tablet into and out of toolbar mode. - * When tablet is in toolbar mode, all its buttons will appear in a floating toolbar. - * @property {boolean} landscape - * @property {boolean} tabletShown Read-only. - * @property {TabletProxy#ButtonList} buttons Read-only. + * @property {string} name - A unique name that identifies the tablet. Read-only. + * @property {boolean} toolbarMode - true if the tablet is in toolbar mode, false if it isn't. + * @property {boolean} landscape - true if the tablet is displayed in landscape mode, false if it is + * displayed in portrait mode. + *

Note: This property isn't used in toolbar mode.

+ * @property {boolean} tabletShown - true if the tablet is currently displayed, false if it isn't. + *

Note: This property isn't used in toolbar mode.

+ * @property {TabletProxy.TabletButtonListModel} buttons - Information on the buttons in the tablet main menu (or toolbar in + * toolbar mode) for use in QML. Read-only. */ class TabletProxy : public QObject { Q_OBJECT @@ -235,140 +251,190 @@ public: void unfocus(); /**jsdoc + * Displays the tablet menu. The tablet is opened if it isn't already open. * @function TabletProxy#gotoMenuScreen - * @param {string} [submenu=""] + * @param {string} [submenu=""] - The name of a submenu to display, if any. + * @example Go to the "View" menu. + * tablet.gotoMenuScreen("View"); */ Q_INVOKABLE void gotoMenuScreen(const QString& submenu = ""); /**jsdoc * @function TabletProxy#initialScreen - * @param {string} url + * @param {string} url - URL. + * @deprecated This function is deprecated and will be removed. */ Q_INVOKABLE void initialScreen(const QVariant& url); /**jsdoc - * Transition to the home screen. + * Displays the tablet home screen, if the tablet is open. * @function TabletProxy#gotoHomeScreen */ Q_INVOKABLE void gotoHomeScreen(); /**jsdoc - * Show the specified Web url on the tablet. + * Opens a web page or app on the tablet. * @function TabletProxy#gotoWebScreen - * @param {string} url - URL of web page. - * @param {string} [injectedJavaScriptUrl=""] - URL to an additional JS script to inject into the web page. - * @param {boolean} [loadOtherBase=false] + * @param {string} url - The URL of the web page or app. + * @param {string} [injectedJavaScriptUrl=""] - The URL of JavaScript to inject into the web page. + * @param {boolean} [loadOtherBase=false] - If true, the web page or app is displayed in a frame with "back" + * and "close" buttons. */ Q_INVOKABLE void gotoWebScreen(const QString& url); Q_INVOKABLE void gotoWebScreen(const QString& url, const QString& injectedJavaScriptUrl, bool loadOtherBase = false); /**jsdoc + * Opens a QML app or dialog on the tablet. * @function TabletProxy#loadQMLSource - * @param {string} path - * @param {boolean} [resizable=false] + * @param {string} path - The path of the QML app or dialog. + * @param {boolean} [resizable=false] - true to make the dialog resizable in toolbar mode, false + * to have it not resizable. */ Q_INVOKABLE void loadQMLSource(const QVariant& path, bool resizable = false); // FIXME: This currently relies on a script initializing the tablet (hence the bool denoting success); // it should be initialized internally so it cannot fail /**jsdoc + * Displays a QML dialog over the top of the current dialog, without closing the current dialog. Use + * {@link TabletProxy#popFromStack|popFromStack} to close the dialog. + *

If the current dialog or its ancestors contain a QML StackView with objectName: "stack" and + * function pushSource(path), that functions is called; otherwise, + * {@link TabletProxy#loadQMLSource|loadQMLSource} is called. The Create app provides an example of using a QML + * StackView.

* @function TabletProxy#pushOntoStack - * @param {string} path - * @returns {boolean} + * @param {string} path - The path to the dialog's QML. + * @returns {boolean} true if the dialog was successfully opened, false if it wasn't. */ + // edit.js provides an example of using this outside of main menu. Q_INVOKABLE bool pushOntoStack(const QVariant& path); /**jsdoc + * Closes a QML dialog that was displayed using {@link Tablet#pushOntoStack|pushOntoStack} with a dialog implementing a QML + * StackView; otherwise, no action is taken. + *

If using a QML StackView, its popSource() function is called.

* @function TabletProxy#popFromStack */ Q_INVOKABLE void popFromStack(); /**jsdoc + * Opens a QML app or dialog in addition to any current app. In tablet mode, the app or dialog is displayed over the top of + * the current app; in toolbar mode, the app or dialog is opened in a new window. If in tablet mode, the app can be closed + * using {@link TabletProxy#returnToPreviousApp}. * @function TabletProxy#loadQMLOnTop - * @param {string} path + * @param {string} path - The path to the app's QML. */ Q_INVOKABLE void loadQMLOnTop(const QVariant& path); /**jsdoc + * Opens a web app or page in addition to any current app. In tablet mode, the app or page is displayed over the top of the + * current app; in toolbar mode, the app is opened in a new window. If in tablet mode, the app or page can be closed using + * {@link TabletProxy#returnToPreviousApp}. * @function TabletProxy#loadWebScreenOnTop - * @param {string} path - * @param {string} [injectedJavaScriptURL=""] + * @param {string} path - The URL of the web page or HTML app. + * @param {string} [injectedJavaScriptURL=""] - The URL of JavaScript to inject into the web page. */ Q_INVOKABLE void loadWebScreenOnTop(const QVariant& url); Q_INVOKABLE void loadWebScreenOnTop(const QVariant& url, const QString& injectedJavaScriptUrl); /**jsdoc + * Closes the current app and returns to the previous app, if in tablet mode and the current app was loaded using + * {@link TabletProxy#loadQMLOnTop|loadQMLOnTop} or {@link TabletProxy#loadWebScreenOnTop|loadWebScreenOnTop}. * @function TabletProxy#returnToPreviousApp */ Q_INVOKABLE void returnToPreviousApp(); /**jsdoc - * Check if the tablet has a message dialog open. + * Checks if the tablet has a modal, non-modal, or message dialog open. * @function TabletProxy#isMessageDialogOpen - * @returns {boolean} + * @returns {boolean} true if a modal, non-modal, or message dialog is open, false if there isn't. */ Q_INVOKABLE bool isMessageDialogOpen(); /**jsdoc - * Close any open dialogs. - * @function TabletProxy#closeDialog - */ + * Closes any open modal, non-modal, or message dialog, opened by {@link Window.prompt}, {@link Window.promptAsync}, + * {@link Window.openMessageBox}, or similar. + * @function TabletProxy#closeDialog + */ Q_INVOKABLE void closeDialog(); /**jsdoc - * Creates a new button, adds it to this and returns it. + * Adds a new button to the tablet menu. * @function TabletProxy#addButton - * @param {object} properties - Button properties. - * @returns {TabletButtonProxy} + * @param {TabletButtonProxy.ButtonProperties} properties - Button properties. + * @returns {TabletButtonProxy} The button added. + * @example Add a menu button. + * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + * var button = tablet.addButton({ text: "TEST" }); + * + * button.clicked.connect(function () { + * print("TEST button clicked"); + * }); + * + * Script.scriptEnding.connect(function () { + * tablet.removeButton(button); + * }); */ //FIXME: UI_TABLET_HACK: enumerate the button properties when we figure out what they should be! Q_INVOKABLE TabletButtonProxy* addButton(const QVariant& properties); /**jsdoc - * Removes a button from the tablet. + * Removes a button from the tablet menu. * @function TabletProxy#removeButton - * @param {TabletButtonProxy} button - The button to be removed + * @param {TabletButtonProxy} button - The button to remove. */ Q_INVOKABLE void removeButton(TabletButtonProxy* tabletButtonProxy); /**jsdoc - * Used to send an event to the HTML/JavaScript embedded in the tablet. + * Sends a message to the current web page. To receive the message, the web page's script must connect to the + * EventBridge that is automatically provided to the script: + *
EventBridge.scriptEventReceived.connect(function(message) {
+     *     ...
+     * });
* @function TabletProxy#emitScriptEvent - * @param {object|string} message + * @param {string|object} message - The message to send to the web page. */ Q_INVOKABLE void emitScriptEvent(const QVariant& msg); /**jsdoc - * Used to send an event to the QML embedded in the tablet. + * Sends a message to the current QML page. To receive the message, the QML page must implement a function: + *
function fromScript(message) {
+     *   ...
+     * }
* @function TabletProxy#sendToQml - * @param {object|string} message + * @param {string|object} message - The message to send to the QML page. */ Q_INVOKABLE void sendToQml(const QVariant& msg); /**jsdoc - * Check if the tablet is on the home screen. + * Checks if the tablet is on the home screen. * @function TabletProxy#onHomeScreen - * @returns {boolean} + * @returns {boolean} true if the tablet is on the home screen, false if it isn't. */ Q_INVOKABLE bool onHomeScreen(); /**jsdoc - * Set tablet into or out of landscape mode. + * Sets whether the tablet is displayed in landscape or portrait mode. + *

Note: The setting isn't used in toolbar mode.

* @function TabletProxy#setLandscape - * @param {boolean} landscape - true for landscape, false
for portrait. + * @param {boolean} landscape - true to display the tablet in landscape mode, false to display it + * in portrait mode. */ Q_INVOKABLE void setLandscape(bool landscape) { _landscape = landscape; } /**jsdoc + * Gets whether the tablet is displayed in landscape or portrait mode. + *

Note: The setting isn't used in toolbar mode.

* @function TabletProxy#getLandscape - * @returns {boolean} + * @returns {boolean} true if the tablet is displayed in landscape mode, false if it is displayed + * in portrait mode. */ Q_INVOKABLE bool getLandscape() { return _landscape; } /**jsdoc + * Checks if a path is the current app or dialog displayed. * @function TabletProxy#isPathLoaded - * @param {string} path - * @returns {boolean} + * @param {string} path - The path to test. + * @returns {boolean} true if path is the current app or dialog, false if it isn't. */ Q_INVOKABLE bool isPathLoaded(const QVariant& path); @@ -384,44 +450,74 @@ public: signals: /**jsdoc - * Signaled when this tablet receives an event from the html/js embedded in the tablet. + * Triggered when a message from the current HTML web page displayed on the tablet is received. The HTML web page can send + * a message by calling: + *
EventBridge.emitWebEvent(message);
* @function TabletProxy#webEventReceived - * @param {object|string} message + * @param {string|object} message - The message received. * @returns {Signal} */ void webEventReceived(QVariant msg); /**jsdoc - * Signaled when this tablet receives an event from the qml embedded in the tablet. + * Triggered when a message from the current QML page displayed on the tablet is received. The QML page can send a message + * (string or object) by calling:
sendToScript(message);
* @function TabletProxy#fromQml - * @param {object|string} message + * @param {string|object} message - The message received. * @returns {Signal} */ void fromQml(QVariant msg); /**jsdoc - * Signaled when this tablet screen changes. + * Triggered when the tablet's screen changes. * @function TabletProxy#screenChanged - * @param type {string} - "Home", "Web", "Menu", "QML", "Closed". - * @param url {string} - Only valid for Web and QML. + * @param type {string} - The type of the new screen or change: "Home", "Menu", + * "QML", "Web", "Closed", or "Unknown". + * @param url {string} - The url of the page displayed. Only valid for Web and QML. + * @returns {Signal} */ void screenChanged(QVariant type, QVariant url); /**jsdoc - * Signaled when the tablet becomes visible or becomes invisible. - * @function TabletProxy#isTabletShownChanged + * Triggered when the tablet is opened or closed. + *

Note: Doesn't apply in toolbar mode.

+ * @function TabletProxy#tabletShownChanged * @returns {Signal} */ void tabletShownChanged(); /**jsdoc + * Triggered when the tablet's toolbar mode changes. * @function TabletProxy#toolbarModeChanged + * @returns {Signal} + * @example Report when the system tablet's toolbar mode changes. + * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + * tablet.toolbarModeChanged.connect(function () { + * print("Tablet toolbar mode changed to: " + tablet.toolbarMode); + * }); + * // Use Developer > UI > Tablet Becomes Toolbar to change the toolbar mode. */ void toolbarModeChanged(); protected slots: + + /**jsdoc + * @function TabletProxy#desktopWindowClosed + * @deprecated This function is deprecated and will be removed. + */ void desktopWindowClosed(); + + /**jsdoc + * @function TabletProxy#emitWebEvent + * @param {object|string} message - Message + * @deprecated This function is deprecated and will be removed. + */ void emitWebEvent(const QVariant& msg); + + /**jsdoc + * @function TabletProxy#onTabletShown + * @deprecated This function is deprecated and will be removed. + */ void onTabletShown(); protected: @@ -452,14 +548,20 @@ private: Q_DECLARE_METATYPE(TabletProxy*); /**jsdoc + * A tablet button. In toolbar mode (Developer > UI > Tablet Becomes Toolbar), the tablet button is displayed on the + * toolbar. + * + *

Create a new button using {@link TabletProxy#addButton}.

+ * * @class TabletButtonProxy * * @hifi-interface * @hifi-client-entity * @hifi-avatar * - * @property {Uuid} uuid - Uniquely identifies this button. Read-only. - * @property {TabletButtonProxy.ButtonProperties} properties + * @property {Uuid} uuid - The ID of the button. Read-only. + * @property {TabletButtonProxy.ButtonProperties} properties - The current values of the button's properties. Only properties + * that have been set during button creation or subsequently edited are returned. Read-only. */ class TabletButtonProxy : public QObject { Q_OBJECT @@ -472,28 +574,66 @@ public: QUuid getUuid() const { return _uuid; } /**jsdoc - * Returns the current value of this button's properties. + * Gets the current values of the button's properties. Only properties that have been set during button creation or + * subsequently edited are returned. * @function TabletButtonProxy#getProperties - * @returns {TabletButtonProxy.ButtonProperties} + * @returns {TabletButtonProxy.ButtonProperties} The button properties. + * @example Report a test button's properties. + * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + * var button = tablet.addButton({ text: "TEST" }); + * + * var properties = button.getProperties(); + * print("TEST button properties: " + JSON.stringify(properties)); + * + * Script.scriptEnding.connect(function () { + * tablet.removeButton(button); + * }); */ Q_INVOKABLE QVariantMap getProperties(); /**jsdoc - * Replace the values of some of this button's properties. + * Changes the values of the button's properties. * @function TabletButtonProxy#editProperties - * @param {TabletButtonProxy.ButtonProperties} properties - Set of properties to change. + * @param {TabletButtonProxy.ButtonProperties} properties - The properties to change. + * @example Set a button's hover text after a delay. + * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + * var button = tablet.addButton({ text: "TEST" }); + * + * button.propertiesChanged.connect(function () { + * print("TEST button properties changed"); + * }); + * + * Script.setTimeout(function () { + * button.editProperties({ text: "CHANGED" }); + * }, 2000); + * + * Script.scriptEnding.connect(function () { + * tablet.removeButton(button); + * }); */ Q_INVOKABLE void editProperties(const QVariantMap& properties); signals: /**jsdoc - * Triggered when this button has been clicked on by the user. + * Triggered when the button is clicked. * @function TabletButtonProxy#clicked * @returns {Signal} + * @example Report a menu button click. + * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + * var button = tablet.addButton({ text: "TEST" }); + * + * button.clicked.connect(function () { + * print("TEST button clicked"); + * }); + * + * Script.scriptEnding.connect(function () { + * tablet.removeButton(button); + * }); */ void clicked(); /**jsdoc + * Triggered when a button's properties are changed. * @function TabletButtonProxy#propertiesChanged * @returns {Signal} */ @@ -503,20 +643,6 @@ protected: QUuid _uuid; int _stableOrder; - /**jsdoc - * @typedef {object} TabletButtonProxy.ButtonProperties - * @property {string} icon - URL to button icon. (50 x 50) - * @property {string} hoverIcon - URL to button icon, displayed during mouse hover. (50 x 50) - * @property {string} activeHoverIcon - URL to button icon used when button is active, and during mouse hover. (50 x 50) - * @property {string} activeIcon - URL to button icon used when button is active. (50 x 50) - * @property {string} text - Button caption. - * @property {string} hoverText - Button caption when button is not-active but during mouse hover. - * @property {string} activeText - Button caption when button is active. - * @property {string} activeHoverText - Button caption when button is active and during mouse hover. - * @property {boolean} isActive - true when button is active. - * @property {number} sortOrder - Determines sort order on tablet. lower numbers will appear before larger numbers. - * Default is 100. - */ // FIXME: There are additional properties. QVariantMap _properties; }; From d0bd4a7d479a529b3bdcda9fe961dad6c9cd0079 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Thu, 6 Jun 2019 14:01:34 -0700 Subject: [PATCH 006/106] try rebinding on error writing/reading from bound socket --- libraries/networking/src/udt/Socket.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 2867e83a1c..c73ac8109f 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -500,10 +500,18 @@ std::vector Socket::getConnectionSockAddrs() { void Socket::handleSocketError(QAbstractSocket::SocketError socketError) { qCDebug(networking) << "udt::Socket (" << _udpSocket.state() << ") error - " << socketError << "(" << _udpSocket.errorString() << ")"; +#ifdef WIN32 + int wsaError = WSAGetLastError(); + qCDebug(networking) << "windows socket error " << wsaError; +#endif #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; #endif // DEBUG_EVENT_QUEUE + + if (_udpSocket.state() == QAbstractSocket::BoundState) { + rebind(); + } } void Socket::handleStateChanged(QAbstractSocket::SocketState socketState) { From d406e52d719debcf66002fffec4519232f8fd8bd Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 6 Jun 2019 16:37:49 -0700 Subject: [PATCH 007/106] Messing around --- interface/src/PerformanceManager.cpp | 3 +++ scripts/developer/utilities/render/lodWindow.js | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 scripts/developer/utilities/render/lodWindow.js diff --git a/interface/src/PerformanceManager.cpp b/interface/src/PerformanceManager.cpp index 874d92521b..910f42ac6e 100644 --- a/interface/src/PerformanceManager.cpp +++ b/interface/src/PerformanceManager.cpp @@ -13,6 +13,7 @@ #include #include "scripting/RenderScriptingInterface.h" +#include "LODManager.h" PerformanceManager::PerformanceManager() { @@ -68,6 +69,8 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP RenderScriptingInterface::getInstance()->setShadowsEnabled(true); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME); + // DependencyManager::get()->setWorldDetailQuality() + break; case PerformancePreset::MID: RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); diff --git a/scripts/developer/utilities/render/lodWindow.js b/scripts/developer/utilities/render/lodWindow.js new file mode 100644 index 0000000000..2f6b403a48 --- /dev/null +++ b/scripts/developer/utilities/render/lodWindow.js @@ -0,0 +1,5 @@ +var window = Desktop.createWindow(Script.resolvePath('./lod.qml'), { + title: "LOD Setup", + presentationMode: Desktop.PresentationMode.NATIVE, + size: {x: 350, y: 500} +}); From 15d3c7231eabd8b50000499305e05abda2f8e923 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 7 Jun 2019 12:21:32 +1200 Subject: [PATCH 008/106] Fix typos --- libraries/ui/src/ui/TabletScriptingInterface.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index 4e639d221f..98a7f054ac 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -134,7 +134,7 @@ signals: /**jsdoc * Triggered when a tablet message or dialog is displayed on the tablet that needs the user's attention. *

Note: Only triggered if the script is running in the same script engine as the script that created - * the tablet. Be default, this means in scripts included as part of the default scripts.

+ * the tablet. By default, this means in scripts included as part of the default scripts.

* @function Tablet.tabletNotification * @returns {Signal} */ @@ -287,7 +287,7 @@ public: * Opens a QML app or dialog on the tablet. * @function TabletProxy#loadQMLSource * @param {string} path - The path of the QML app or dialog. - * @param {boolean} [resizable=false] - true to make the dialog resizable in toolbar mode, false + * @param {boolean} [resizable=false] - true to make the dialog resizable in toolbar mode, false * to have it not resizable. */ Q_INVOKABLE void loadQMLSource(const QVariant& path, bool resizable = false); From 76836ebe9fab7786e1af05fee9906e0a0967bccf Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 7 Jun 2019 09:32:26 -0700 Subject: [PATCH 009/106] Exposing a lot more details about displays on mac --- .../src/platform/backend/MACOSPlatform.cpp | 111 +++++++++++++++++- .../src/platform/backend/MACOSPlatform.h | 1 + .../src/platform/backend/PlatformInstance.cpp | 1 + .../src/platform/backend/PlatformInstance.h | 1 + 4 files changed, 113 insertions(+), 1 deletion(-) diff --git a/libraries/platform/src/platform/backend/MACOSPlatform.cpp b/libraries/platform/src/platform/backend/MACOSPlatform.cpp index 2607c47d5b..c7ab7c77a0 100644 --- a/libraries/platform/src/platform/backend/MACOSPlatform.cpp +++ b/libraries/platform/src/platform/backend/MACOSPlatform.cpp @@ -18,6 +18,9 @@ #include #include #include + +#include +#include #endif using namespace platform; @@ -33,18 +36,124 @@ void MACOSInstance::enumerateCpu() { } void MACOSInstance::enumerateGpu() { +#ifdef Q_OS_MAC +/* uint32_t cglDisplayMask = -1; // Iterate over all of them. + CGLRendererInfoObj rendererInfo; + GLint rendererInfoCount; + CGLError err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &rendererInfoCount); + GLint j, numRenderers = 0, deviceVRAM, bestVRAM = 0; + err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &numRenderers); + if (0 == err) { + // Iterate over all of them and use the figure for the one with the most VRAM, + // on the assumption that this is the one that will actually be used. + CGLDescribeRenderer(rendererInfo, 0, kCGLRPRendererCount, &numRenderers); + for (j = 0; j < numRenderers; j++) { + CGLDescribeRenderer(rendererInfo, j, kCGLRPVideoMemoryMegabytes, &deviceVRAM); + if (deviceVRAM > bestVRAM) { + bestVRAM = deviceVRAM; + isValid = true; + } + } + } + + //get gpu name + FILE* stream = popen("system_profiler SPDisplaysDataType | grep Chipset", "r"); + + std::ostringstream hostStream; + while (!feof(stream) && !ferror(stream)) { + char buf[128]; + int bytesRead = fread(buf, 1, 128, stream); + hostStream.write(buf, bytesRead); + } + + QString result = QString::fromStdString(hostStream.str()); + QStringList parts = result.split('\n'); + std::string name; + + for (int i = 0; i < parts.size(); ++i) { + if (parts[i].toLower().contains("radeon") || parts[i].toLower().contains("nvidia")) { + _name=parts[i]; + } + } + + _dedicatedMemoryMB = bestVRAM; + CGLDestroyRendererInfo(rendererInfo); +*/ + + // auto displayID = CGMainDisplayID(); + // auto displayGLMask = CGDisplayIDToOpenGLDisplayMask(displayID); + // auto metalDevice = CGDirectDisplayCopyCurrentMetalDevice(displayID); + GPUIdent* ident = GPUIdent::getInstance(); json gpu = {}; + gpu[keys::gpu::vendor] = ident->getName().toUtf8().constData(); gpu[keys::gpu::model] = ident->getName().toUtf8().constData(); gpu[keys::gpu::videoMemory] = ident->getMemory(); gpu[keys::gpu::driver] = ident->getDriver().toUtf8().constData(); _gpu.push_back(gpu); - _display = ident->getOutput(); + +#endif } +void MACOSInstance::enumerateDisplays() { +#ifdef Q_OS_MAC + auto displayID = CGMainDisplayID(); + auto displaySize = CGDisplayScreenSize(displayID); + auto displaySizeWidthInches = displaySize.width * 0.0393701; + auto displaySizeHeightInches = displaySize.height * 0.0393701; + auto displaySizeDiagonalInches = sqrt(displaySizeWidthInches * displaySizeWidthInches + displaySizeHeightInches * displaySizeHeightInches); + + auto displayPixelsWidth= CGDisplayPixelsWide(displayID); + auto displayPixelsHeight= CGDisplayPixelsHigh(displayID); + auto displayBounds = CGDisplayBounds(displayID); + auto displayMaster =CGDisplayIsMain(displayID); + + auto displayUnit =CGDisplayUnitNumber(displayID); + auto displayModel =CGDisplayModelNumber(displayID); + auto displayVendor = CGDisplayVendorNumber(displayID); + auto displaySerial = CGDisplaySerialNumber(displayID); + + auto displayMode = CGDisplayCopyDisplayMode(displayID); + auto displayModeWidth = CGDisplayModeGetPixelWidth(displayMode); + auto displayModeHeight = CGDisplayModeGetPixelHeight(displayMode); + auto displayRefreshrate = CGDisplayModeGetRefreshRate(displayMode); + + CGDisplayModeRelease(displayMode); + + json display = {}; + + // display["physicalWidth"] = displaySizeWidthInches; + // display["physicalHeight"] = displaySizeHeightInches; + display["physicalDiagonal"] = displaySizeDiagonalInches; + + // display["ppiH"] = displayModeWidth / displaySizeWidthInches; + // display["ppiV"] = displayModeHeight / displaySizeHeightInches; + display["ppi"] = sqrt(displayModeHeight * displayModeHeight + displayModeWidth * displayModeWidth) / displaySizeDiagonalInches; + + display["coordLeft"] = displayBounds.origin.x; + display["coordRight"] = displayBounds.origin.x + displayBounds.size.width; + display["coordTop"] = displayBounds.origin.y; + display["coordBottom"] = displayBounds.origin.y + displayBounds.size.height; + + display["isMaster"] = displayMaster; + + display["unit"] = displayUnit; + display["vendor"] = displayVendor; + display["model"] = displayModel; + display["serial"] = displaySerial; + + display["refreshrate"] =displayRefreshrate; + display["modeWidth"] = displayModeWidth; + display["modeHeight"] = displayModeHeight; + + + _display.push_back(display); +#endif +} + void MACOSInstance::enumerateMemory() { json ram = {}; diff --git a/libraries/platform/src/platform/backend/MACOSPlatform.h b/libraries/platform/src/platform/backend/MACOSPlatform.h index 1c66f5d742..4a257d8be5 100644 --- a/libraries/platform/src/platform/backend/MACOSPlatform.h +++ b/libraries/platform/src/platform/backend/MACOSPlatform.h @@ -18,6 +18,7 @@ namespace platform { void enumerateCpu() override; void enumerateMemory() override; void enumerateGpu() override; + void enumerateDisplays() override; void enumerateComputer () override; }; diff --git a/libraries/platform/src/platform/backend/PlatformInstance.cpp b/libraries/platform/src/platform/backend/PlatformInstance.cpp index 164fdb924f..3dd3e5f592 100644 --- a/libraries/platform/src/platform/backend/PlatformInstance.cpp +++ b/libraries/platform/src/platform/backend/PlatformInstance.cpp @@ -18,6 +18,7 @@ bool Instance::enumeratePlatform() { enumerateComputer(); enumerateCpu(); enumerateGpu(); + enumerateDisplays(); enumerateMemory(); // And profile the platform and put the tier in "computer" diff --git a/libraries/platform/src/platform/backend/PlatformInstance.h b/libraries/platform/src/platform/backend/PlatformInstance.h index 52fa9ec3f2..95eb2ef25e 100644 --- a/libraries/platform/src/platform/backend/PlatformInstance.h +++ b/libraries/platform/src/platform/backend/PlatformInstance.h @@ -37,6 +37,7 @@ public: void virtual enumerateCpu()=0; void virtual enumerateMemory()=0; void virtual enumerateGpu()=0; + void virtual enumerateDisplays() {} void virtual enumerateComputer()=0; virtual ~Instance(); From 00baaffb97ebd66fb5179cca8da8c8a7d50c7a09 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Fri, 7 Jun 2019 10:56:44 -0700 Subject: [PATCH 010/106] allow launcher to work from mounted dmg --- launchers/darwin/src/DownloadInterface.m | 2 ++ launchers/darwin/src/Launcher.h | 1 + launchers/darwin/src/Launcher.m | 11 +++++++---- launchers/darwin/src/main.mm | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/launchers/darwin/src/DownloadInterface.m b/launchers/darwin/src/DownloadInterface.m index b957197567..ed7aaf51c4 100644 --- a/launchers/darwin/src/DownloadInterface.m +++ b/launchers/darwin/src/DownloadInterface.m @@ -46,6 +46,8 @@ NSString* downloadFileName = [sharedLauncher getDownloadFilename]; NSLog(@"extract interface zip"); + NSLog(@"%@", appPath); + NSLog(@"%@", [appPath stringByAppendingString:downloadFileName]); [sharedLauncher extractZipFileAtDestination:appPath :[appPath stringByAppendingString:downloadFileName]]; NSLog(@"finished extracting interface zip"); diff --git a/launchers/darwin/src/Launcher.h b/launchers/darwin/src/Launcher.h index 5838e25a82..69484a378d 100644 --- a/launchers/darwin/src/Launcher.h +++ b/launchers/darwin/src/Launcher.h @@ -57,6 +57,7 @@ typedef enum LoginErrorTypes - (BOOL) loginShouldSetErrorState; - (void) displayErrorPage; - (void) showLoginScreen; +- (NSString*) getLauncherPath; - (ProcessState) currentProccessState; - (void) setCurrentProcessState:(ProcessState) aProcessState; - (void) setLoginErrorState:(LoginError) aLoginError; diff --git a/launchers/darwin/src/Launcher.m b/launchers/darwin/src/Launcher.m index 07fc8878da..3ab4379e7a 100644 --- a/launchers/darwin/src/Launcher.m +++ b/launchers/darwin/src/Launcher.m @@ -73,6 +73,11 @@ static BOOL const DELETE_ZIP_FILES = TRUE; return filePath; } +- (NSString*) getLauncherPath +{ + return [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Contents/MacOS/"]; +} + - (void) extractZipFileAtDestination:(NSString *)destination :(NSString*)file { NSTask* task = [[NSTask alloc] init]; @@ -174,7 +179,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; - (NSString*) getAppPath { - return [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Contents/MacOS/"]; + return [self getDownloadPathForContentAndScripts]; } - (BOOL) loginShouldSetErrorState @@ -317,7 +322,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; - (void) launchInterface { - NSString* launcherPath = [[self getAppPath] stringByAppendingString:@"HQ Launcher"]; + NSString* launcherPath = [[self getLauncherPath] stringByAppendingString:@"HQ Launcher"]; [[Settings sharedSettings] setLauncherPath:launcherPath]; [[Settings sharedSettings] save]; @@ -351,8 +356,6 @@ static BOOL const DELETE_ZIP_FILES = TRUE; } [workspace launchApplicationAtURL:url options:NSWorkspaceLaunchNewInstance configuration:[NSDictionary dictionaryWithObject:arguments forKey:NSWorkspaceLaunchConfigurationArguments] error:&error]; - //NSLog(@"arguments %@", [NSDictionary dictionaryWithObject:arguments forKey:NSWorkspaceLaunchConfigurationArguments]); - [NSApp terminate:self]; } diff --git a/launchers/darwin/src/main.mm b/launchers/darwin/src/main.mm index cdcd66f963..41e2986af7 100644 --- a/launchers/darwin/src/main.mm +++ b/launchers/darwin/src/main.mm @@ -17,7 +17,7 @@ void redirectLogToDocuments() int main(int argc, const char* argv[]) { //NSApp.appearance = [NSAppearance appearanceNamed: NSAppearanceNameAqua]; - redirectLogToDocuments(); + //redirectLogToDocuments(); NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.highfidelity.launcher"]; if ([apps count] > 1) { NSLog(@"launcher is already running"); From 5499da0b7b5bad88b8075ef348916eb0d2d7d685 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Fri, 7 Jun 2019 10:59:17 -0700 Subject: [PATCH 011/106] removing debug statments --- launchers/darwin/src/DownloadInterface.m | 2 -- launchers/darwin/src/main.mm | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/launchers/darwin/src/DownloadInterface.m b/launchers/darwin/src/DownloadInterface.m index ed7aaf51c4..b957197567 100644 --- a/launchers/darwin/src/DownloadInterface.m +++ b/launchers/darwin/src/DownloadInterface.m @@ -46,8 +46,6 @@ NSString* downloadFileName = [sharedLauncher getDownloadFilename]; NSLog(@"extract interface zip"); - NSLog(@"%@", appPath); - NSLog(@"%@", [appPath stringByAppendingString:downloadFileName]); [sharedLauncher extractZipFileAtDestination:appPath :[appPath stringByAppendingString:downloadFileName]]; NSLog(@"finished extracting interface zip"); diff --git a/launchers/darwin/src/main.mm b/launchers/darwin/src/main.mm index 41e2986af7..cdcd66f963 100644 --- a/launchers/darwin/src/main.mm +++ b/launchers/darwin/src/main.mm @@ -17,7 +17,7 @@ void redirectLogToDocuments() int main(int argc, const char* argv[]) { //NSApp.appearance = [NSAppearance appearanceNamed: NSAppearanceNameAqua]; - //redirectLogToDocuments(); + redirectLogToDocuments(); NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.highfidelity.launcher"]; if ([apps count] > 1) { NSLog(@"launcher is already running"); From 6643633400e2049c1699f84272985872fe8c4e14 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Fri, 7 Jun 2019 13:38:50 -0700 Subject: [PATCH 012/106] Move rebind on network error to rebind on silent domain checkin --- libraries/networking/src/NodeList.cpp | 6 ++++++ libraries/networking/src/udt/Socket.cpp | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 038d656dbb..0e6b5503d7 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -438,7 +438,13 @@ void NodeList::sendDomainServerCheckIn() { // Send duplicate check-ins in the exponentially increasing sequence 1, 1, 2, 4, ... static const int MAX_CHECKINS_TOGETHER = 20; + static const int REBIND_CHECKIN_COUNT = 2; int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); + + if (outstandingCheckins > REBIND_CHECKIN_COUNT) { + _nodeSocket.rebind(); + } + int checkinCount = outstandingCheckins > 1 ? std::pow(2, outstandingCheckins - 2) : 1; checkinCount = std::min(checkinCount, MAX_CHECKINS_TOGETHER); for (int i = 1; i < checkinCount; ++i) { diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index c73ac8109f..0abe1eb172 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -508,10 +508,6 @@ void Socket::handleSocketError(QAbstractSocket::SocketError socketError) { int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; #endif // DEBUG_EVENT_QUEUE - - if (_udpSocket.state() == QAbstractSocket::BoundState) { - rebind(); - } } void Socket::handleStateChanged(QAbstractSocket::SocketState socketState) { From ec1118db1fd26407c055d8e3956ae17303353a03 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Fri, 7 Jun 2019 15:23:06 -0700 Subject: [PATCH 013/106] Attempting to write to a socket in unbound state was causing qt to crash after a number of tries. This fix does an initial check to prevent that case. --- libraries/networking/src/udt/Socket.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 0abe1eb172..406c2ff213 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -223,6 +223,13 @@ qint64 Socket::writeDatagram(const char* data, qint64 size, const HifiSockAddr& qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& sockAddr) { + // don't attempt to write the datagram if we're unbound. Just drop it. + // _udpSocket.writeDatagram will return an error anyway, but there are + // potential crashes in Qt when that happens. + if (_udpSocket.state() != QAbstractSocket::BoundState) { + qCDebug(networking) << "Attempt to writeDatagram when in unbound state"; + return -1; + } qint64 bytesWritten = _udpSocket.writeDatagram(datagram, sockAddr.getAddress(), sockAddr.getPort()); if (bytesWritten < 0) { From 22d602a33406477d3c312f9ce8fe3cc725b32e3e Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 7 Jun 2019 14:39:53 -0700 Subject: [PATCH 014/106] CREATE app will now recognize newer-style baked models and skyboxes as baked in entity-list --- scripts/system/libraries/entityList.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js index d19da2b342..6498c92f17 100644 --- a/scripts/system/libraries/entityList.js +++ b/scripts/system/libraries/entityList.js @@ -10,7 +10,7 @@ /* global EntityListTool, Tablet, selectionManager, Entities, Camera, MyAvatar, Vec3, Menu, Messages, cameraManager, MENU_EASE_ON_FOCUS, deleteSelectedEntities, toggleSelectedEntitiesLocked, toggleSelectedEntitiesVisible, - keyUpEventFromUIWindow */ + keyUpEventFromUIWindow, Script, SelectionDisplay, SelectionManager, Clipboard */ var PROFILING_ENABLED = false; var profileIndent = ''; @@ -148,6 +148,20 @@ EntityListTool = function(shouldUseEditTabletApp) { return value !== undefined ? value : ""; } + function entityIsBaked(properties) { + if (properties.type === "Model") { + var lowerModelURL = properties.modelURL.toLowerCase(); + return lowerModelURL.endsWith(".baked.fbx") || lowerModelURL.endsWith(".baked.fst"); + } else if (properties.type === "Zone") { + var lowerSkyboxURL = properties.skybox ? properties.skybox.url.toLowerCase() : ""; + var lowerAmbientURL = properties.ambientLight ? properties.ambientLight.ambientURL.toLowerCase() : ""; + return (lowerSkyboxURL === "" || lowerSkyboxURL.endsWith(".texmeta.json")) && + (lowerAmbientURL === "" || lowerAmbientURL.endsWith(".texmeta.json")); + } else { + return false; + } + } + that.sendUpdate = function() { PROFILE('Script-sendUpdate', function() { var entities = []; @@ -164,7 +178,8 @@ EntityListTool = function(shouldUseEditTabletApp) { var cameraPosition = Camera.position; PROFILE("getMultipleProperties", function () { var multipleProperties = Entities.getMultipleEntityProperties(ids, ['name', 'type', 'locked', - 'visible', 'renderInfo', 'modelURL', 'materialURL', 'imageURL', 'script', 'certificateID']); + 'visible', 'renderInfo', 'modelURL', 'materialURL', 'imageURL', 'script', 'certificateID', + 'skybox.url', 'ambientLight.url']); for (var i = 0; i < multipleProperties.length; i++) { var properties = multipleProperties[i]; @@ -193,7 +208,7 @@ EntityListTool = function(shouldUseEditTabletApp) { valueIfDefined(properties.renderInfo.texturesSize) : ""), hasTransparent: (properties.renderInfo !== undefined ? valueIfDefined(properties.renderInfo.hasTransparent) : ""), - isBaked: properties.type === "Model" ? url.toLowerCase().endsWith(".baked.fbx") : false, + isBaked: entityIsBaked(properties), drawCalls: (properties.renderInfo !== undefined ? valueIfDefined(properties.renderInfo.drawCalls) : ""), hasScript: properties.script !== "" From 2d9a7f7c4f5db71ea7b9b555ca87d621cc38baa6 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 7 Jun 2019 17:00:37 -0700 Subject: [PATCH 015/106] Refined the capping of the LOD Target Rate to be the lower REfreshrate when FOcus-inactive, this prevent the panic attacks of the LOD system on low end hardware --- .../qml/+android_interface/Stats.qml | 3 + interface/resources/qml/Stats.qml | 61 ++++++++++--------- interface/src/LODManager.cpp | 13 +++- interface/src/PerformanceManager.cpp | 5 +- interface/src/RefreshRateManager.cpp | 23 ++++--- interface/src/RefreshRateManager.h | 3 + interface/src/ui/Stats.cpp | 2 + interface/src/ui/Stats.h | 18 ++++++ .../src/platform/backend/MACOSPlatform.cpp | 15 +++-- 9 files changed, 94 insertions(+), 49 deletions(-) diff --git a/interface/resources/qml/+android_interface/Stats.qml b/interface/resources/qml/+android_interface/Stats.qml index 54f6086a86..1f07af786f 100644 --- a/interface/resources/qml/+android_interface/Stats.qml +++ b/interface/resources/qml/+android_interface/Stats.qml @@ -269,6 +269,9 @@ Item { StatText { text: "GPU: " + root.gpuFrameTime.toFixed(1) + " ms" } + StatText { + text: "LOD Target: " + root.lodTargetFramerate + " Hz Angle: " + root.lodAngle + " deg" + } StatText { text: "Drawcalls: " + root.drawcalls } diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index 5af3ba9168..2c991aa9dd 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -259,6 +259,35 @@ Item { visible: root.expanded; text: "Entity Servers In: " + root.entityPacketsInKbps + " kbps"; } + StatText { + visible: !root.expanded + text: "Octree Elements Server: " + root.serverElements + + " Local: " + root.localElements; + } + StatText { + visible: root.expanded + text: "Octree Sending Mode: " + root.sendingMode; + } + StatText { + visible: root.expanded + text: "Octree Packets to Process: " + root.packetStats; + } + StatText { + visible: root.expanded + text: "Octree Elements - "; + } + StatText { + visible: root.expanded + text: "\tServer: " + root.serverElements + + " Internal: " + root.serverInternal + + " Leaves: " + root.serverLeaves; + } + StatText { + visible: root.expanded + text: "\tLocal: " + root.localElements + + " Internal: " + root.localInternal + + " Leaves: " + root.localLeaves; + } StatText { visible: root.expanded; text: "Downloads: " + root.downloads + "/" + root.downloadLimit + @@ -316,6 +345,9 @@ Item { StatText { text: "GPU frame size: " + root.gpuFrameSize.x + " x " + root.gpuFrameSize.y } + StatText { + text: "LOD Target: " + root.lodTargetFramerate + " Hz Angle: " + root.lodAngle + " deg" + } StatText { text: "Drawcalls: " + root.drawcalls } @@ -401,35 +433,6 @@ Item { text: " out of view: " + root.shadowOutOfView + " too small: " + root.shadowTooSmall; } - StatText { - visible: !root.expanded - text: "Octree Elements Server: " + root.serverElements + - " Local: " + root.localElements; - } - StatText { - visible: root.expanded - text: "Octree Sending Mode: " + root.sendingMode; - } - StatText { - visible: root.expanded - text: "Octree Packets to Process: " + root.packetStats; - } - StatText { - visible: root.expanded - text: "Octree Elements - "; - } - StatText { - visible: root.expanded - text: "\tServer: " + root.serverElements + - " Internal: " + root.serverInternal + - " Leaves: " + root.serverLeaves; - } - StatText { - visible: root.expanded - text: "\tLocal: " + root.localElements + - " Internal: " + root.localInternal + - " Leaves: " + root.localLeaves; - } StatText { visible: root.expanded text: "LOD: " + root.lodStatus; diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index b0b919fb0f..0c9587d3ae 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -351,7 +351,18 @@ float LODManager::getHMDLODTargetFPS() const { } float LODManager::getLODTargetFPS() const { - auto refreshRateFPS = qApp->getRefreshRateManager().getActiveRefreshRate(); + + // Use the current refresh rate as the recommended rate target used to cap the LOD manager control value. + // When focused, Use the Focus Inactive as the targget LOD to void abrupt changes from the lod controller. + auto& refreshRateManager = qApp->getRefreshRateManager(); + auto refreshRateRegime = refreshRateManager.getRefreshRateRegime(); + auto refreshRateProfile = refreshRateManager.getRefreshRateProfile(); + auto refreshRateUXMode = refreshRateManager.getUXMode(); + auto refreshRateFPS = refreshRateManager.getActiveRefreshRate(); + if (refreshRateRegime == RefreshRateManager::RefreshRateRegime::FOCUS_ACTIVE) { + refreshRateFPS = refreshRateManager.queryRefreshRateTarget(refreshRateProfile, RefreshRateManager::RefreshRateRegime::FOCUS_INACTIVE, refreshRateUXMode); + } + auto lodTargetFPS = getDesktopLODTargetFPS(); if (qApp->isHMDMode()) { lodTargetFPS = getHMDLODTargetFPS(); diff --git a/interface/src/PerformanceManager.cpp b/interface/src/PerformanceManager.cpp index 910f42ac6e..cf6da11aeb 100644 --- a/interface/src/PerformanceManager.cpp +++ b/interface/src/PerformanceManager.cpp @@ -69,13 +69,14 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP RenderScriptingInterface::getInstance()->setShadowsEnabled(true); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME); - // DependencyManager::get()->setWorldDetailQuality() + DependencyManager::get()->setWorldDetailQuality(0.5f); break; case PerformancePreset::MID: RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); RenderScriptingInterface::getInstance()->setShadowsEnabled(false); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE); + DependencyManager::get()->setWorldDetailQuality(0.5f); break; case PerformancePreset::LOW: @@ -83,6 +84,8 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP RenderScriptingInterface::getInstance()->setShadowsEnabled(false); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::ECO); + DependencyManager::get()->setWorldDetailQuality(0.75f); + break; case PerformancePreset::UNKNOWN: default: diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index 4963eee8cf..922682d9c0 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -107,9 +107,7 @@ RefreshRateManager::RefreshRateProfile RefreshRateManager::getRefreshRateProfile RefreshRateManager::RefreshRateProfile profile = RefreshRateManager::RefreshRateProfile::REALTIME; if (getUXMode() != RefreshRateManager::UXMode::VR) { - profile =(RefreshRateManager::RefreshRateProfile) _refreshRateProfileSettingLock.resultWithReadLock([&] { - return _refreshRateProfileSetting.get(); - }); + return _refreshRateProfile; } return profile; @@ -138,15 +136,20 @@ void RefreshRateManager::setUXMode(RefreshRateManager::UXMode uxMode) { } } +int RefreshRateManager::queryRefreshRateTarget(RefreshRateProfile profile, RefreshRateRegime regime, UXMode uxMode) const { + int targetRefreshRate; + if (uxMode == RefreshRateManager::UXMode::DESKTOP) { + targetRefreshRate = REFRESH_RATE_PROFILES[profile][regime]; + } + else { + targetRefreshRate = VR_TARGET_RATE; + } + return targetRefreshRate; +} + void RefreshRateManager::updateRefreshRateController() const { if (_refreshRateOperator) { - int targetRefreshRate; - if (_uxMode == RefreshRateManager::UXMode::DESKTOP) { - targetRefreshRate = REFRESH_RATE_PROFILES[_refreshRateProfile][_refreshRateRegime]; - } else { - targetRefreshRate = VR_TARGET_RATE; - } - + int targetRefreshRate = queryRefreshRateTarget(_refreshRateProfile, _refreshRateRegime, _uxMode); _refreshRateOperator(targetRefreshRate); _activeRefreshRate = targetRefreshRate; } diff --git a/interface/src/RefreshRateManager.h b/interface/src/RefreshRateManager.h index 74dd8156e1..567a515898 100644 --- a/interface/src/RefreshRateManager.h +++ b/interface/src/RefreshRateManager.h @@ -65,6 +65,9 @@ public: int getActiveRefreshRate() const { return _activeRefreshRate; } void updateRefreshRateController() const; + // query the refresh rate target at the specified combination + int queryRefreshRateTarget(RefreshRateProfile profile, RefreshRateRegime regime, UXMode uxMode) const; + void resetInactiveTimer(); void toggleInactive(); diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index d243fa9ebf..dc9780adf5 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -416,6 +416,8 @@ void Stats::updateStats(bool force) { gpuContext->getFrameStats(gpuFrameStats); STAT_UPDATE(drawcalls, gpuFrameStats._DSNumDrawcalls); + STAT_UPDATE(lodTargetFramerate, DependencyManager::get()->getLODTargetFPS()); + STAT_UPDATE(lodAngle, DependencyManager::get()->getLODAngleDeg()); // Incoming packets diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index cb13945320..ef4668f85e 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -109,6 +109,8 @@ private: \ * @property {number} shadowRendered - Read-only. * @property {string} sendingMode - Read-only. * @property {string} packetStats - Read-only. + * @property {number} lodAngle - Read-only. + * @property {number} lodTargetFramerate - Read-only. * @property {string} lodStatus - Read-only. * @property {string} timingStats - Read-only. * @property {string} gameUpdateStats - Read-only. @@ -272,6 +274,8 @@ class Stats : public QQuickItem { STATS_PROPERTY(int, shadowRendered, 0) STATS_PROPERTY(QString, sendingMode, QString()) STATS_PROPERTY(QString, packetStats, QString()) + STATS_PROPERTY(int, lodAngle, 0) + STATS_PROPERTY(int, lodTargetFramerate, 0) STATS_PROPERTY(QString, lodStatus, QString()) STATS_PROPERTY(QString, timingStats, QString()) STATS_PROPERTY(QString, gameUpdateStats, QString()) @@ -858,6 +862,20 @@ signals: */ void packetStatsChanged(); + /**jsdoc + * Triggered when the value of the lodAngle property changes. + * @function Stats.lodAngleChanged + * @returns {Signal} + */ + void lodAngleChanged(); + + /**jsdoc + * Triggered when the value of the lodTargetFramerate property changes. + * @function Stats.lodTargetFramerateChanged + * @returns {Signal} + */ + void lodTargetFramerateChanged(); + /**jsdoc * Triggered when the value of the lodStatus property changes. * @function Stats.lodStatusChanged diff --git a/libraries/platform/src/platform/backend/MACOSPlatform.cpp b/libraries/platform/src/platform/backend/MACOSPlatform.cpp index c7ab7c77a0..695c872e90 100644 --- a/libraries/platform/src/platform/backend/MACOSPlatform.cpp +++ b/libraries/platform/src/platform/backend/MACOSPlatform.cpp @@ -102,8 +102,10 @@ void MACOSInstance::enumerateDisplays() { #ifdef Q_OS_MAC auto displayID = CGMainDisplayID(); auto displaySize = CGDisplayScreenSize(displayID); - auto displaySizeWidthInches = displaySize.width * 0.0393701; - auto displaySizeHeightInches = displaySize.height * 0.0393701; + + const auto MM_TO_IN = 0.0393701; + auto displaySizeWidthInches = displaySize.width * MM_TO_IN; + auto displaySizeHeightInches = displaySize.height * MM_TO_IN; auto displaySizeDiagonalInches = sqrt(displaySizeWidthInches * displaySizeWidthInches + displaySizeHeightInches * displaySizeHeightInches); auto displayPixelsWidth= CGDisplayPixelsWide(displayID); @@ -125,12 +127,10 @@ void MACOSInstance::enumerateDisplays() { json display = {}; - // display["physicalWidth"] = displaySizeWidthInches; - // display["physicalHeight"] = displaySizeHeightInches; + display["physicalWidth"] = displaySizeWidthInches; + display["physicalHeight"] = displaySizeHeightInches; display["physicalDiagonal"] = displaySizeDiagonalInches; - // display["ppiH"] = displayModeWidth / displaySizeWidthInches; - // display["ppiV"] = displayModeHeight / displaySizeHeightInches; display["ppi"] = sqrt(displayModeHeight * displayModeHeight + displayModeWidth * displayModeWidth) / displaySizeDiagonalInches; display["coordLeft"] = displayBounds.origin.x; @@ -148,8 +148,7 @@ void MACOSInstance::enumerateDisplays() { display["refreshrate"] =displayRefreshrate; display["modeWidth"] = displayModeWidth; display["modeHeight"] = displayModeHeight; - - + _display.push_back(display); #endif } From e0714e5b1a6033c8294d26118fc7cc7c6d71b7cc Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 7 Jun 2019 17:18:30 -0700 Subject: [PATCH 016/106] Removing comments --- .../src/platform/backend/MACOSPlatform.cpp | 50 +------------------ 1 file changed, 1 insertion(+), 49 deletions(-) diff --git a/libraries/platform/src/platform/backend/MACOSPlatform.cpp b/libraries/platform/src/platform/backend/MACOSPlatform.cpp index 695c872e90..7dbc403783 100644 --- a/libraries/platform/src/platform/backend/MACOSPlatform.cpp +++ b/libraries/platform/src/platform/backend/MACOSPlatform.cpp @@ -37,53 +37,7 @@ void MACOSInstance::enumerateCpu() { void MACOSInstance::enumerateGpu() { #ifdef Q_OS_MAC -/* uint32_t cglDisplayMask = -1; // Iterate over all of them. - CGLRendererInfoObj rendererInfo; - GLint rendererInfoCount; - CGLError err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &rendererInfoCount); - GLint j, numRenderers = 0, deviceVRAM, bestVRAM = 0; - err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &numRenderers); - if (0 == err) { - // Iterate over all of them and use the figure for the one with the most VRAM, - // on the assumption that this is the one that will actually be used. - CGLDescribeRenderer(rendererInfo, 0, kCGLRPRendererCount, &numRenderers); - for (j = 0; j < numRenderers; j++) { - CGLDescribeRenderer(rendererInfo, j, kCGLRPVideoMemoryMegabytes, &deviceVRAM); - if (deviceVRAM > bestVRAM) { - bestVRAM = deviceVRAM; - isValid = true; - } - } - } - - //get gpu name - FILE* stream = popen("system_profiler SPDisplaysDataType | grep Chipset", "r"); - - std::ostringstream hostStream; - while (!feof(stream) && !ferror(stream)) { - char buf[128]; - int bytesRead = fread(buf, 1, 128, stream); - hostStream.write(buf, bytesRead); - } - - QString result = QString::fromStdString(hostStream.str()); - QStringList parts = result.split('\n'); - std::string name; - - for (int i = 0; i < parts.size(); ++i) { - if (parts[i].toLower().contains("radeon") || parts[i].toLower().contains("nvidia")) { - _name=parts[i]; - } - } - - _dedicatedMemoryMB = bestVRAM; - CGLDestroyRendererInfo(rendererInfo); -*/ - - // auto displayID = CGMainDisplayID(); - // auto displayGLMask = CGDisplayIDToOpenGLDisplayMask(displayID); - // auto metalDevice = CGDirectDisplayCopyCurrentMetalDevice(displayID); - + GPUIdent* ident = GPUIdent::getInstance(); json gpu = {}; @@ -108,8 +62,6 @@ void MACOSInstance::enumerateDisplays() { auto displaySizeHeightInches = displaySize.height * MM_TO_IN; auto displaySizeDiagonalInches = sqrt(displaySizeWidthInches * displaySizeWidthInches + displaySizeHeightInches * displaySizeHeightInches); - auto displayPixelsWidth= CGDisplayPixelsWide(displayID); - auto displayPixelsHeight= CGDisplayPixelsHigh(displayID); auto displayBounds = CGDisplayBounds(displayID); auto displayMaster =CGDisplayIsMain(displayID); From 0b282b201cb80b32077d123aee156623783ae65f Mon Sep 17 00:00:00 2001 From: Anna Date: Fri, 7 Jun 2019 18:01:47 -0700 Subject: [PATCH 017/106] typo fix --- interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml index e824036587..0ca9d6d80c 100644 --- a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml @@ -22,7 +22,7 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.reslovedUrl(path)); + profileRoot.push(Qt.resolvedUrl(path)); } function popSource() { From fd872009fe73a97d5f36890ddbedece5032d9145 Mon Sep 17 00:00:00 2001 From: Anna Date: Mon, 10 Jun 2019 09:25:12 -0700 Subject: [PATCH 018/106] added workaround for bug in Qt StackView push method --- interface/resources/qml/hifi/tablet/Edit.qml | 3 ++- interface/resources/qml/hifi/tablet/EditTools.qml | 3 ++- interface/resources/qml/hifi/tablet/TabletAudioBuffers.qml | 3 ++- .../resources/qml/hifi/tablet/TabletAvatarPreferences.qml | 3 ++- .../resources/qml/hifi/tablet/TabletGeneralPreferences.qml | 3 ++- .../resources/qml/hifi/tablet/TabletGraphicsPreferences.qml | 3 ++- interface/resources/qml/hifi/tablet/TabletLodPreferences.qml | 3 ++- .../resources/qml/hifi/tablet/TabletNetworkingPreferences.qml | 3 ++- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/Edit.qml b/interface/resources/qml/hifi/tablet/Edit.qml index 099c53cda2..ca18388def 100644 --- a/interface/resources/qml/hifi/tablet/Edit.qml +++ b/interface/resources/qml/hifi/tablet/Edit.qml @@ -34,7 +34,8 @@ StackView { } function pushSource(path) { - editRoot.push(Qt.resolvedUrl("../../" + path), itemProperties, + var item = Qt.createComponent(Qt.resolvedUrl("../../" + path)); + editRoot.push(item, itemProperties, StackView.Immediate); editRoot.currentItem.sendToScript.connect(editRoot.sendToScript); } diff --git a/interface/resources/qml/hifi/tablet/EditTools.qml b/interface/resources/qml/hifi/tablet/EditTools.qml index f989038c16..976e98cd50 100644 --- a/interface/resources/qml/hifi/tablet/EditTools.qml +++ b/interface/resources/qml/hifi/tablet/EditTools.qml @@ -37,7 +37,8 @@ StackView { } function pushSource(path) { - editRoot.push(Qt.resolvedUrl("../../" + path), itemProperties, + var item = Qt.createComponent(Qt.resolvedUrl("../../" + path)); + editRoot.push(item, itemProperties, StackView.Immediate); editRoot.currentItem.sendToScript.connect(editRoot.sendToScript); } diff --git a/interface/resources/qml/hifi/tablet/TabletAudioBuffers.qml b/interface/resources/qml/hifi/tablet/TabletAudioBuffers.qml index 239c2452d4..2836c2bac6 100644 --- a/interface/resources/qml/hifi/tablet/TabletAudioBuffers.qml +++ b/interface/resources/qml/hifi/tablet/TabletAudioBuffers.qml @@ -24,7 +24,8 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.resolvedUrl(path)); + var item = Qt.createComponent(Qt.resolvedUrl(path)); + profileRoot.push(item); } function popSource() { diff --git a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml index 0ca9d6d80c..dbe4ab12db 100644 --- a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml @@ -22,7 +22,8 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.resolvedUrl(path)); + var item = Qt.createComponent(Qt.resolvedUrl(path)); + profileRoot.push(item); } function popSource() { diff --git a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml index 4f1100f20b..254e4203ce 100644 --- a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml @@ -22,7 +22,8 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.resolvedUrl(path)); + var item = Qt.createComponent(Qt.resolvedUrl(path)); + profileRoot.push(item); } function popSource() { diff --git a/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml index 8d600975ed..9b9f01d031 100644 --- a/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml @@ -22,7 +22,8 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.resolvedUrl(path)); + var item = Qt.createComponent(Qt.resolvedUrl(path)); + profileRoot.push(item); } function popSource() { diff --git a/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml b/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml index ddc116371d..0938d0a82e 100644 --- a/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml @@ -22,7 +22,8 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.resolvedUrl(path)); + var item = Qt.createComponent(Qt.resolvedUrl(path)); + profileRoot.push(item); } function popSource() { diff --git a/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml b/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml index bad546a39c..67d6e6c52e 100644 --- a/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml @@ -22,7 +22,8 @@ StackView { signal sendToScript(var message); function pushSource(path) { - profileRoot.push(Qt.resolvedUrl(path)); + var item = Qt.createComponent(Qt.resolvedUrl(path)); + profileRoot.push(item); } function popSource() { From 4cad49f561f8f3437ee0810c81f511e617938f64 Mon Sep 17 00:00:00 2001 From: amer cerkic Date: Mon, 10 Jun 2019 10:42:31 -0700 Subject: [PATCH 019/106] adding undefined check on the toolbar object --- scripts/simplifiedUI/ui/simplifiedUI.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index cdf6a9591a..88197c0837 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -535,7 +535,9 @@ function shutdown() { if (!HMD.active) { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); - toolbar.writeProperty("visible", true); + if (typeof toolbar !== 'undefined') { + toolbar.writeProperty("visible", true); + } } } From 23f8778feb3bf6e1d60f6f67bd23df23991a8da3 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 10 Jun 2019 11:10:29 -0700 Subject: [PATCH 020/106] possible fix for mac crash? --- libraries/entities-renderer/src/RenderablePolyLineEntityItem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h index fa6fff98d7..9139c260ea 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h @@ -55,7 +55,7 @@ protected: bool _faceCamera { false }; bool _glow { false }; - size_t _numVertices; + size_t _numVertices { 0 }; gpu::BufferPointer _polylineDataBuffer; gpu::BufferPointer _polylineGeometryBuffer; static std::map, gpu::PipelinePointer> _pipelines; From edc1018b2a42a7c5fd3f4df8e9ebcfe673c202c3 Mon Sep 17 00:00:00 2001 From: amer cerkic Date: Mon, 10 Jun 2019 11:12:29 -0700 Subject: [PATCH 021/106] simplified the check --- scripts/simplifiedUI/ui/simplifiedUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 88197c0837..bafc5fffe1 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -535,7 +535,7 @@ function shutdown() { if (!HMD.active) { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); - if (typeof toolbar !== 'undefined') { + if (toolbar) { toolbar.writeProperty("visible", true); } } From c39218c1f4c76aad309ed153301ef331639e5794 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 10 Jun 2019 11:59:09 -0700 Subject: [PATCH 022/106] Addressing the review comment about an if else statement syntax --- interface/src/RefreshRateManager.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index 922682d9c0..da6c5cbd37 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -137,13 +137,10 @@ void RefreshRateManager::setUXMode(RefreshRateManager::UXMode uxMode) { } int RefreshRateManager::queryRefreshRateTarget(RefreshRateProfile profile, RefreshRateRegime regime, UXMode uxMode) const { - int targetRefreshRate; + int targetRefreshRate = VR_TARGET_RATE; if (uxMode == RefreshRateManager::UXMode::DESKTOP) { targetRefreshRate = REFRESH_RATE_PROFILES[profile][regime]; } - else { - targetRefreshRate = VR_TARGET_RATE; - } return targetRefreshRate; } From 9c6ca601087c6ea8331c022955020a4deea5631b Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Mon, 10 Jun 2019 12:08:51 -0700 Subject: [PATCH 023/106] get windows error first, check for socket changes, and fix bad Q_OS_WINDOWS ref --- libraries/networking/src/udt/Socket.cpp | 26 ++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 406c2ff213..6e27fd2483 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -59,10 +59,12 @@ void Socket::bind(const QHostAddress& address, quint16 port) { auto sd = _udpSocket.socketDescriptor(); int val = IP_PMTUDISC_DONT; setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val)); -#elif defined(Q_OS_WINDOWS) +#elif defined(Q_OS_WIN) auto sd = _udpSocket.socketDescriptor(); int val = 0; // false - setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, &val, sizeof(val)); + if (setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, (const char *)&val, sizeof(val))) { + qCWarning(networking) << "Socket::bind Cannot setsockopt IP_DONTFRAGMENT" << WSAGetLastError(); + } #endif } } @@ -231,14 +233,14 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc return -1; } qint64 bytesWritten = _udpSocket.writeDatagram(datagram, sockAddr.getAddress(), sockAddr.getPort()); - - if (bytesWritten < 0) { - qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << _udpSocket.error() << "(" << _udpSocket.errorString() << ")"; - + int pending = _udpSocket.bytesToWrite(); + if (bytesWritten < 0 || pending) { + int wsaError = 0; #ifdef WIN32 - int wsaError = WSAGetLastError(); - qCDebug(networking) << "windows socket error " << wsaError; + wsaError = WSAGetLastError(); #endif + qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << wsaError << _udpSocket.error() << "(" << _udpSocket.errorString() << ")" + << (pending ? "pending bytes:" : "pending:") << pending; #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); @@ -506,11 +508,13 @@ std::vector Socket::getConnectionSockAddrs() { } void Socket::handleSocketError(QAbstractSocket::SocketError socketError) { - qCDebug(networking) << "udt::Socket (" << _udpSocket.state() << ") error - " << socketError << "(" << _udpSocket.errorString() << ")"; + int wsaError = 0; #ifdef WIN32 - int wsaError = WSAGetLastError(); - qCDebug(networking) << "windows socket error " << wsaError; + wsaError = WSAGetLastError(); #endif + int pending = _udpSocket.bytesToWrite(); + qCDebug(networking) << "udt::Socket (" << _udpSocket.state() << ") error - " << wsaError << socketError << "(" << _udpSocket.errorString() << ")" + << (pending ? "pending bytes:" : "pending:") << pending; #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; From a400cea0404dc5b936799031ee23e1d1271528e7 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 10 Jun 2019 14:00:05 -0700 Subject: [PATCH 024/106] Fix crash when using null DisplayPlugin in GraphicsEngine during shutdown --- interface/src/graphics/GraphicsEngine.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/interface/src/graphics/GraphicsEngine.cpp b/interface/src/graphics/GraphicsEngine.cpp index 4f8b86cc0c..7f9a612697 100644 --- a/interface/src/graphics/GraphicsEngine.cpp +++ b/interface/src/graphics/GraphicsEngine.cpp @@ -132,6 +132,10 @@ static const int THROTTLED_SIM_FRAME_PERIOD_MS = MSECS_PER_SECOND / THROTTLED_SI bool GraphicsEngine::shouldPaint() const { auto displayPlugin = qApp->getActiveDisplayPlugin(); + if (!displayPlugin) { + // We're shutting down + return false; + } #ifdef DEBUG_PAINT_DELAY static uint64_t paintDelaySamples{ 0 }; @@ -175,6 +179,10 @@ void GraphicsEngine::render_performFrame() { { PROFILE_RANGE(render, "/getActiveDisplayPlugin"); displayPlugin = qApp->getActiveDisplayPlugin(); + if (!displayPlugin) { + // We're shutting down + return; + } } { From 67995a8677f1ac15eb5de9610a06de80ea394e46 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 10 Jun 2019 14:25:44 -0700 Subject: [PATCH 025/106] don't divide by zero if a grid entity-item has a zero dimension --- libraries/render-utils/src/GeometryCache.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 7bd6f88d71..88cca1693b 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -939,6 +939,11 @@ void GeometryCache::renderWireSphere(gpu::Batch& batch, const glm::vec4& color) void GeometryCache::renderGrid(gpu::Batch& batch, const glm::vec2& minCorner, const glm::vec2& maxCorner, int majorRows, int majorCols, float majorEdge, int minorRows, int minorCols, float minorEdge, const glm::vec4& color, bool forward, int id) { + + if (majorRows == 0 || majorCols == 0) { + return; + } + Vec2FloatPair majorKey(glm::vec2(majorRows, majorCols), majorEdge); Vec2FloatPair minorKey(glm::vec2(minorRows, minorCols), minorEdge); Vec2FloatPairPair key(majorKey, minorKey); @@ -962,8 +967,8 @@ void GeometryCache::renderGrid(gpu::Batch& batch, const glm::vec2& minCorner, co gridBuffer.edit().period = glm::vec4(majorRows, majorCols, minorRows, minorCols); gridBuffer.edit().offset.x = -(majorEdge / majorRows) / 2; gridBuffer.edit().offset.y = -(majorEdge / majorCols) / 2; - gridBuffer.edit().offset.z = -(minorEdge / minorRows) / 2; - gridBuffer.edit().offset.w = -(minorEdge / minorCols) / 2; + gridBuffer.edit().offset.z = minorRows == 0 ? 0 : -(minorEdge / minorRows) / 2; + gridBuffer.edit().offset.w = minorCols == 0 ? 0 : -(minorEdge / minorCols) / 2; gridBuffer.edit().edge = glm::vec4(glm::vec2(majorEdge), // If rows or columns are not set, do not draw minor gridlines glm::vec2((minorRows != 0 && minorCols != 0) ? minorEdge : 0.0f)); From adeedc88d3c882255ba2428736bc098032a0fb68 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Mon, 10 Jun 2019 14:38:01 -0700 Subject: [PATCH 026/106] add launcher error page --- launchers/darwin/src/DownloadDomainContent.m | 2 +- launchers/darwin/src/DownloadInterface.m | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/launchers/darwin/src/DownloadDomainContent.m b/launchers/darwin/src/DownloadDomainContent.m index 7b0247a6f4..f0b625c3e2 100644 --- a/launchers/darwin/src/DownloadDomainContent.m +++ b/launchers/darwin/src/DownloadDomainContent.m @@ -54,7 +54,7 @@ -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { NSLog(@"completed; error: %@", error); + [[Launcher sharedLauncher] displayErrorPage]; } - @end diff --git a/launchers/darwin/src/DownloadInterface.m b/launchers/darwin/src/DownloadInterface.m index b957197567..bcc07f6377 100644 --- a/launchers/darwin/src/DownloadInterface.m +++ b/launchers/darwin/src/DownloadInterface.m @@ -66,6 +66,7 @@ -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { NSLog(@"completed; error: %@", error); + [[Launcher sharedLauncher] displayErrorPage]; } From 654b5775e17bf14f0a5d6dad7d86927698ae833a Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 10 Jun 2019 15:05:34 -0700 Subject: [PATCH 027/106] Crash fix for ResourceCache::getResource() A wrong 'read' locker is used around a critical section that actually modifies the _resources QHash. This can result in memory corruption and seg faults. --- libraries/networking/src/ResourceCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 44d3d1ee4d..ef8a7b577d 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -346,7 +346,7 @@ void ResourceCache::setRequestLimit(uint32_t limit) { QSharedPointer ResourceCache::getResource(const QUrl& url, const QUrl& fallback, void* extra, size_t extraHash) { QSharedPointer resource; { - QReadLocker locker(&_resourcesLock); + QWriteLocker locker(&_resourcesLock); auto& resourcesWithExtraHash = _resources[url]; auto resourcesWithExtraHashIter = resourcesWithExtraHash.find(extraHash); if (resourcesWithExtraHashIter != resourcesWithExtraHash.end()) { From dbce9768873f57dd089cf2dcd069b7fb3131c6c7 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 10 Jun 2019 15:34:18 -0700 Subject: [PATCH 028/106] fix another crash in MyAvatar::getAvatarEntitiesVariant() --- interface/src/avatar/MyAvatar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index b91217da63..3800a330bb 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2488,12 +2488,12 @@ QVariantList MyAvatar::getAvatarEntitiesVariant() { QVariantMap avatarEntityData; avatarEntityData["id"] = entityID; EntityItemProperties entityProperties = entity->getProperties(desiredProperties); - QScriptValue scriptProperties; { std::lock_guard guard(_scriptEngineLock); + QScriptValue scriptProperties; scriptProperties = EntityItemPropertiesToScriptValue(_scriptEngine, entityProperties); + avatarEntityData["properties"] = scriptProperties.toVariant(); } - avatarEntityData["properties"] = scriptProperties.toVariant(); avatarEntitiesData.append(QVariant(avatarEntityData)); } } From 7ce5f7ac0b3a4bbd172bf17419d8de4b130478fc Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 10 Jun 2019 16:27:03 -0700 Subject: [PATCH 029/106] Adjust run and jog anims to better align head with 1p camera Added adjust forward run and jog animations to better align with first person camera. In some instances, such as looking down, you could sometimes see your body lead your camera. https://highfidelity.atlassian.net/browse/BUGZ-240 --- .../resources/avatar/animations/jog_fwd.fbx | Bin 892208 -> 928272 bytes .../resources/avatar/animations/run_fwd.fbx | Bin 940272 -> 940528 bytes .../resources/avatar/avatar-animation.json | 10 +++++----- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/resources/avatar/animations/jog_fwd.fbx b/interface/resources/avatar/animations/jog_fwd.fbx index 3c3b8118ab9ecf2988df13b7534ddeac181d72ec..f389fea36414926df660370b1ed73206bc752ad7 100644 GIT binary patch literal 928272 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%0DJX7ZYY{f7pFhF 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%0DLVFC)xWRv!_zc0ov9wvxfgWovn9g|St-43m%q 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 diff --git a/interface/resources/avatar/animations/run_fwd.fbx b/interface/resources/avatar/animations/run_fwd.fbx index 86add969e59d8c18d5bd6c40dbaa6ebe6eb739c3..f28f9e056921d64e85bb81898056eb5bb46c3213 100644 GIT binary patch literal 940528 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

oUD9k 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 PyEQATEN|KM^aK76q5g}% literal 940272 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%0AluyZTKn^i;gerULk{~D9 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 Date: Thu, 6 Jun 2019 09:34:30 -0700 Subject: [PATCH 030/106] Enable windows launcher build --- launchers/darwin/CMakeLists.txt | 4 ++++ launchers/win32/CMakeLists.txt | 5 +++++ tools/ci-scripts/postbuild.py | 5 +---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/launchers/darwin/CMakeLists.txt b/launchers/darwin/CMakeLists.txt index d8baea6e3c..2de43d93cb 100644 --- a/launchers/darwin/CMakeLists.txt +++ b/launchers/darwin/CMakeLists.txt @@ -66,6 +66,10 @@ endfunction() add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${src_files}) set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${APP_NAME}) set_from_env(LAUNCHER_HMAC_SECRET LAUNCHER_HMAC_SECRET "") +if (LAUNCHER_HMAC_SECRET STREQUAL "") + message(FATAL_ERROR "LAUNCHER_HMAC_SECRET is not set") +endif() + target_compile_definitions(${PROJECT_NAME} PRIVATE LAUNCHER_HMAC_SECRET="${LAUNCHER_HMAC_SECRET}") file(GLOB NIB_FILES "nib/*.xib") diff --git a/launchers/win32/CMakeLists.txt b/launchers/win32/CMakeLists.txt index 8417831312..a472c68688 100644 --- a/launchers/win32/CMakeLists.txt +++ b/launchers/win32/CMakeLists.txt @@ -50,6 +50,11 @@ function(set_from_env _RESULT_NAME _ENV_VAR_NAME _DEFAULT_VALUE) endfunction() set_from_env(LAUNCHER_HMAC_SECRET LAUNCHER_HMAC_SECRET "") + +if (LAUNCHER_HMAC_SECRET STREQUAL "") + message(FATAL_ERROR "LAUNCHER_HMAC_SECRET is not set") +endif() + target_compile_definitions(${PROJECT_NAME} PRIVATE LAUNCHER_HMAC_SECRET="${LAUNCHER_HMAC_SECRET}") diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index b6593b1cf3..4c05abeb47 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -112,9 +112,6 @@ def fixupWinZip(filename): shutil.move(outFullPath, fullPath) def buildLightLauncher(): - # FIXME remove once MFC is enabled on the windows build hosts - if sys.platform == 'win32': - return launcherSourcePath = os.path.join(SOURCE_PATH, 'launchers', sys.platform) launcherBuildPath = os.path.join(BUILD_PATH, 'launcher') if not os.path.exists(launcherBuildPath): @@ -146,7 +143,7 @@ def buildLightLauncher(): elif sys.platform == 'win32': # FIXME launcherDestFile = os.path.join(BUILD_PATH, "{}.exe".format(computeArchiveName('Launcher'))) - launcherSourceFile = os.path.join(launcherBuildPath, "Launcher.exe") + launcherSourceFile = os.path.join(launcherBuildPath, "Release", "HQLauncher.exe") print("Moving {} to {}".format(launcherSourceFile, launcherDestFile)) shutil.move(launcherSourceFile, launcherDestFile) From 2fa16719cfa954b9a77dbd3776681cab966a2d33 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 10 Jun 2019 16:52:44 -0700 Subject: [PATCH 031/106] AvatarData: Fix avatarDataByteArray max size computation The previous size calculation did not take the presence of the hand controller section into account. This could sometimes result in a buffer overrun of the network buffer as identified in a debug build. https://highfidelity.atlassian.net/browse/BUGZ-526 --- libraries/avatars/src/AvatarData.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index e5131ff94b..8e2eb7bf8e 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -302,6 +302,15 @@ namespace AvatarDataPacket { const size_t AVATAR_LOCAL_POSITION_SIZE = 12; static_assert(sizeof(AvatarLocalPosition) == AVATAR_LOCAL_POSITION_SIZE, "AvatarDataPacket::AvatarLocalPosition size doesn't match."); + PACKED_BEGIN struct HandControllers { + SixByteQuat leftHandRotation; + SixByteTrans leftHandTranslation; + SixByteQuat rightHandRotation; + SixByteTrans rightHandTranslation; + } PACKED_END; + static const size_t HAND_CONTROLLERS_SIZE = 24; + static_assert(sizeof(HandControllers) == HAND_CONTROLLERS_SIZE, "AvatarDataPacket::HandControllers size doesn't match."); + const size_t MAX_CONSTANT_HEADER_SIZE = HEADER_SIZE + AVATAR_GLOBAL_POSITION_SIZE + AVATAR_BOUNDING_BOX_SIZE + @@ -312,17 +321,8 @@ namespace AvatarDataPacket { SENSOR_TO_WORLD_SIZE + ADDITIONAL_FLAGS_SIZE + PARENT_INFO_SIZE + - AVATAR_LOCAL_POSITION_SIZE; - - PACKED_BEGIN struct HandControllers { - SixByteQuat leftHandRotation; - SixByteTrans leftHandTranslation; - SixByteQuat rightHandRotation; - SixByteTrans rightHandTranslation; - } PACKED_END; - static const size_t HAND_CONTROLLERS_SIZE = 24; - static_assert(sizeof(HandControllers) == HAND_CONTROLLERS_SIZE, "AvatarDataPacket::HandControllers size doesn't match."); - + AVATAR_LOCAL_POSITION_SIZE + + HAND_CONTROLLERS_SIZE; // variable length structure follows From 88003c37d7bcbf25f79154dc88e06140d34cce16 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 10 Jun 2019 16:44:17 -0700 Subject: [PATCH 032/106] fix physics assert --- libraries/physics/src/PhysicsEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 976c547c5e..655edd4e13 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -35,7 +35,7 @@ static bool flipNormalsMyAvatarVsBackfacingTriangles(btManifoldPoint& cp, const btVector3* v = triShape->m_vertices1; btVector3 faceNormal = colObj1Wrap->getWorldTransform().getBasis() * btCross(v[1] - v[0], v[2] - v[0]); float nDotF = btDot(faceNormal, cp.m_normalWorldOnB); - if (nDotF <= 0.0f) { + if (nDotF <= 0.0f && faceNormal.length2() > EPSILON) { faceNormal.normalize(); // flip the contact normal to be aligned with the face normal cp.m_normalWorldOnB += -2.0f * nDotF * faceNormal; From 889a5d2bda8772eb06c33549b52a0fc2595b57c9 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 10 Jun 2019 17:58:46 -0700 Subject: [PATCH 033/106] AvatarData: Add FAR_GRAB_JOINTS_SIZE to byteArraySize computation. --- libraries/avatars/src/AvatarData.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 942b13c237..eb12fd83a8 100755 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -398,6 +398,7 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent const size_t byteArraySize = AvatarDataPacket::MAX_CONSTANT_HEADER_SIZE + NUM_BYTES_RFC4122_UUID + AvatarDataPacket::maxFaceTrackerInfoSize(_headData->getBlendshapeCoefficients().size()) + AvatarDataPacket::maxJointDataSize(_jointData.size()) + + FAR_GRAB_JOINTS_SIZE + AvatarDataPacket::maxJointDefaultPoseFlagsSize(_jointData.size()); if (maxDataSize == 0) { From 6c4e7cd805f1311d80cbbcd8fd041ff300286170 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 10 Jun 2019 18:00:54 -0700 Subject: [PATCH 034/106] AvatarData: arranged order of size computation reflect order in the packet. --- libraries/avatars/src/AvatarData.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index eb12fd83a8..7f25dcf8fb 100755 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -396,10 +396,10 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent } const size_t byteArraySize = AvatarDataPacket::MAX_CONSTANT_HEADER_SIZE + NUM_BYTES_RFC4122_UUID + - AvatarDataPacket::maxFaceTrackerInfoSize(_headData->getBlendshapeCoefficients().size()) + - AvatarDataPacket::maxJointDataSize(_jointData.size()) + - FAR_GRAB_JOINTS_SIZE + - AvatarDataPacket::maxJointDefaultPoseFlagsSize(_jointData.size()); + AvatarDataPacket::maxFaceTrackerInfoSize(_headData->getBlendshapeCoefficients().size()) + + AvatarDataPacket::maxJointDataSize(_jointData.size()) + + AvatarDataPacket::maxJointDefaultPoseFlagsSize(_jointData.size()) + + FAR_GRAB_JOINTS_SIZE; if (maxDataSize == 0) { maxDataSize = (int)byteArraySize; From 897e276188ef32ef33779c8a1173abc5ad11c9ff Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 10 Jun 2019 18:34:11 -0700 Subject: [PATCH 035/106] Compile fix --- libraries/avatars/src/AvatarData.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 7f25dcf8fb..a2dde3d651 100755 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -399,7 +399,7 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent AvatarDataPacket::maxFaceTrackerInfoSize(_headData->getBlendshapeCoefficients().size()) + AvatarDataPacket::maxJointDataSize(_jointData.size()) + AvatarDataPacket::maxJointDefaultPoseFlagsSize(_jointData.size()) + - FAR_GRAB_JOINTS_SIZE; + AvatarDataPacket::FAR_GRAB_JOINTS_SIZE; if (maxDataSize == 0) { maxDataSize = (int)byteArraySize; From 9a926abd7623d530376e6faabdc5f75cd76069fd Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 10 Jun 2019 20:27:03 -0700 Subject: [PATCH 036/106] Implement BUGZ-226: Forward keypresses made while Top Bar is in focus --- .../simplifiedUI/topBar/SimplifiedTopBar.qml | 12 +++++++++++- interface/src/ui/InteractiveWindow.cpp | 16 +++++++++++++++- interface/src/ui/InteractiveWindow.h | 3 +++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml index 36c882beb1..b1e2f7bcd2 100644 --- a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml +++ b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml @@ -18,6 +18,16 @@ import "qrc:////qml//hifi//models" as HifiModels // Absolute path so the same c Rectangle { id: root + focus: true + + signal keyPressEvent(int key, int modifiers) + Keys.onPressed: { + keyPressEvent(event.key, event.modifiers); + } + signal keyReleaseEvent(int key, int modifiers) + Keys.onReleased: { + keyReleaseEvent(event.key, event.modifiers); + } SimplifiedConstants.SimplifiedConstants { id: simplifiedUI @@ -455,5 +465,5 @@ Rectangle { break; } } - signal sendToScript(var message); + signal sendToScript(var message) } diff --git a/interface/src/ui/InteractiveWindow.cpp b/interface/src/ui/InteractiveWindow.cpp index 2fbb665c48..84d24ddeae 100644 --- a/interface/src/ui/InteractiveWindow.cpp +++ b/interface/src/ui/InteractiveWindow.cpp @@ -68,6 +68,16 @@ void interactiveWindowPointerFromScriptValue(const QScriptValue& object, Interac } } +void InteractiveWindow::forwardKeyPressEvent(int key, int modifiers) { + QKeyEvent* event = new QKeyEvent(QEvent::KeyPress, key, static_cast(modifiers)); + QCoreApplication::postEvent(QCoreApplication::instance(), event); +} + +void InteractiveWindow::forwardKeyReleaseEvent(int key, int modifiers) { + QKeyEvent* event = new QKeyEvent(QEvent::KeyRelease, key, static_cast(modifiers)); + QCoreApplication::postEvent(QCoreApplication::instance(), event); +} + /**jsdoc * A set of properties used when creating an InteractiveWindow. * @typedef {object} InteractiveWindow.Properties @@ -152,12 +162,16 @@ InteractiveWindow::InteractiveWindow(const QString& sourceUrl, const QVariantMap _dockWidget->getQuickView()->rootContext()->setContextProperty(EVENT_BRIDGE_PROPERTY, this); QObject::connect(rootItem, SIGNAL(sendToScript(QVariant)), this, SLOT(qmlToScript(const QVariant&)), Qt::QueuedConnection); + QObject::connect(rootItem, SIGNAL(keyPressEvent(int, int)), this, SLOT(forwardKeyPressEvent(int, int)), + Qt::QueuedConnection); + QObject::connect(rootItem, SIGNAL(keyReleaseEvent(int, int)), this, SLOT(forwardKeyReleaseEvent(int, int)), + Qt::QueuedConnection); emit mainWindow->windowGeometryChanged(qApp->getWindow()->geometry()); } }); + _dockWidget->setSource(QUrl(sourceUrl)); - mainWindow->addDockWidget(dockArea, _dockWidget.get()); } else { auto offscreenUi = DependencyManager::get(); diff --git a/interface/src/ui/InteractiveWindow.h b/interface/src/ui/InteractiveWindow.h index fd0a3376fb..c7b3631dde 100644 --- a/interface/src/ui/InteractiveWindow.h +++ b/interface/src/ui/InteractiveWindow.h @@ -287,6 +287,9 @@ protected slots: */ void qmlToScript(const QVariant& message); + void forwardKeyPressEvent(int key, int modifiers); + void forwardKeyReleaseEvent(int key, int modifiers); + private: QPointer _qmlWindow; std::shared_ptr _dockWidget { nullptr }; From 01fab1294296ca455cfab124dadfb8644e47b297 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Tue, 11 Jun 2019 09:18:20 -0700 Subject: [PATCH 037/106] fixing interface and laucnher script argument --- interface/src/Application.cpp | 2 +- launchers/darwin/src/Launcher.m | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9ce2b0cb2e..0dea94c93e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5611,7 +5611,7 @@ void Application::resumeAfterLoginDialogActionTaken() { scriptEngines->reloadLocalFiles(); // if the --scripts command-line argument was used. - if (!_defaultScriptsLocation.exists() && (arguments().indexOf(QString("--").append(SCRIPTS_SWITCH))) != -1) { + if (_defaultScriptsLocation.exists() && (arguments().indexOf(QString("--").append(SCRIPTS_SWITCH))) != -1) { scriptEngines->loadDefaultScripts(); scriptEngines->defaultScriptsLocationOverridden(true); } else { diff --git a/launchers/darwin/src/Launcher.m b/launchers/darwin/src/Launcher.m index 3ab4379e7a..f586269864 100644 --- a/launchers/darwin/src/Launcher.m +++ b/launchers/darwin/src/Launcher.m @@ -343,14 +343,14 @@ static BOOL const DELETE_ZIP_FILES = TRUE; @"--tokens", userToken, @"--cache", contentPath, @"--displayName", displayName, - @"--script", scriptsPath, + @"--scripts", scriptsPath, @"--no-updater", @"--no-launcher", nil]; } else { arguments = [NSArray arrayWithObjects: @"--url" , domainUrl, @"--cache", contentPath, - @"--script", scriptsPath, + @"--scripts", scriptsPath, @"--no-updater", @"--no-launcher", nil]; } From c02df55186fd3dc3354690c6f4b4d0a9ee65db70 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Tue, 11 Jun 2019 09:24:27 -0700 Subject: [PATCH 038/106] Load simplifiedUI using the windows launcher and tabs to spaces --- launchers/win32/LauncherApp.cpp | 90 +-- launchers/win32/LauncherApp.h | 16 +- launchers/win32/LauncherDlg.cpp | 828 ++++++++++++++-------------- launchers/win32/LauncherDlg.h | 160 +++--- launchers/win32/LauncherManager.cpp | 627 ++++++++++----------- launchers/win32/LauncherManager.h | 156 +++--- launchers/win32/LauncherUtils.cpp | 622 ++++++++++----------- launchers/win32/LauncherUtils.h | 102 ++-- launchers/win32/res/button.png | Bin 17324 -> 0 bytes 9 files changed, 1302 insertions(+), 1299 deletions(-) delete mode 100644 launchers/win32/res/button.png diff --git a/launchers/win32/LauncherApp.cpp b/launchers/win32/LauncherApp.cpp index a8c69de166..4ed20fea13 100644 --- a/launchers/win32/LauncherApp.cpp +++ b/launchers/win32/LauncherApp.cpp @@ -20,7 +20,7 @@ // CLauncherApp BEGIN_MESSAGE_MAP(CLauncherApp, CWinApp) - ON_COMMAND(ID_HELP, &CWinApp::OnHelp) + ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() CLauncherApp::CLauncherApp(){} @@ -32,60 +32,60 @@ CLauncherApp theApp; // CLauncherApp initialization BOOL CLauncherApp::InitInstance() { - // don't launch if already running - CreateMutex(NULL, TRUE, _T("HQ_Launcher_Mutex")); - if (GetLastError() == ERROR_ALREADY_EXISTS) { - return FALSE; - } - int iNumOfArgs; - LPWSTR* pArgs = CommandLineToArgvW(GetCommandLine(), &iNumOfArgs); - if (iNumOfArgs > 1 && CString(pArgs[1]).Compare(_T("--uninstall")) == 0) { - _manager.uninstall(); - } else { - _manager.init(); - } - if (!_manager.installLauncher()) { - return FALSE; - } - installFont(IDR_FONT_REGULAR); - installFont(IDR_FONT_BOLD); - CWinApp::InitInstance(); + // don't launch if already running + CreateMutex(NULL, TRUE, _T("HQ_Launcher_Mutex")); + if (GetLastError() == ERROR_ALREADY_EXISTS) { + return FALSE; + } + int iNumOfArgs; + LPWSTR* pArgs = CommandLineToArgvW(GetCommandLine(), &iNumOfArgs); + if (iNumOfArgs > 1 && CString(pArgs[1]).Compare(_T("--uninstall")) == 0) { + _manager.uninstall(); + } else { + _manager.init(); + } + if (!_manager.installLauncher()) { + return FALSE; + } + installFont(IDR_FONT_REGULAR); + installFont(IDR_FONT_BOLD); + CWinApp::InitInstance(); - SetRegistryKey(_T("HQ High Fidelity")); + SetRegistryKey(_T("HQ High Fidelity")); - CLauncherDlg dlg; - m_pMainWnd = &dlg; - INT_PTR nResponse = dlg.DoModal(); + CLauncherDlg dlg; + m_pMainWnd = &dlg; + INT_PTR nResponse = dlg.DoModal(); #if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) - ControlBarCleanUp(); + ControlBarCleanUp(); #endif - - // Since the dialog has been closed, return FALSE so that we exit the - // application, rather than start the application's message pump. - return FALSE; + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; } BOOL CLauncherApp::installFont(int fontID) { - HINSTANCE hResInstance = AfxGetResourceHandle(); - HRSRC res = FindResource(hResInstance, - MAKEINTRESOURCE(fontID), L"BINARY"); - if (res) { - HGLOBAL mem = LoadResource(hResInstance, res); - void *data = LockResource(mem); - DWORD len = (DWORD)SizeofResource(hResInstance, res); + HINSTANCE hResInstance = AfxGetResourceHandle(); + HRSRC res = FindResource(hResInstance, + MAKEINTRESOURCE(fontID), L"BINARY"); + if (res) { + HGLOBAL mem = LoadResource(hResInstance, res); + void *data = LockResource(mem); + DWORD len = (DWORD)SizeofResource(hResInstance, res); - DWORD nFonts; - auto m_fonthandle = AddFontMemResourceEx( - data, // font resource - len, // number of bytes in font resource - NULL, // Reserved. Must be 0. - &nFonts // number of fonts installed - ); + DWORD nFonts; + auto m_fonthandle = AddFontMemResourceEx( + data, // font resource + len, // number of bytes in font resource + NULL, // Reserved. Must be 0. + &nFonts // number of fonts installed + ); - return (m_fonthandle != 0); - } - return FALSE; + return (m_fonthandle != 0); + } + return FALSE; } diff --git a/launchers/win32/LauncherApp.h b/launchers/win32/LauncherApp.h index 8232acb249..a1aa2073b7 100644 --- a/launchers/win32/LauncherApp.h +++ b/launchers/win32/LauncherApp.h @@ -11,22 +11,22 @@ #pragma once #ifndef __AFXWIN_H__ - #error "include 'stdafx.h' before including this file for PCH" + #error "include 'stdafx.h' before including this file for PCH" #endif -#include "resource.h" // main symbols +#include "resource.h" // main symbols #include "LauncherManager.h" class CLauncherApp : public CWinApp { public: - CLauncherApp(); - virtual BOOL InitInstance(); - void setDialogOnFront() { SetWindowPos(m_pMainWnd->GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE); } - LauncherManager _manager; + CLauncherApp(); + virtual BOOL InitInstance(); + void setDialogOnFront() { SetWindowPos(m_pMainWnd->GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE); } + LauncherManager _manager; private: - BOOL installFont(int fontID); - DECLARE_MESSAGE_MAP() + BOOL installFont(int fontID); + DECLARE_MESSAGE_MAP() }; extern CLauncherApp theApp; diff --git a/launchers/win32/LauncherDlg.cpp b/launchers/win32/LauncherDlg.cpp index d2d149348e..abf53b46b5 100644 --- a/launchers/win32/LauncherDlg.cpp +++ b/launchers/win32/LauncherDlg.cpp @@ -40,10 +40,10 @@ static CString TROUBLE_URL = _T("https://www.highfidelity.com/hq-support"); CLauncherDlg::CLauncherDlg(CWnd* pParent) - : CDialog(IDD_LAUNCHER_DIALOG, pParent) + : CDialog(IDD_LAUNCHER_DIALOG, pParent) { - m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); - EnableD2DSupport(); + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); + EnableD2DSupport(); } CLauncherDlg::~CLauncherDlg() { @@ -52,109 +52,109 @@ CLauncherDlg::~CLauncherDlg() { void CLauncherDlg::DoDataExchange(CDataExchange* pDX) { - DDX_Control(pDX, IDC_BUTTON_NEXT, m_btnNext); - DDX_Control(pDX, IDC_TROUBLE_LINK, m_trouble_link); - DDX_Control(pDX, IDC_ORGNAME, m_orgname); - DDX_Control(pDX, IDC_USERNAME, m_username); - DDX_Control(pDX, IDC_PASSWORD, m_password); - CDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_BUTTON_NEXT, m_btnNext); + DDX_Control(pDX, IDC_TROUBLE_LINK, m_trouble_link); + DDX_Control(pDX, IDC_ORGNAME, m_orgname); + DDX_Control(pDX, IDC_USERNAME, m_username); + DDX_Control(pDX, IDC_PASSWORD, m_password); + CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CLauncherDlg, CDialog) - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_WM_TIMER() - ON_EN_SETFOCUS(IDC_ORGNAME, &CLauncherDlg::OnOrgEditChangeFocus) - ON_EN_SETFOCUS(IDC_USERNAME, &CLauncherDlg::OnUserEditChangeFocus) - ON_EN_SETFOCUS(IDC_PASSWORD, &CLauncherDlg::OnPassEditChangeFocus) - ON_BN_CLICKED(IDC_BUTTON_NEXT, &CLauncherDlg::OnNextClicked) - ON_BN_CLICKED(IDC_TROUBLE_LINK, &CLauncherDlg::OnTroubleClicked) - ON_WM_CTLCOLOR() - ON_WM_DRAWITEM() - ON_WM_SETCURSOR() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_WM_TIMER() + ON_EN_SETFOCUS(IDC_ORGNAME, &CLauncherDlg::OnOrgEditChangeFocus) + ON_EN_SETFOCUS(IDC_USERNAME, &CLauncherDlg::OnUserEditChangeFocus) + ON_EN_SETFOCUS(IDC_PASSWORD, &CLauncherDlg::OnPassEditChangeFocus) + ON_BN_CLICKED(IDC_BUTTON_NEXT, &CLauncherDlg::OnNextClicked) + ON_BN_CLICKED(IDC_TROUBLE_LINK, &CLauncherDlg::OnTroubleClicked) + ON_WM_CTLCOLOR() + ON_WM_DRAWITEM() + ON_WM_SETCURSOR() END_MESSAGE_MAP() // CLauncherDlg message handlers BOOL CLauncherDlg::OnInitDialog() { - CDialog::OnInitDialog(); + CDialog::OnInitDialog(); - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon - CFont editFont; - if (LauncherUtils::getFont(GRAPHIK_REGULAR, FIELDS_FONT_SIZE, true, editFont)) { - m_orgname.SetFont(&editFont); - m_username.SetFont(&editFont); - m_password.SetFont(&editFont); - } - CFont buttonFont; - if (LauncherUtils::getFont(_T("Graphik-Bold"), BUTTON_FONT_SIZE, true, buttonFont)) { - m_btnNext.SetFont(&editFont); - } + CFont editFont; + if (LauncherUtils::getFont(GRAPHIK_REGULAR, FIELDS_FONT_SIZE, true, editFont)) { + m_orgname.SetFont(&editFont); + m_username.SetFont(&editFont); + m_password.SetFont(&editFont); + } + CFont buttonFont; + if (LauncherUtils::getFont(_T("Graphik-Bold"), BUTTON_FONT_SIZE, true, buttonFont)) { + m_btnNext.SetFont(&editFont); + } - m_message_label = (CStatic *)GetDlgItem(IDC_MESSAGE_LABEL); - m_action_label = (CStatic *)GetDlgItem(IDC_ACTION_LABEL); - m_message2_label = (CStatic *)GetDlgItem(IDC_MESSAGE2_LABEL); - m_action2_label = (CStatic *)GetDlgItem(IDC_ACTION2_LABEL); + m_message_label = (CStatic *)GetDlgItem(IDC_MESSAGE_LABEL); + m_action_label = (CStatic *)GetDlgItem(IDC_ACTION_LABEL); + m_message2_label = (CStatic *)GetDlgItem(IDC_MESSAGE2_LABEL); + m_action2_label = (CStatic *)GetDlgItem(IDC_ACTION2_LABEL); - m_orgname_banner = (CStatic *)GetDlgItem(IDC_ORGNAME_BANNER); - m_username_banner = (CStatic *)GetDlgItem(IDC_USERNAME_BANNER); - m_password_banner = (CStatic *)GetDlgItem(IDC_PASSWORD_BANNER); + m_orgname_banner = (CStatic *)GetDlgItem(IDC_ORGNAME_BANNER); + m_username_banner = (CStatic *)GetDlgItem(IDC_USERNAME_BANNER); + m_password_banner = (CStatic *)GetDlgItem(IDC_PASSWORD_BANNER); - m_terms = (CStatic *)GetDlgItem(IDC_TERMS); - m_terms2 = (CStatic *)GetDlgItem(IDC_TERMS2); - m_trouble = (CStatic *)GetDlgItem(IDC_TROUBLE); + m_terms = (CStatic *)GetDlgItem(IDC_TERMS); + m_terms2 = (CStatic *)GetDlgItem(IDC_TERMS2); + m_trouble = (CStatic *)GetDlgItem(IDC_TROUBLE); - m_voxel = (CStatic *)GetDlgItem(IDC_VOXEL); + m_voxel = (CStatic *)GetDlgItem(IDC_VOXEL); - m_voxel->EnableD2DSupport(); + m_voxel->EnableD2DSupport(); - m_pRenderTarget = GetRenderTarget(); + m_pRenderTarget = GetRenderTarget(); - SetTimer(1, 2, NULL); - - return TRUE; + SetTimer(1, 2, NULL); + + return TRUE; } BOOL CLauncherDlg::PreTranslateMessage(MSG* pMsg) { - if ((pMsg->message == WM_KEYDOWN)) - { - if (pMsg->wParam == VK_RETURN) - { - OnNextClicked(); - return TRUE; - } - } - return CDialog::PreTranslateMessage(pMsg); + if ((pMsg->message == WM_KEYDOWN)) + { + if (pMsg->wParam == VK_RETURN) + { + OnNextClicked(); + return TRUE; + } + } + return CDialog::PreTranslateMessage(pMsg); } void CLauncherDlg::setCustomDialog() { - - LONG lStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE); - lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU); - SetWindowLong(GetSafeHwnd(), GWL_STYLE, lStyle); + + LONG lStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE); + lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU); + SetWindowLong(GetSafeHwnd(), GWL_STYLE, lStyle); - LONG lExStyle = GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE); - lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE); - SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, lExStyle); + LONG lExStyle = GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE); + lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE); + SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, lExStyle); - SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); - // theApp.setDialogOnFront(); + SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); + // theApp.setDialogOnFront(); } void CLauncherDlg::OnPaint() { - CPaintDC dc(this); - setCustomDialog(); - CDialog::OnPaint(); + CPaintDC dc(this); + setCustomDialog(); + CDialog::OnPaint(); } // The system calls this function to obtain the cursor to display while the user drags // the minimized window. HCURSOR CLauncherDlg::OnQueryDragIcon() { - return static_cast(m_hIcon); + return static_cast(m_hIcon); } void CLauncherDlg::startProcess() { @@ -202,15 +202,15 @@ void CLauncherDlg::startProcess() { } BOOL CLauncherDlg::getHQInfo(const CString& orgname) { - CString hash; + CString hash; CString lowerOrgName = orgname; lowerOrgName.MakeLower(); LauncherUtils::hMac256(lowerOrgName, LAUNCHER_HMAC_SECRET, hash); - return theApp._manager.readOrganizationJSON(hash) == LauncherUtils::ResponseError::NoError; + return theApp._manager.readOrganizationJSON(hash) == LauncherUtils::ResponseError::NoError; } afx_msg void CLauncherDlg::OnTroubleClicked() { - ShellExecute(0, NULL, TROUBLE_URL, NULL, NULL, SW_SHOWDEFAULT); + ShellExecute(0, NULL, TROUBLE_URL, NULL, NULL, SW_SHOWDEFAULT); } afx_msg void CLauncherDlg::OnNextClicked() { @@ -255,414 +255,414 @@ afx_msg void CLauncherDlg::OnNextClicked() { } void CLauncherDlg::drawBackground(CHwndRenderTarget* pRenderTarget) { - CD2DBitmap m_pBitmamBackground(pRenderTarget, IDB_PNG1, _T("PNG")); - auto size = pRenderTarget->GetSize(); - CD2DRectF backRec(0.0f, 0.0f, size.width, size.height); - pRenderTarget->DrawBitmap(&m_pBitmamBackground, backRec); + CD2DBitmap m_pBitmamBackground(pRenderTarget, IDB_PNG1, _T("PNG")); + auto size = pRenderTarget->GetSize(); + CD2DRectF backRec(0.0f, 0.0f, size.width, size.height); + pRenderTarget->DrawBitmap(&m_pBitmamBackground, backRec); } void CLauncherDlg::drawLogo(CHwndRenderTarget* pRenderTarget) { - CD2DBitmap m_pBitmamLogo(pRenderTarget, IDB_PNG2, _T("PNG")); - auto size = pRenderTarget->GetSize(); - int logoWidth = 231; - int logoHeight = 181; - float logoPosX = 0.5f * (size.width - logoWidth); - float logoPosY = 0.95f * (size.height - logoHeight); - CD2DRectF logoRec(logoPosX, logoPosY, logoPosX + logoWidth, logoPosY + logoHeight); - pRenderTarget->DrawBitmap(&m_pBitmamLogo, logoRec); + CD2DBitmap m_pBitmamLogo(pRenderTarget, IDB_PNG2, _T("PNG")); + auto size = pRenderTarget->GetSize(); + int logoWidth = 231; + int logoHeight = 181; + float logoPosX = 0.5f * (size.width - logoWidth); + float logoPosY = 0.95f * (size.height - logoHeight); + CD2DRectF logoRec(logoPosX, logoPosY, logoPosX + logoWidth, logoPosY + logoHeight); + pRenderTarget->DrawBitmap(&m_pBitmamLogo, logoRec); } void CLauncherDlg::drawSmallLogo(CHwndRenderTarget* pRenderTarget) { - CD2DBitmap m_pBitmamLogo(pRenderTarget, IDB_PNG5, _T("PNG")); - auto size = pRenderTarget->GetSize(); - int padding = 6; - int logoWidth = 100; - int logoHeight = 18; - float logoPosX = size.width - logoWidth - padding; - float logoPosY = size.height - logoHeight - padding; - CD2DRectF logoRec(logoPosX, logoPosY, logoPosX + logoWidth, logoPosY + logoHeight); - pRenderTarget->DrawBitmap(&m_pBitmamLogo, logoRec); + CD2DBitmap m_pBitmamLogo(pRenderTarget, IDB_PNG5, _T("PNG")); + auto size = pRenderTarget->GetSize(); + int padding = 6; + int logoWidth = 100; + int logoHeight = 18; + float logoPosX = size.width - logoWidth - padding; + float logoPosY = size.height - logoHeight - padding; + CD2DRectF logoRec(logoPosX, logoPosY, logoPosX + logoWidth, logoPosY + logoHeight); + pRenderTarget->DrawBitmap(&m_pBitmamLogo, logoRec); } void CLauncherDlg::drawVoxel(CHwndRenderTarget* pRenderTarget) { - CD2DBitmap m_pBitmamVoxel(pRenderTarget, IDB_PNG4, _T("PNG")); - auto size = pRenderTarget->GetSize(); - int logoWidth = 132; - int logoHeight = 134; - float voxelPosX = 0.5f * (size.width - logoWidth); - float voxelPosY = 0.5f * (size.height - logoHeight); - CD2DRectF voxelRec(voxelPosX, voxelPosY, voxelPosX + logoWidth, voxelPosY + logoHeight); - auto midPoint = D2D1::Point2F(0.5f * size.width, 0.5f * size.height); - _logoRotation += 2.0f; - CD2DSolidColorBrush brush(pRenderTarget, D2D1::ColorF(0.0f, 0.0f, 0.0f)); - pRenderTarget->SetTransform(D2D1::Matrix3x2F::Rotation(_logoRotation - 2.0f, midPoint)); - pRenderTarget->FillRectangle(voxelRec, &brush); - pRenderTarget->SetTransform(D2D1::Matrix3x2F::Rotation(_logoRotation, midPoint)); - pRenderTarget->DrawBitmap(&m_pBitmamVoxel, voxelRec); - pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); + CD2DBitmap m_pBitmamVoxel(pRenderTarget, IDB_PNG4, _T("PNG")); + auto size = pRenderTarget->GetSize(); + int logoWidth = 132; + int logoHeight = 134; + float voxelPosX = 0.5f * (size.width - logoWidth); + float voxelPosY = 0.5f * (size.height - logoHeight); + CD2DRectF voxelRec(voxelPosX, voxelPosY, voxelPosX + logoWidth, voxelPosY + logoHeight); + auto midPoint = D2D1::Point2F(0.5f * size.width, 0.5f * size.height); + _logoRotation += 2.0f; + CD2DSolidColorBrush brush(pRenderTarget, D2D1::ColorF(0.0f, 0.0f, 0.0f)); + pRenderTarget->SetTransform(D2D1::Matrix3x2F::Rotation(_logoRotation - 2.0f, midPoint)); + pRenderTarget->FillRectangle(voxelRec, &brush); + pRenderTarget->SetTransform(D2D1::Matrix3x2F::Rotation(_logoRotation, midPoint)); + pRenderTarget->DrawBitmap(&m_pBitmamVoxel, voxelRec); + pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); } void CLauncherDlg::showWindows(std::vector windows, bool show) { - for (auto window : windows) { - window->ShowWindow(show ? SW_SHOW : SW_HIDE); - } + for (auto window : windows) { + window->ShowWindow(show ? SW_SHOW : SW_HIDE); + } } void CLauncherDlg::prepareLogin(DrawStep step) { - m_voxel->ShowWindow(SW_HIDE); - m_orgname_banner->SetWindowTextW(_T("Organization Name")); - m_username_banner->SetWindowTextW(_T("Username")); - m_password_banner->SetWindowTextW(_T("Password")); - CString editText; - m_orgname.GetWindowTextW(editText); - m_orgname_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); - m_username.GetWindowTextW(editText); - m_username_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); - m_password.GetWindowTextW(editText); - m_password_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); - m_orgname.ShowWindow(SW_SHOW); - m_username.ShowWindow(SW_SHOW); - m_password.ShowWindow(SW_SHOW); - CString actionText = step == DrawStep::DrawLoginLogin ? _T("Please log in") : _T("Uh-oh, we have a problem"); - CString messageText = step == DrawStep::DrawLoginLogin ? _T("Be sure you've uploaded your Avatar before signing in.") : - step == DrawStep::DrawLoginErrorCred ? _T("There is a problem with your credentials\n please try again.") : _T("There is a problem with your Organization name\n please try again."); - m_action_label->SetWindowTextW(actionText); - m_message_label->SetWindowTextW(messageText); - m_action_label->ShowWindow(SW_SHOW); - m_message_label->ShowWindow(SW_SHOW); - m_btnNext.ShowWindow(SW_SHOW); - m_trouble->SetWindowTextW(_T("Having Trouble?")); - m_trouble->ShowWindow(SW_SHOW); - m_trouble_link.ShowWindow(SW_SHOW); - + m_voxel->ShowWindow(SW_HIDE); + m_orgname_banner->SetWindowTextW(_T("Organization Name")); + m_username_banner->SetWindowTextW(_T("Username")); + m_password_banner->SetWindowTextW(_T("Password")); + CString editText; + m_orgname.GetWindowTextW(editText); + m_orgname_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); + m_username.GetWindowTextW(editText); + m_username_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); + m_password.GetWindowTextW(editText); + m_password_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); + m_orgname.ShowWindow(SW_SHOW); + m_username.ShowWindow(SW_SHOW); + m_password.ShowWindow(SW_SHOW); + CString actionText = step == DrawStep::DrawLoginLogin ? _T("Please log in") : _T("Uh-oh, we have a problem"); + CString messageText = step == DrawStep::DrawLoginLogin ? _T("Be sure you've uploaded your Avatar before signing in.") : + step == DrawStep::DrawLoginErrorCred ? _T("There is a problem with your credentials\n please try again.") : _T("There is a problem with your Organization name\n please try again."); + m_action_label->SetWindowTextW(actionText); + m_message_label->SetWindowTextW(messageText); + m_action_label->ShowWindow(SW_SHOW); + m_message_label->ShowWindow(SW_SHOW); + m_btnNext.ShowWindow(SW_SHOW); + m_trouble->SetWindowTextW(_T("Having Trouble?")); + m_trouble->ShowWindow(SW_SHOW); + m_trouble_link.ShowWindow(SW_SHOW); + } void CLauncherDlg::prepareChoose() { - m_orgname.ShowWindow(SW_HIDE); - m_username.SetWindowTextW(_T("")); - m_username_banner->SetWindowTextW(_T("Display Name")); - CString editText; - m_username.GetWindowTextW(editText); - m_username_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); - m_password.ShowWindow(SW_HIDE); - m_orgname_banner->ShowWindow(SW_HIDE); - m_password_banner->ShowWindow(SW_HIDE); - m_action_label->SetWindowTextW(_T("Choose a display name")); - m_message_label->SetWindowTextW(_T("This is the name that your teammates will see.")); - m_terms->ShowWindow(SW_SHOW); - m_terms2->ShowWindow(SW_SHOW); - m_terms->SetWindowTextW(_T("By signing in, you agree to the High Fidelity")); - m_terms2->SetWindowTextW(_T("Terms of Service")); - CRect rec; - m_btnNext.GetWindowRect(&rec); - ScreenToClient(&rec); - if (rec.top > 281) { - rec.bottom -= 35; - rec.top -= 35; - m_btnNext.MoveWindow(rec, FALSE); - } - m_btnNext.ShowWindow(SW_SHOW); + m_orgname.ShowWindow(SW_HIDE); + m_username.SetWindowTextW(_T("")); + m_username_banner->SetWindowTextW(_T("Display Name")); + CString editText; + m_username.GetWindowTextW(editText); + m_username_banner->ShowWindow(editText.GetLength() == 0 ? SW_SHOW : SW_HIDE); + m_password.ShowWindow(SW_HIDE); + m_orgname_banner->ShowWindow(SW_HIDE); + m_password_banner->ShowWindow(SW_HIDE); + m_action_label->SetWindowTextW(_T("Choose a display name")); + m_message_label->SetWindowTextW(_T("This is the name that your teammates will see.")); + m_terms->ShowWindow(SW_SHOW); + m_terms2->ShowWindow(SW_SHOW); + m_terms->SetWindowTextW(_T("By signing in, you agree to the High Fidelity")); + m_terms2->SetWindowTextW(_T("Terms of Service")); + CRect rec; + m_btnNext.GetWindowRect(&rec); + ScreenToClient(&rec); + if (rec.top > 281) { + rec.bottom -= 35; + rec.top -= 35; + m_btnNext.MoveWindow(rec, FALSE); + } + m_btnNext.ShowWindow(SW_SHOW); } void CLauncherDlg::prepareProcess(DrawStep step) { - m_trouble->ShowWindow(SW_HIDE); - m_trouble_link.ShowWindow(SW_HIDE); - m_terms->ShowWindow(SW_HIDE); - m_terms2->ShowWindow(SW_HIDE); - m_orgname_banner->ShowWindow(SW_HIDE); - m_username_banner->ShowWindow(SW_HIDE); - m_password_banner->ShowWindow(SW_HIDE); - m_orgname.ShowWindow(SW_HIDE); - m_username.ShowWindow(SW_HIDE); - m_password.ShowWindow(SW_HIDE); - m_action_label->SetWindowTextW(_T("")); - m_message_label->SetWindowTextW(_T("")); - m_btnNext.ShowWindow(SW_HIDE); - m_action_label->ShowWindow(SW_HIDE); - m_message_label->ShowWindow(SW_HIDE); - m_voxel->ShowWindow(SW_SHOW); - CString actionText = _T(""); - CString messageText = _T(""); - switch (step) { - case DrawStep::DrawProcessSetup: - actionText = _T("We're building your virtual HQ"); - messageText = _T("Set up may take several minutes."); - break; - case DrawStep::DrawProcessUpdate: - actionText = _T("Getting updates..."); - messageText = _T("We're getting the latest and greatest for you, one sec."); - break; - case DrawStep::DrawProcessFinishHq: - actionText = _T("Your new HQ is all setup"); - messageText = _T("Thanks for being patient."); - break; - case DrawStep::DrawProcessFinishUpdate: - actionText = _T("You're good to go!"); - messageText = _T("Thanks for being patient."); - break; - case DrawStep::DrawProcessUninstall: - actionText = _T("Uninstalling..."); - messageText = _T("It'll take one sec."); - break; - } - m_action2_label->SetWindowTextW(actionText); - m_message2_label->SetWindowTextW(messageText); - m_action2_label->ShowWindow(SW_SHOW); - m_message2_label->ShowWindow(SW_SHOW); + m_trouble->ShowWindow(SW_HIDE); + m_trouble_link.ShowWindow(SW_HIDE); + m_terms->ShowWindow(SW_HIDE); + m_terms2->ShowWindow(SW_HIDE); + m_orgname_banner->ShowWindow(SW_HIDE); + m_username_banner->ShowWindow(SW_HIDE); + m_password_banner->ShowWindow(SW_HIDE); + m_orgname.ShowWindow(SW_HIDE); + m_username.ShowWindow(SW_HIDE); + m_password.ShowWindow(SW_HIDE); + m_action_label->SetWindowTextW(_T("")); + m_message_label->SetWindowTextW(_T("")); + m_btnNext.ShowWindow(SW_HIDE); + m_action_label->ShowWindow(SW_HIDE); + m_message_label->ShowWindow(SW_HIDE); + m_voxel->ShowWindow(SW_SHOW); + CString actionText = _T(""); + CString messageText = _T(""); + switch (step) { + case DrawStep::DrawProcessSetup: + actionText = _T("We're building your virtual HQ"); + messageText = _T("Set up may take several minutes."); + break; + case DrawStep::DrawProcessUpdate: + actionText = _T("Getting updates..."); + messageText = _T("We're getting the latest and greatest for you, one sec."); + break; + case DrawStep::DrawProcessFinishHq: + actionText = _T("Your new HQ is all setup"); + messageText = _T("Thanks for being patient."); + break; + case DrawStep::DrawProcessFinishUpdate: + actionText = _T("You're good to go!"); + messageText = _T("Thanks for being patient."); + break; + case DrawStep::DrawProcessUninstall: + actionText = _T("Uninstalling..."); + messageText = _T("It'll take one sec."); + break; + } + m_action2_label->SetWindowTextW(actionText); + m_message2_label->SetWindowTextW(messageText); + m_action2_label->ShowWindow(SW_SHOW); + m_message2_label->ShowWindow(SW_SHOW); } void CLauncherDlg::prepareError() { } BOOL CLauncherDlg::getTextFormat(int resID, TextFormat& formatOut) { - // Set default values for message - BOOL isText = TRUE; - formatOut.color = COLOR_LIGHT_GREY; - formatOut.isBold = false; - formatOut.isButton = false; - formatOut.size = MESSAGE_FONT_SIZE; - formatOut.underlined = false; - - switch (resID) { - case IDC_VOXEL: - case IDD_LAUNCHER_DIALOG: - isText = FALSE; - case IDC_MESSAGE_LABEL: - case IDC_MESSAGE2_LABEL: - // Default values - break; - case IDC_ACTION_LABEL: - case IDC_ACTION2_LABEL: - formatOut.size = ACTION_FONT_SIZE; - formatOut.isBold = true; - formatOut.color = COLOR_LIGHTER_GREY; - break; - case IDC_USERNAME: - case IDC_PASSWORD: - case IDC_ORGNAME: - formatOut.color = COLOR_WHITE; - formatOut.size = FIELDS_FONT_SIZE; - formatOut.underlined = true; - break; - case IDC_USERNAME_BANNER: - case IDC_PASSWORD_BANNER: - case IDC_ORGNAME_BANNER: - formatOut.size = FIELDS_FONT_SIZE; - formatOut.color = COLOR_GREY; - break; - case IDC_TERMS: - formatOut.size = TERMS_FONT_SIZE; - break; - case IDC_TERMS2: - formatOut.size = TERMS_FONT_SIZE; - formatOut.isBold = true; - break; - case IDC_TROUBLE: - formatOut.size = TROUBLE_FONT_SIZE; - formatOut.color = COLOR_BLUE; - break; - } - return isText; + // Set default values for message + BOOL isText = TRUE; + formatOut.color = COLOR_LIGHT_GREY; + formatOut.isBold = false; + formatOut.isButton = false; + formatOut.size = MESSAGE_FONT_SIZE; + formatOut.underlined = false; + + switch (resID) { + case IDC_VOXEL: + case IDD_LAUNCHER_DIALOG: + isText = FALSE; + case IDC_MESSAGE_LABEL: + case IDC_MESSAGE2_LABEL: + // Default values + break; + case IDC_ACTION_LABEL: + case IDC_ACTION2_LABEL: + formatOut.size = ACTION_FONT_SIZE; + formatOut.isBold = true; + formatOut.color = COLOR_LIGHTER_GREY; + break; + case IDC_USERNAME: + case IDC_PASSWORD: + case IDC_ORGNAME: + formatOut.color = COLOR_WHITE; + formatOut.size = FIELDS_FONT_SIZE; + formatOut.underlined = true; + break; + case IDC_USERNAME_BANNER: + case IDC_PASSWORD_BANNER: + case IDC_ORGNAME_BANNER: + formatOut.size = FIELDS_FONT_SIZE; + formatOut.color = COLOR_GREY; + break; + case IDC_TERMS: + formatOut.size = TERMS_FONT_SIZE; + break; + case IDC_TERMS2: + formatOut.size = TERMS_FONT_SIZE; + formatOut.isBold = true; + break; + case IDC_TROUBLE: + formatOut.size = TROUBLE_FONT_SIZE; + formatOut.color = COLOR_BLUE; + break; + } + return isText; } HBRUSH CLauncherDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { - HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); - TextFormat textFormat; - int resId = pWnd->GetDlgCtrlID(); - if (getTextFormat(resId, textFormat)) { - pDC->SetTextColor(textFormat.color); - pDC->SetBkMode(TRANSPARENT); - CFont textFont; - CString fontFamily = textFormat.isBold ? GRAPHIK_SEMIBOLD : GRAPHIK_REGULAR; - if (LauncherUtils::getFont(fontFamily, textFormat.size, textFormat.isBold, textFont)) { - pDC->SelectObject(&textFont); - } - if (textFormat.underlined) { - CRect rect; - pWnd->GetClientRect(&rect); - int borderThick = 1; - int padding = 4; - CRect lineRect = CRect(rect.left + padding, rect.bottom, rect.right - padding, rect.bottom + borderThick); - lineRect.MoveToY(lineRect.bottom + 1); - pDC->FillSolidRect(lineRect, COLOR_GREY); - } - } - return (HBRUSH)GetStockObject(BLACK_BRUSH); + HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); + TextFormat textFormat; + int resId = pWnd->GetDlgCtrlID(); + if (getTextFormat(resId, textFormat)) { + pDC->SetTextColor(textFormat.color); + pDC->SetBkMode(TRANSPARENT); + CFont textFont; + CString fontFamily = textFormat.isBold ? GRAPHIK_SEMIBOLD : GRAPHIK_REGULAR; + if (LauncherUtils::getFont(fontFamily, textFormat.size, textFormat.isBold, textFont)) { + pDC->SelectObject(&textFont); + } + if (textFormat.underlined) { + CRect rect; + pWnd->GetClientRect(&rect); + int borderThick = 1; + int padding = 4; + CRect lineRect = CRect(rect.left + padding, rect.bottom, rect.right - padding, rect.bottom + borderThick); + lineRect.MoveToY(lineRect.bottom + 1); + pDC->FillSolidRect(lineRect, COLOR_GREY); + } + } + return (HBRUSH)GetStockObject(BLACK_BRUSH); } void CLauncherDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { - CDC dc; - dc.Attach(lpDrawItemStruct->hDC); - CRect rect = lpDrawItemStruct->rcItem; - CRect defrect = rect; - CString btnName = _T(""); - int xpan = 0; - if (nIDCtl == IDC_BUTTON_NEXT) { - if (_drawStep == DrawStep::DrawChoose || _drawStep == DrawStep::DrawLoginLogin) { - btnName += _drawStep == DrawStep::DrawLoginLogin ? _T("NEXT") : _T("LOG IN"); - int xpan = -20; - defrect = CRect(rect.left - xpan, rect.top, rect.right + xpan, rect.bottom); - } else { - btnName += _T("TRY AGAIN"); - } - int borderThick = 2; - dc.FillSolidRect(rect, COLOR_BLACK); - dc.FillSolidRect(defrect, COLOR_WHITE); - defrect.DeflateRect(borderThick, borderThick, borderThick, borderThick); - dc.FillSolidRect(defrect, COLOR_BLACK); - UINT state = lpDrawItemStruct->itemState; - dc.SetTextColor(COLOR_WHITE); + CDC dc; + dc.Attach(lpDrawItemStruct->hDC); + CRect rect = lpDrawItemStruct->rcItem; + CRect defrect = rect; + CString btnName = _T(""); + int xpan = 0; + if (nIDCtl == IDC_BUTTON_NEXT) { + if (_drawStep == DrawStep::DrawChoose || _drawStep == DrawStep::DrawLoginLogin) { + btnName += _drawStep == DrawStep::DrawLoginLogin ? _T("NEXT") : _T("LOG IN"); + int xpan = -20; + defrect = CRect(rect.left - xpan, rect.top, rect.right + xpan, rect.bottom); + } else { + btnName += _T("TRY AGAIN"); + } + int borderThick = 2; + dc.FillSolidRect(rect, COLOR_BLACK); + dc.FillSolidRect(defrect, COLOR_WHITE); + defrect.DeflateRect(borderThick, borderThick, borderThick, borderThick); + dc.FillSolidRect(defrect, COLOR_BLACK); + UINT state = lpDrawItemStruct->itemState; + dc.SetTextColor(COLOR_WHITE); - CFont buttonFont; - if (LauncherUtils::getFont(GRAPHIK_SEMIBOLD, BUTTON_FONT_SIZE, true, buttonFont)) { - dc.SelectObject(buttonFont); - } - dc.DrawText(btnName, CRect(rect.left, rect.top + 4, rect.right, rect.bottom - 8), DT_CENTER | DT_VCENTER | DT_SINGLELINE); - dc.Detach(); - } else if (nIDCtl == IDC_TROUBLE_LINK) { - dc.FillSolidRect(rect, COLOR_BLACK); - dc.SetTextColor(COLOR_BLUE); - CFont buttonFont; - if (LauncherUtils::getFont(GRAPHIK_SEMIBOLD, TROUBLE_FONT_SIZE, true, buttonFont)) { - dc.SelectObject(buttonFont); - } - dc.DrawText(_T("Having Trouble"), CRect(rect.left, rect.top, rect.right, rect.bottom), DT_CENTER | DT_VCENTER | DT_SINGLELINE); - } + CFont buttonFont; + if (LauncherUtils::getFont(GRAPHIK_SEMIBOLD, BUTTON_FONT_SIZE, true, buttonFont)) { + dc.SelectObject(buttonFont); + } + dc.DrawText(btnName, CRect(rect.left, rect.top + 4, rect.right, rect.bottom - 8), DT_CENTER | DT_VCENTER | DT_SINGLELINE); + dc.Detach(); + } else if (nIDCtl == IDC_TROUBLE_LINK) { + dc.FillSolidRect(rect, COLOR_BLACK); + dc.SetTextColor(COLOR_BLUE); + CFont buttonFont; + if (LauncherUtils::getFont(GRAPHIK_SEMIBOLD, TROUBLE_FONT_SIZE, true, buttonFont)) { + dc.SelectObject(buttonFont); + } + dc.DrawText(_T("Having Trouble"), CRect(rect.left, rect.top, rect.right, rect.bottom), DT_CENTER | DT_VCENTER | DT_SINGLELINE); + } } void CLauncherDlg::redrawBanner(const CEdit& edit, CStatic* banner) { - CString editText; - edit.GetWindowTextW(editText); - if (editText.GetLength() == 0) { - banner->Invalidate(); - } + CString editText; + edit.GetWindowTextW(editText); + if (editText.GetLength() == 0) { + banner->Invalidate(); + } } void CLauncherDlg::OnOrgEditChangeFocus() { - redrawBanner(m_username, m_username_banner); - redrawBanner(m_password, m_password_banner); + redrawBanner(m_username, m_username_banner); + redrawBanner(m_password, m_password_banner); } void CLauncherDlg::OnUserEditChangeFocus() { - redrawBanner(m_orgname, m_orgname_banner); - redrawBanner(m_password, m_password_banner); + redrawBanner(m_orgname, m_orgname_banner); + redrawBanner(m_password, m_password_banner); } void CLauncherDlg::OnPassEditChangeFocus() { - redrawBanner(m_orgname, m_orgname_banner); - redrawBanner(m_username, m_username_banner); + redrawBanner(m_orgname, m_orgname_banner); + redrawBanner(m_username, m_username_banner); } BOOL CLauncherDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { - if (pWnd->IsKindOf(RUNTIME_CLASS(CButton))) { - ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HAND)); - return TRUE; - } - return CDialog::OnSetCursor(pWnd, nHitTest, message); + if (pWnd->IsKindOf(RUNTIME_CLASS(CButton))) { + ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HAND)); + return TRUE; + } + return CDialog::OnSetCursor(pWnd, nHitTest, message); } void CLauncherDlg::OnTimer(UINT_PTR nIDEvent) { - const int CONSOLE_MAX_SHUTDOWN_TRY_COUNT = 10; - const int CONSOLE_DELTATIME_BETWEEN_TRYS = 10; - if (_drawStep == DrawStep::DrawProcessSetup || - _drawStep == DrawStep::DrawProcessUpdate || - _drawStep == DrawStep::DrawProcessUninstall) { - // Refresh - setDrawDialog(_drawStep, true); - } - if (_showSplash) { - if (_splashStep == 0){ + const int CONSOLE_MAX_SHUTDOWN_TRY_COUNT = 10; + const int CONSOLE_DELTATIME_BETWEEN_TRYS = 10; + if (_drawStep == DrawStep::DrawProcessSetup || + _drawStep == DrawStep::DrawProcessUpdate || + _drawStep == DrawStep::DrawProcessUninstall) { + // Refresh + setDrawDialog(_drawStep, true); + } + if (_showSplash) { + if (_splashStep == 0){ if (theApp._manager.needsUninstall()) { theApp._manager.addToLog(_T("Waiting to uninstall")); setDrawDialog(DrawStep::DrawProcessUninstall); } else { theApp._manager.addToLog(_T("Start splash screen")); setDrawDialog(DrawStep::DrawLogo); - } - } else if (_splashStep > 100) { - _showSplash = false; - if (theApp._manager.shouldShutDown()) { - if (LauncherUtils::IsProcessRunning(L"interface.exe")) { - exit(0); - } - } else if (theApp._manager.needsUpdate()) { - startProcess(); - } else if (theApp._manager.needsUninstall()) { - theApp._manager.uninstallApplication(); - exit(0); - } else { + } + } else if (_splashStep > 100) { + _showSplash = false; + if (theApp._manager.shouldShutDown()) { + if (LauncherUtils::IsProcessRunning(L"interface.exe")) { + exit(0); + } + } else if (theApp._manager.needsUpdate()) { + startProcess(); + } else if (theApp._manager.needsUninstall()) { + theApp._manager.uninstallApplication(); + exit(0); + } else { theApp._manager.addToLog(_T("Starting login")); - setDrawDialog(DrawStep::DrawLoginLogin); - } - } - _splashStep++; - } else if (theApp._manager.shouldShutDown()) { - if (LauncherUtils::IsProcessRunning(L"interface.exe")) { - exit(0); - } - } + setDrawDialog(DrawStep::DrawLoginLogin); + } + } + _splashStep++; + } else if (theApp._manager.shouldShutDown()) { + if (LauncherUtils::IsProcessRunning(L"interface.exe")) { + exit(0); + } + } } void CLauncherDlg::setDrawDialog(DrawStep step, BOOL isUpdate) { - _drawStep = step; - auto m_pRenderTarget = GetRenderTarget(); - auto m_voxelRenderTarget = m_voxel->GetRenderTarget(); - switch (_drawStep) { - case DrawStep::DrawLogo: - m_pRenderTarget->BeginDraw(); - drawBackground(m_pRenderTarget); - m_pRenderTarget->EndDraw(); - m_voxelRenderTarget->BeginDraw(); - drawLogo(m_voxelRenderTarget); - m_voxelRenderTarget->EndDraw(); - break; - case DrawStep::DrawLoginLogin: - case DrawStep::DrawLoginErrorOrg: - case DrawStep::DrawLoginErrorCred: - prepareLogin(_drawStep); - m_pRenderTarget->BeginDraw(); - drawBackground(m_pRenderTarget); - drawSmallLogo(m_pRenderTarget); - m_pRenderTarget->EndDraw(); - RedrawWindow(); - break; - case DrawStep::DrawChoose: - prepareChoose(); - m_pRenderTarget->BeginDraw(); - drawBackground(m_pRenderTarget); - drawSmallLogo(m_pRenderTarget); - m_pRenderTarget->EndDraw(); - RedrawWindow(); - break; - case DrawStep::DrawProcessFinishHq: - case DrawStep::DrawProcessFinishUpdate: - case DrawStep::DrawProcessUpdate: - case DrawStep::DrawProcessUninstall: - case DrawStep::DrawProcessSetup: - if (!isUpdate) { - m_voxelRenderTarget->BeginDraw(); - m_voxelRenderTarget->Clear(D2D1::ColorF(0.0f, 0.0f, 0.0f, 1.0f)); - m_voxelRenderTarget->EndDraw(); - m_pRenderTarget->BeginDraw(); - prepareProcess(_drawStep); - drawBackground(m_pRenderTarget); - drawSmallLogo(m_pRenderTarget); - m_pRenderTarget->EndDraw(); - RedrawWindow(); - } - m_voxelRenderTarget->BeginDraw(); - drawVoxel(m_voxelRenderTarget); - m_voxelRenderTarget->EndDraw(); - break; - default: - break; - } + _drawStep = step; + auto m_pRenderTarget = GetRenderTarget(); + auto m_voxelRenderTarget = m_voxel->GetRenderTarget(); + switch (_drawStep) { + case DrawStep::DrawLogo: + m_pRenderTarget->BeginDraw(); + drawBackground(m_pRenderTarget); + m_pRenderTarget->EndDraw(); + m_voxelRenderTarget->BeginDraw(); + drawLogo(m_voxelRenderTarget); + m_voxelRenderTarget->EndDraw(); + break; + case DrawStep::DrawLoginLogin: + case DrawStep::DrawLoginErrorOrg: + case DrawStep::DrawLoginErrorCred: + prepareLogin(_drawStep); + m_pRenderTarget->BeginDraw(); + drawBackground(m_pRenderTarget); + drawSmallLogo(m_pRenderTarget); + m_pRenderTarget->EndDraw(); + RedrawWindow(); + break; + case DrawStep::DrawChoose: + prepareChoose(); + m_pRenderTarget->BeginDraw(); + drawBackground(m_pRenderTarget); + drawSmallLogo(m_pRenderTarget); + m_pRenderTarget->EndDraw(); + RedrawWindow(); + break; + case DrawStep::DrawProcessFinishHq: + case DrawStep::DrawProcessFinishUpdate: + case DrawStep::DrawProcessUpdate: + case DrawStep::DrawProcessUninstall: + case DrawStep::DrawProcessSetup: + if (!isUpdate) { + m_voxelRenderTarget->BeginDraw(); + m_voxelRenderTarget->Clear(D2D1::ColorF(0.0f, 0.0f, 0.0f, 1.0f)); + m_voxelRenderTarget->EndDraw(); + m_pRenderTarget->BeginDraw(); + prepareProcess(_drawStep); + drawBackground(m_pRenderTarget); + drawSmallLogo(m_pRenderTarget); + m_pRenderTarget->EndDraw(); + RedrawWindow(); + } + m_voxelRenderTarget->BeginDraw(); + drawVoxel(m_voxelRenderTarget); + m_voxelRenderTarget->EndDraw(); + break; + default: + break; + } } diff --git a/launchers/win32/LauncherDlg.h b/launchers/win32/LauncherDlg.h index d743dd31d2..e998b342c1 100644 --- a/launchers/win32/LauncherDlg.h +++ b/launchers/win32/LauncherDlg.h @@ -13,109 +13,109 @@ // CLauncherDlg dialog class CLauncherDlg : public CDialog { - // Construction + // Construction public: - enum DrawStep { - DrawLogo = 0, - DrawLoginLogin, - DrawLoginErrorOrg, - DrawLoginErrorCred, - DrawChoose, - DrawProcessSetup, - DrawProcessUpdate, - DrawProcessFinishHq, - DrawProcessFinishUpdate, - DrawProcessUninstall, - DrawError - }; + enum DrawStep { + DrawLogo = 0, + DrawLoginLogin, + DrawLoginErrorOrg, + DrawLoginErrorCred, + DrawChoose, + DrawProcessSetup, + DrawProcessUpdate, + DrawProcessFinishHq, + DrawProcessFinishUpdate, + DrawProcessUninstall, + DrawError + }; - struct TextFormat { - int size; - COLORREF color; - bool isButton; - bool isBold; - bool underlined; - }; + struct TextFormat { + int size; + COLORREF color; + bool isButton; + bool isBold; + bool underlined; + }; - CLauncherDlg(CWnd* pParent = nullptr); + CLauncherDlg(CWnd* pParent = nullptr); ~CLauncherDlg(); - virtual BOOL PreTranslateMessage(MSG* pMsg); + virtual BOOL PreTranslateMessage(MSG* pMsg); - void setDrawDialog(DrawStep step, BOOL isUpdate = FALSE); + void setDrawDialog(DrawStep step, BOOL isUpdate = FALSE); // Dialog Data #ifdef AFX_DESIGN_TIME - enum { IDD = IDD_LAUNCHER_DIALOG }; + enum { IDD = IDD_LAUNCHER_DIALOG }; #endif - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - void startProcess(); - void setCustomDialog(); + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + void startProcess(); + void setCustomDialog(); // Implementation protected: - BOOL getHQInfo(const CString& orgname); - DrawStep _drawStep { DrawStep::DrawLogo }; - BOOL getTextFormat(int ResID, TextFormat& formatOut); - void showWindows(std::vector windows, bool show); + BOOL getHQInfo(const CString& orgname); + DrawStep _drawStep { DrawStep::DrawLogo }; + BOOL getTextFormat(int ResID, TextFormat& formatOut); + void showWindows(std::vector windows, bool show); - bool _isConsoleRunning{ false }; - bool _isInstalling{ false }; - bool _isFirstDraw{ false }; - bool _showSplash{ true }; - int _splashStep{ 0 }; - float _logoRotation { 0.0f }; + bool _isConsoleRunning{ false }; + bool _isInstalling{ false }; + bool _isFirstDraw{ false }; + bool _showSplash{ true }; + int _splashStep{ 0 }; + float _logoRotation { 0.0f }; - HICON m_hIcon; - CButton m_btnNext; - CButton m_trouble_link; - - CStatic* m_message_label; - CStatic* m_action_label; - CStatic* m_message2_label; - CStatic* m_action2_label; - CStatic* m_terms; - CStatic* m_terms2; - CStatic* m_trouble; - CStatic* m_voxel; + HICON m_hIcon; + CButton m_btnNext; + CButton m_trouble_link; + + CStatic* m_message_label; + CStatic* m_action_label; + CStatic* m_message2_label; + CStatic* m_action2_label; + CStatic* m_terms; + CStatic* m_terms2; + CStatic* m_trouble; + CStatic* m_voxel; - CEdit m_orgname; - CEdit m_username; - CEdit m_password; + CEdit m_orgname; + CEdit m_username; + CEdit m_password; - CStatic* m_orgname_banner; - CStatic* m_username_banner; - CStatic* m_password_banner; + CStatic* m_orgname_banner; + CStatic* m_username_banner; + CStatic* m_password_banner; - void drawBackground(CHwndRenderTarget* pRenderTarget); - void drawLogo(CHwndRenderTarget* pRenderTarget); - void drawSmallLogo(CHwndRenderTarget* pRenderTarget); - void drawVoxel(CHwndRenderTarget* pRenderTarget); + void drawBackground(CHwndRenderTarget* pRenderTarget); + void drawLogo(CHwndRenderTarget* pRenderTarget); + void drawSmallLogo(CHwndRenderTarget* pRenderTarget); + void drawVoxel(CHwndRenderTarget* pRenderTarget); - void prepareLogin(DrawStep step); - void prepareProcess(DrawStep step); - void prepareChoose(); - void prepareError(); + void prepareLogin(DrawStep step); + void prepareProcess(DrawStep step); + void prepareChoose(); + void prepareError(); - void redrawBanner(const CEdit& edit, CStatic* banner); + void redrawBanner(const CEdit& edit, CStatic* banner); - // Generated message map functions - virtual BOOL OnInitDialog(); - afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); - afx_msg void OnPaint(); - afx_msg HCURSOR OnQueryDragIcon(); - afx_msg void OnNextClicked(); - afx_msg void OnTroubleClicked(); - afx_msg void OnOrgEditChangeFocus(); - afx_msg void OnUserEditChangeFocus(); - afx_msg void OnPassEditChangeFocus(); - afx_msg void OnTimer(UINT_PTR nIDEvent); - DECLARE_MESSAGE_MAP() + // Generated message map functions + virtual BOOL OnInitDialog(); + afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + afx_msg void OnNextClicked(); + afx_msg void OnTroubleClicked(); + afx_msg void OnOrgEditChangeFocus(); + afx_msg void OnUserEditChangeFocus(); + afx_msg void OnPassEditChangeFocus(); + afx_msg void OnTimer(UINT_PTR nIDEvent); + DECLARE_MESSAGE_MAP() public: - afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct); - afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); + afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct); + afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); }; diff --git a/launchers/win32/LauncherManager.cpp b/launchers/win32/LauncherManager.cpp index 3dc7ddedcc..91bb80d4b8 100644 --- a/launchers/win32/LauncherManager.cpp +++ b/launchers/win32/LauncherManager.cpp @@ -76,396 +76,399 @@ void LauncherManager::closeLog() { BOOL LauncherManager::installLauncher() { addToLog(_T("Installing Launcher.")); - CString appPath; - BOOL result = getAndCreatePaths(PathType::Running_Path, appPath); - if (!result) { - MessageBox(NULL, L"Error getting app directory", L"Path Error", MB_OK | MB_ICONERROR); - } - CString installDirectory; - CString appDirectory = appPath.Left(appPath.ReverseFind('\\') + 1); - result = getAndCreatePaths(PathType::Launcher_Directory, installDirectory); - if (!result) { - MessageBox(NULL, L"Error getting app desired directory", L"Path Error", MB_OK | MB_ICONERROR); - } + CString appPath; + BOOL result = getAndCreatePaths(PathType::Running_Path, appPath); + if (!result) { + MessageBox(NULL, L"Error getting app directory", L"Path Error", MB_OK | MB_ICONERROR); + } + CString installDirectory; + CString appDirectory = appPath.Left(appPath.ReverseFind('\\') + 1); + result = getAndCreatePaths(PathType::Launcher_Directory, installDirectory); + if (!result) { + MessageBox(NULL, L"Error getting app desired directory", L"Path Error", MB_OK | MB_ICONERROR); + } - CString instalationPath = installDirectory + LAUNCHER_EXE_FILENAME; - if (!installDirectory.Compare(appDirectory) == 0) { - if (!_shouldUninstall) { - // The installer is not running on the desired location and has to be installed - // Kill of running before self-copy - if (LauncherUtils::IsProcessRunning(LAUNCHER_EXE_FILENAME)) { - ::ShellExecute(NULL, NULL, L"taskkill", L"/F /T /IM " + LAUNCHER_EXE_FILENAME, NULL, SW_HIDE); - } - CopyFile(appPath, instalationPath, FALSE); - } - } else if (_shouldUninstall) { + CString instalationPath = installDirectory + LAUNCHER_EXE_FILENAME; + if (!installDirectory.Compare(appDirectory) == 0) { + if (!_shouldUninstall) { + // The installer is not running on the desired location and has to be installed + // Kill of running before self-copy + if (LauncherUtils::IsProcessRunning(LAUNCHER_EXE_FILENAME)) { + ::ShellExecute(NULL, NULL, L"taskkill", L"/F /T /IM " + LAUNCHER_EXE_FILENAME, NULL, SW_HIDE); + } + CopyFile(appPath, instalationPath, FALSE); + } + } else if (_shouldUninstall) { addToLog(_T("Launching uninstall mode.")); - CString tempPath; - if (getAndCreatePaths(PathType::Temp_Directory, tempPath)) { - tempPath += _T("\\HQ_uninstaller_tmp.exe"); - CopyFile(instalationPath, tempPath, false); - LauncherUtils::launchApplication(tempPath, _T(" --uninstall")); - exit(0); - } - } - return TRUE; + CString tempPath; + if (getAndCreatePaths(PathType::Temp_Directory, tempPath)) { + tempPath += _T("\\HQ_uninstaller_tmp.exe"); + CopyFile(instalationPath, tempPath, false); + LauncherUtils::launchApplication(tempPath, _T(" --uninstall")); + exit(0); + } + } + return TRUE; } BOOL LauncherManager::createShortcuts() { - CString desktopLnkPath; + CString desktopLnkPath; addToLog(_T("Creating shortcuts.")); - getAndCreatePaths(PathType::Desktop_Directory, desktopLnkPath); - desktopLnkPath += _T("\\HQ Launcher.lnk"); - CString installDir; - getAndCreatePaths(PathType::Launcher_Directory, installDir); - CString installPath = installDir + LAUNCHER_EXE_FILENAME; - if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(desktopLnkPath), _T("CLick to Setup and Launch HQ."))) { - return FALSE; - } - CString startLinkPath; - getAndCreatePaths(PathType::StartMenu_Directory, startLinkPath); - CString appStartLinkPath = startLinkPath + _T("HQ Launcher.lnk"); - CString uniStartLinkPath = startLinkPath + _T("Uninstall HQ.lnk"); - CString uniLinkPath = installDir + _T("Uninstall HQ.lnk"); - if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(appStartLinkPath), _T("CLick to Setup and Launch HQ."))) { - return FALSE; - } - if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(uniStartLinkPath), _T("CLick to Uninstall HQ."), _T("--uninstall"))) { - return FALSE; - } - if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(uniLinkPath), _T("CLick to Uninstall HQ."), _T("--uninstall"))) { - return FALSE; - } - return TRUE; + getAndCreatePaths(PathType::Desktop_Directory, desktopLnkPath); + desktopLnkPath += _T("\\HQ Launcher.lnk"); + CString installDir; + getAndCreatePaths(PathType::Launcher_Directory, installDir); + CString installPath = installDir + LAUNCHER_EXE_FILENAME; + if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(desktopLnkPath), _T("CLick to Setup and Launch HQ."))) { + return FALSE; + } + CString startLinkPath; + getAndCreatePaths(PathType::StartMenu_Directory, startLinkPath); + CString appStartLinkPath = startLinkPath + _T("HQ Launcher.lnk"); + CString uniStartLinkPath = startLinkPath + _T("Uninstall HQ.lnk"); + CString uniLinkPath = installDir + _T("Uninstall HQ.lnk"); + if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(appStartLinkPath), _T("CLick to Setup and Launch HQ."))) { + return FALSE; + } + if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(uniStartLinkPath), _T("CLick to Uninstall HQ."), _T("--uninstall"))) { + return FALSE; + } + if (!LauncherUtils::CreateLink(installPath, (LPCSTR)CStringA(uniLinkPath), _T("CLick to Uninstall HQ."), _T("--uninstall"))) { + return FALSE; + } + return TRUE; } BOOL LauncherManager::deleteShortcuts() { - CString desktopLnkPath; + CString desktopLnkPath; addToLog(_T("Deleting shortcuts.")); - getAndCreatePaths(PathType::Desktop_Directory, desktopLnkPath); - desktopLnkPath += _T("\\HQ Launcher.lnk"); - BOOL success = LauncherUtils::deleteFileOrDirectory(desktopLnkPath); - CString startLinkPath; - getAndCreatePaths(PathType::StartMenu_Directory, startLinkPath); - return success && LauncherUtils::deleteFileOrDirectory(startLinkPath); + getAndCreatePaths(PathType::Desktop_Directory, desktopLnkPath); + desktopLnkPath += _T("\\HQ Launcher.lnk"); + BOOL success = LauncherUtils::deleteFileOrDirectory(desktopLnkPath); + CString startLinkPath; + getAndCreatePaths(PathType::StartMenu_Directory, startLinkPath); + return success && LauncherUtils::deleteFileOrDirectory(startLinkPath); } BOOL LauncherManager::isApplicationInstalled(CString& version, CString& domain, - CString& content, bool& loggedIn) { - CString applicationDir; - getAndCreatePaths(PathType::Launcher_Directory, applicationDir); - CString applicationPath = applicationDir + "interface\\interface.exe"; - BOOL isApplicationInstalled = PathFileExistsW(applicationPath); - BOOL configFileExist = PathFileExistsW(applicationDir + _T("interface\\config.json")); - if (isApplicationInstalled && configFileExist) { - LauncherUtils::ResponseError status = readConfigJSON(version, domain, content, loggedIn); - return status == LauncherUtils::ResponseError::NoError; - } - return FALSE; + CString& content, bool& loggedIn) { + CString applicationDir; + getAndCreatePaths(PathType::Launcher_Directory, applicationDir); + CString applicationPath = applicationDir + "interface\\interface.exe"; + BOOL isApplicationInstalled = PathFileExistsW(applicationPath); + BOOL configFileExist = PathFileExistsW(applicationDir + _T("interface\\config.json")); + if (isApplicationInstalled && configFileExist) { + LauncherUtils::ResponseError status = readConfigJSON(version, domain, content, loggedIn); + return status == LauncherUtils::ResponseError::NoError; + } + return FALSE; } BOOL LauncherManager::getAndCreatePaths(PathType type, CString& outPath) { - if (type == PathType::Running_Path) { - char appPath[MAX_PATH]; - DWORD size = GetModuleFileNameA(NULL, appPath, MAX_PATH); - if (size) { - outPath = CString(appPath); - return TRUE; - } - } else if (type == PathType::Desktop_Directory) { - TCHAR desktopPath[MAX_PATH]; - auto success = SUCCEEDED(SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktopPath)); - outPath = CString(desktopPath); - return success; - } else if (type == PathType::Temp_Directory) { - TCHAR tempPath[MAX_PATH]; - auto success = GetTempPath(MAX_PATH, tempPath); - outPath = CString(tempPath); - return success; - } else { - TCHAR localDataPath[MAX_PATH]; - if (type == PathType::StartMenu_Directory) { - TCHAR startMenuPath[MAX_PATH]; - auto success = SUCCEEDED(SHGetFolderPath(NULL, CSIDL_STARTMENU, NULL, 0, startMenuPath)); - outPath = CString(startMenuPath) + _T("\\Programs\\HQ\\"); - success = SHCreateDirectoryEx(NULL, outPath, NULL) || ERROR_ALREADY_EXISTS == GetLastError(); - return success; - } else if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, localDataPath))) { - _tcscat_s(localDataPath, _T("\\") + DIRECTORY_NAME_APP + _T("\\")); - outPath = CString(localDataPath); - if (type == PathType::Download_Directory) { - outPath += DIRECTORY_NAME_DOWNLOADS + _T("\\"); - } else if (type == PathType::Interface_Directory) { - outPath += DIRECTORY_NAME_INTERFACE; - } else if (type == PathType::Content_Directory) { - outPath += DIRECTORY_NAME_CONTENT; - } - return (CreateDirectory(outPath, NULL) || ERROR_ALREADY_EXISTS == GetLastError()); - } - } - return FALSE; + if (type == PathType::Running_Path) { + char appPath[MAX_PATH]; + DWORD size = GetModuleFileNameA(NULL, appPath, MAX_PATH); + if (size) { + outPath = CString(appPath); + return TRUE; + } + } else if (type == PathType::Desktop_Directory) { + TCHAR desktopPath[MAX_PATH]; + auto success = SUCCEEDED(SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktopPath)); + outPath = CString(desktopPath); + return success; + } else if (type == PathType::Temp_Directory) { + TCHAR tempPath[MAX_PATH]; + auto success = GetTempPath(MAX_PATH, tempPath); + outPath = CString(tempPath); + return success; + } else { + TCHAR localDataPath[MAX_PATH]; + if (type == PathType::StartMenu_Directory) { + TCHAR startMenuPath[MAX_PATH]; + auto success = SUCCEEDED(SHGetFolderPath(NULL, CSIDL_STARTMENU, NULL, 0, startMenuPath)); + outPath = CString(startMenuPath) + _T("\\Programs\\HQ\\"); + success = SHCreateDirectoryEx(NULL, outPath, NULL) || ERROR_ALREADY_EXISTS == GetLastError(); + return success; + } else if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, localDataPath))) { + _tcscat_s(localDataPath, _T("\\") + DIRECTORY_NAME_APP + _T("\\")); + outPath = CString(localDataPath); + if (type == PathType::Download_Directory) { + outPath += DIRECTORY_NAME_DOWNLOADS + _T("\\"); + } else if (type == PathType::Interface_Directory) { + outPath += DIRECTORY_NAME_INTERFACE; + } else if (type == PathType::Content_Directory) { + outPath += DIRECTORY_NAME_CONTENT; + } + return (CreateDirectory(outPath, NULL) || ERROR_ALREADY_EXISTS == GetLastError()); + } + } + return FALSE; } BOOL LauncherManager::getInstalledVersion(const CString& path, CString& version) { - CStdioFile cfile; - BOOL success = cfile.Open(path, CFile::modeRead); - if (success) { - cfile.ReadString(version); - cfile.Close(); - } - return success; + CStdioFile cfile; + BOOL success = cfile.Open(path, CFile::modeRead); + if (success) { + cfile.ReadString(version); + cfile.Close(); + } + return success; } BOOL LauncherManager::launchApplication(const CString& tokensJSON) { - CString installDir; - LauncherManager::getAndCreatePaths(PathType::Interface_Directory, installDir); - CString interfaceExe = installDir + _T("\\interface.exe"); - CString params1 = _T("--url \"") + _domainURL + ("\" "); - CString cacheDir; - LauncherManager::getAndCreatePaths(PathType::Content_Directory, cacheDir); - CString params3 = _T("--cache \"") + cacheDir + ("\" "); - CString params4 = !_displayName.IsEmpty() ? _T("--displayName \"") + _displayName + ("\" ") : _T(""); - CString parsedTokens = tokensJSON; - parsedTokens.Replace(_T("\""), _T("\\\"")); - CString params5 = !tokensJSON.IsEmpty() ? _T("--tokens \"") + parsedTokens + ("\"") : _T(""); - CString params = params1 + params3 + params4 + params5 + EXTRA_PARAMETERS; - auto rs = ShellExecute(NULL, L"open", interfaceExe, params, NULL, SW_SHOW); - return (rs != NULL); + CString installDir; + LauncherManager::getAndCreatePaths(PathType::Interface_Directory, installDir); + CString interfaceExe = installDir + _T("\\interface.exe"); + CString params1 = _T("--url \"") + _domainURL + ("\" "); + CString scriptsURL = installDir + _T("\\scripts\\simplifiedUI"); + CString params2 = _T("--scripts \"") + scriptsURL + ("\" "); + CString cacheDir; + LauncherManager::getAndCreatePaths(PathType::Content_Directory, cacheDir); + CString params3 = _T("--cache \"") + cacheDir + ("\" "); + CString params4 = !_displayName.IsEmpty() ? _T("--displayName \"") + _displayName + ("\" ") : _T(""); + CString parsedTokens = tokensJSON; + parsedTokens.Replace(_T("\""), _T("\\\"")); + CString params5 = !tokensJSON.IsEmpty() ? _T("--tokens \"") + parsedTokens + ("\"") : _T(""); + CString params = params1 + params2 + params3 + params4 + params5 + EXTRA_PARAMETERS; + + auto rs = ShellExecute(NULL, L"open", interfaceExe, params, NULL, SW_SHOW); + return (rs != NULL); } BOOL LauncherManager::createConfigJSON() { - CString configPath; - LauncherManager::getAndCreatePaths(PathType::Interface_Directory, configPath); - configPath += "\\config.json"; - std::ofstream configFile(configPath, std::ofstream::binary); - if (configFile.fail()) { - return FALSE; - } - Json::Value config; - CString applicationPath; - LauncherManager::getAndCreatePaths(PathType::Launcher_Directory, applicationPath); - applicationPath += LAUNCHER_EXE_FILENAME; - config["loggedIn"] = _loggedIn; - config["launcherPath"] = LauncherUtils::cStringToStd(applicationPath); - config["version"] = LauncherUtils::cStringToStd(_latestVersion); - config["domain"] = LauncherUtils::cStringToStd(_domainURL); - CString content; - getAndCreatePaths(PathType::Content_Directory, content); - config["content"] = LauncherUtils::cStringToStd(content); - configFile << config; - configFile.close(); - return TRUE; + CString configPath; + LauncherManager::getAndCreatePaths(PathType::Interface_Directory, configPath); + configPath += "\\config.json"; + std::ofstream configFile(configPath, std::ofstream::binary); + if (configFile.fail()) { + return FALSE; + } + Json::Value config; + CString applicationPath; + LauncherManager::getAndCreatePaths(PathType::Launcher_Directory, applicationPath); + applicationPath += LAUNCHER_EXE_FILENAME; + config["loggedIn"] = _loggedIn; + config["launcherPath"] = LauncherUtils::cStringToStd(applicationPath); + config["version"] = LauncherUtils::cStringToStd(_latestVersion); + config["domain"] = LauncherUtils::cStringToStd(_domainURL); + CString content; + getAndCreatePaths(PathType::Content_Directory, content); + config["content"] = LauncherUtils::cStringToStd(content); + configFile << config; + configFile.close(); + return TRUE; } LauncherUtils::ResponseError LauncherManager::readConfigJSON(CString& version, CString& domain, CString& content, bool& loggedIn) { - CString configPath; - getAndCreatePaths(PathType::Interface_Directory, configPath); - configPath += "\\config.json"; - std::ifstream configFile(configPath, std::ifstream::binary); - if (configFile.fail()) { - return LauncherUtils::ResponseError::Open; - } - Json::Value config; - configFile >> config; - if (config["version"].isString() && config["domain"].isString() && - config["content"].isString()) { - loggedIn = config["loggedIn"].asBool(); - version = config["version"].asCString(); - domain = config["domain"].asCString(); - content = config["content"].asCString(); - configFile.close(); - return LauncherUtils::ResponseError::NoError; - } - configFile.close(); - return LauncherUtils::ResponseError::ParsingJSON; + CString configPath; + getAndCreatePaths(PathType::Interface_Directory, configPath); + configPath += "\\config.json"; + std::ifstream configFile(configPath, std::ifstream::binary); + if (configFile.fail()) { + return LauncherUtils::ResponseError::Open; + } + Json::Value config; + configFile >> config; + if (config["version"].isString() && config["domain"].isString() && + config["content"].isString()) { + loggedIn = config["loggedIn"].asBool(); + version = config["version"].asCString(); + domain = config["domain"].asCString(); + content = config["content"].asCString(); + configFile.close(); + return LauncherUtils::ResponseError::NoError; + } + configFile.close(); + return LauncherUtils::ResponseError::ParsingJSON; } LauncherUtils::ResponseError LauncherManager::readOrganizationJSON(const CString& hash) { - CString contentTypeJson = L"content-type:application/json"; - CString response; - CString url = _T("/hifi-public/huffman/organizations/") + hash + _T(".json"); - LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"s3.amazonaws.com", url, - contentTypeJson, CStringA(), response, false); - if (error != LauncherUtils::ResponseError::NoError) { - return error; - } - Json::Value json; - if (LauncherUtils::parseJSON(response, json)) { - if (json["content_set_url"].isString() && json["domain"].isString()) { - _contentURL = json["content_set_url"].asCString(); - _domainURL = json["domain"].asCString(); - return LauncherUtils::ResponseError::NoError; - } - } - return LauncherUtils::ResponseError::ParsingJSON; + CString contentTypeJson = L"content-type:application/json"; + CString response; + CString url = _T("/hifi-public/huffman/organizations/") + hash + _T(".json"); + LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"s3.amazonaws.com", url, + contentTypeJson, CStringA(), response, false); + if (error != LauncherUtils::ResponseError::NoError) { + return error; + } + Json::Value json; + if (LauncherUtils::parseJSON(response, json)) { + if (json["content_set_url"].isString() && json["domain"].isString()) { + _contentURL = json["content_set_url"].asCString(); + _domainURL = json["domain"].asCString(); + return LauncherUtils::ResponseError::NoError; + } + } + return LauncherUtils::ResponseError::ParsingJSON; } LauncherUtils::ResponseError LauncherManager::getMostRecentBuild(CString& urlOut, CString& versionOut) { - CString contentTypeJson = L"content-type:application/json"; - CString response; - LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"thunder.highfidelity.com", L"/builds/api/tags/latest?format=json", - contentTypeJson, CStringA(), response, false); - if (error != LauncherUtils::ResponseError::NoError) { - return error; - } - Json::Value json; - if (LauncherUtils::parseJSON(response, json)) { - int count = json["count"].isInt() ? json["count"].asInt() : 0; - if (count > 0 && json["results"].isArray()) { - for (int i = 0; i < count; i++) { - if (json["results"][i].isObject()) { - Json::Value result = json["results"][i]; - if (result["latest_version"].isInt()) { - std::string version = std::to_string(result["latest_version"].asInt()); - versionOut = CString(version.c_str()); - } - if (result["installers"].isObject() && - result["installers"]["windows"].isObject() && - result["installers"]["windows"]["zip_url"].isString()) { - urlOut = result["installers"]["windows"]["zip_url"].asCString(); - return LauncherUtils::ResponseError::NoError; - } - } - } - } - } - return LauncherUtils::ResponseError::ParsingJSON; + CString contentTypeJson = L"content-type:application/json"; + CString response; + LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"thunder.highfidelity.com", L"/builds/api/tags/latest?format=json", + contentTypeJson, CStringA(), response, false); + if (error != LauncherUtils::ResponseError::NoError) { + return error; + } + Json::Value json; + if (LauncherUtils::parseJSON(response, json)) { + int count = json["count"].isInt() ? json["count"].asInt() : 0; + if (count > 0 && json["results"].isArray()) { + for (int i = 0; i < count; i++) { + if (json["results"][i].isObject()) { + Json::Value result = json["results"][i]; + if (result["latest_version"].isInt()) { + std::string version = std::to_string(result["latest_version"].asInt()); + versionOut = CString(version.c_str()); + } + if (result["installers"].isObject() && + result["installers"]["windows"].isObject() && + result["installers"]["windows"]["zip_url"].isString()) { + urlOut = result["installers"]["windows"]["zip_url"].asCString(); + return LauncherUtils::ResponseError::NoError; + } + } + } + } + } + return LauncherUtils::ResponseError::ParsingJSON; } LauncherUtils::ResponseError LauncherManager::getAccessTokenForCredentials(const CString& username, const CString& password) { - CStringA post = "grant_type=password&username="; - post += username; - post += "&password="; - post += password; - post += "&scope=owner"; + CStringA post = "grant_type=password&username="; + post += username; + post += "&password="; + post += password; + post += "&scope=owner"; - CString contentTypeText = L"content-type:application/x-www-form-urlencoded"; - CString response; - LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"metaverse.highfidelity.com", L"/oauth/token", - contentTypeText, post, response, true); - if (error != LauncherUtils::ResponseError::NoError) { - return error; - } - Json::Value json; - if (LauncherUtils::parseJSON(response, json)) { - if (json["error"].isString()) { - return LauncherUtils::ResponseError::BadCredentials; - } else if (json["access_token"].isString()) { - _tokensJSON = response; - return LauncherUtils::ResponseError::NoError; - } - } - return LauncherUtils::ResponseError::ParsingJSON; + CString contentTypeText = L"content-type:application/x-www-form-urlencoded"; + CString response; + LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"metaverse.highfidelity.com", L"/oauth/token", + contentTypeText, post, response, true); + if (error != LauncherUtils::ResponseError::NoError) { + return error; + } + Json::Value json; + if (LauncherUtils::parseJSON(response, json)) { + if (json["error"].isString()) { + return LauncherUtils::ResponseError::BadCredentials; + } else if (json["access_token"].isString()) { + _tokensJSON = response; + return LauncherUtils::ResponseError::NoError; + } + } + return LauncherUtils::ResponseError::ParsingJSON; } BOOL LauncherManager::createApplicationRegistryKeys(int size) { - const std::string REGISTRY_PATH = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\HQ"; - BOOL success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "DisplayName", "HQ"); - CString installDir; - getAndCreatePaths(PathType::Launcher_Directory, installDir); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "InstallLocation", LauncherUtils::cStringToStd(installDir)); - std::string applicationExe = LauncherUtils::cStringToStd(installDir + LAUNCHER_EXE_FILENAME); - std::string uninstallPath = '"' + applicationExe + '"' + " --uninstall"; - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "UninstallString", uninstallPath); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "DisplayVersion", LauncherUtils::cStringToStd(_latestVersion)); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "DisplayIcon", applicationExe); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "Publisher", "High Fidelity"); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "InstallDate", LauncherUtils::cStringToStd(CTime::GetCurrentTime().Format("%Y%m%d"))); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "EstimatedSize", (DWORD)size); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "NoModify", (DWORD)1); - success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "NoRepair", (DWORD)1); - return success; + const std::string REGISTRY_PATH = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\HQ"; + BOOL success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "DisplayName", "HQ"); + CString installDir; + getAndCreatePaths(PathType::Launcher_Directory, installDir); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "InstallLocation", LauncherUtils::cStringToStd(installDir)); + std::string applicationExe = LauncherUtils::cStringToStd(installDir + LAUNCHER_EXE_FILENAME); + std::string uninstallPath = '"' + applicationExe + '"' + " --uninstall"; + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "UninstallString", uninstallPath); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "DisplayVersion", LauncherUtils::cStringToStd(_latestVersion)); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "DisplayIcon", applicationExe); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "Publisher", "High Fidelity"); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "InstallDate", LauncherUtils::cStringToStd(CTime::GetCurrentTime().Format("%Y%m%d"))); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "EstimatedSize", (DWORD)size); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "NoModify", (DWORD)1); + success = LauncherUtils::insertRegistryKey(REGISTRY_PATH, "NoRepair", (DWORD)1); + return success; } BOOL LauncherManager::deleteApplicationRegistryKeys() { - const CString REGISTRY_PATH = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\HQ"); - return LauncherUtils::deleteRegistryKey(REGISTRY_PATH); + const CString REGISTRY_PATH = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\HQ"); + return LauncherUtils::deleteRegistryKey(REGISTRY_PATH); } BOOL LauncherManager::uninstallApplication() { - CString installDir; - getAndCreatePaths(PathType::Launcher_Directory, installDir); - BOOL success = LauncherUtils::deleteFileOrDirectory(installDir); - success = success && (deleteShortcuts()); - success = success && (deleteApplicationRegistryKeys()); - return success; + CString installDir; + getAndCreatePaths(PathType::Launcher_Directory, installDir); + BOOL success = LauncherUtils::deleteFileOrDirectory(installDir); + success = success && (deleteShortcuts()); + success = success && (deleteApplicationRegistryKeys()); + return success; } void LauncherManager::onZipExtracted(ZipType type, int size) { - if (type == ZipType::ZipContent) { + if (type == ZipType::ZipContent) { addToLog(_T("Downloading application.")); - downloadApplication(); - } else if (type == ZipType::ZipApplication) { - createShortcuts(); - CString versionPath; - getAndCreatePaths(LauncherManager::PathType::Launcher_Directory, versionPath); + downloadApplication(); + } else if (type == ZipType::ZipApplication) { + createShortcuts(); + CString versionPath; + getAndCreatePaths(LauncherManager::PathType::Launcher_Directory, versionPath); addToLog(_T("Creating config.json")); createConfigJSON(); addToLog(_T("Launching application.")); - launchApplication(_tokensJSON); + launchApplication(_tokensJSON); addToLog(_T("Creating registry keys.")); - createApplicationRegistryKeys(size); - _shouldShutdown = TRUE; - } + createApplicationRegistryKeys(size); + _shouldShutdown = TRUE; + } } BOOL LauncherManager::extractApplication() { - CString installPath; - getAndCreatePaths(LauncherManager::PathType::Interface_Directory, installPath); - BOOL success = LauncherUtils::unzipFileOnThread(ZipType::ZipApplication, LauncherUtils::cStringToStd(_applicationZipPath), - LauncherUtils::cStringToStd(installPath), [&](int type, int size) { - onZipExtracted((ZipType)type, size); - }); - return success; + CString installPath; + getAndCreatePaths(LauncherManager::PathType::Interface_Directory, installPath); + BOOL success = LauncherUtils::unzipFileOnThread(ZipType::ZipApplication, LauncherUtils::cStringToStd(_applicationZipPath), + LauncherUtils::cStringToStd(installPath), [&](int type, int size) { + onZipExtracted((ZipType)type, size); + }); + return success; } void LauncherManager::onFileDownloaded(DownloadType type) { - if (type == DownloadType::DownloadContent) { + if (type == DownloadType::DownloadContent) { addToLog(_T("Installing content.")); - installContent(); - } else if (type == DownloadType::DownloadApplication) { + installContent(); + } else if (type == DownloadType::DownloadApplication) { addToLog(_T("Installing application.")); - extractApplication(); - } + extractApplication(); + } } BOOL LauncherManager::installContent() { - std::string contentZipFile = LauncherUtils::cStringToStd(_contentZipPath); - CString contentPath; - getAndCreatePaths(LauncherManager::PathType::Content_Directory, contentPath); - BOOL success = LauncherUtils::unzipFileOnThread(ZipType::ZipContent, contentZipFile, - LauncherUtils::cStringToStd(contentPath), [&](int type, int size) { - onZipExtracted((ZipType)type, size); - }); - return success; + std::string contentZipFile = LauncherUtils::cStringToStd(_contentZipPath); + CString contentPath; + getAndCreatePaths(LauncherManager::PathType::Content_Directory, contentPath); + BOOL success = LauncherUtils::unzipFileOnThread(ZipType::ZipContent, contentZipFile, + LauncherUtils::cStringToStd(contentPath), [&](int type, int size) { + onZipExtracted((ZipType)type, size); + }); + return success; } BOOL LauncherManager::downloadFile(DownloadType type, const CString& url, CString& outPath) { - CString fileName = url.Mid(url.ReverseFind('/') + 1); - CString downloadDirectory; - BOOL success = getAndCreatePaths(LauncherManager::PathType::Download_Directory, downloadDirectory); - outPath = downloadDirectory + fileName; - if (success) { - if (!LauncherUtils::downloadFileOnThread(type, url, outPath, [&](int type) { - onFileDownloaded((DownloadType)type); - })) { - success = FALSE; - } - } - return success; + CString fileName = url.Mid(url.ReverseFind('/') + 1); + CString downloadDirectory; + BOOL success = getAndCreatePaths(LauncherManager::PathType::Download_Directory, downloadDirectory); + outPath = downloadDirectory + fileName; + if (success) { + if (!LauncherUtils::downloadFileOnThread(type, url, outPath, [&](int type) { + onFileDownloaded((DownloadType)type); + })) { + success = FALSE; + } + } + return success; } BOOL LauncherManager::downloadContent() { addToLog(_T("Downloading content.")); - CString contentURL = getContentURL(); - return downloadFile(DownloadType::DownloadContent, contentURL, _contentZipPath); + CString contentURL = getContentURL(); + return downloadFile(DownloadType::DownloadContent, contentURL, _contentZipPath); } BOOL LauncherManager::downloadApplication() { - CString applicationURL = getLatestInterfaceURL(); - return downloadFile(DownloadType::DownloadApplication, applicationURL, _applicationZipPath); + CString applicationURL = getLatestInterfaceURL(); + return downloadFile(DownloadType::DownloadApplication, applicationURL, _applicationZipPath); } diff --git a/launchers/win32/LauncherManager.h b/launchers/win32/LauncherManager.h index 4bc09b49ca..b0e212a097 100644 --- a/launchers/win32/LauncherManager.h +++ b/launchers/win32/LauncherManager.h @@ -23,91 +23,91 @@ const bool INSTALL_ZIP = true; class LauncherManager { public: - enum PathType { - Running_Path = 0, - Launcher_Directory, - Download_Directory, - Interface_Directory, - Desktop_Directory, - Content_Directory, - StartMenu_Directory, - Temp_Directory - }; - enum ZipType { - ZipContent = 0, - ZipApplication - }; - enum DownloadType { - DownloadContent = 0, - DownloadApplication - }; - enum ErrorType { - ErrorNetworkAuth, - ErrorNetworkUpdate, - ErrorNetworkHq, - ErrorDownloading, - ErrorUpdating, - ErrorInstall, - ErrorIOFiles - }; - LauncherManager(); - ~LauncherManager(); - void init(); + enum PathType { + Running_Path = 0, + Launcher_Directory, + Download_Directory, + Interface_Directory, + Desktop_Directory, + Content_Directory, + StartMenu_Directory, + Temp_Directory + }; + enum ZipType { + ZipContent = 0, + ZipApplication + }; + enum DownloadType { + DownloadContent = 0, + DownloadApplication + }; + enum ErrorType { + ErrorNetworkAuth, + ErrorNetworkUpdate, + ErrorNetworkHq, + ErrorDownloading, + ErrorUpdating, + ErrorInstall, + ErrorIOFiles + }; + LauncherManager(); + ~LauncherManager(); + void init(); BOOL initLog(); BOOL addToLog(const CString& line); void closeLog(); - BOOL getAndCreatePaths(PathType type, CString& outPath); - BOOL getInstalledVersion(const CString& path, CString& version); - BOOL isApplicationInstalled(CString& version, CString& domain, - CString& content, bool& loggedIn); - LauncherUtils::ResponseError getAccessTokenForCredentials(const CString& username, const CString& password); - LauncherUtils::ResponseError getMostRecentBuild(CString& urlOut, CString& versionOut); - LauncherUtils::ResponseError readOrganizationJSON(const CString& hash); - LauncherUtils::ResponseError readConfigJSON(CString& version, CString& domain, - CString& content, bool& loggedIn); - BOOL createConfigJSON(); - BOOL createApplicationRegistryKeys(int size); - BOOL deleteApplicationRegistryKeys(); - BOOL createShortcuts(); - BOOL deleteShortcuts(); - BOOL launchApplication(const CString& tokensJSON = _T("")); - BOOL uninstallApplication(); - BOOL installLauncher(); + BOOL getAndCreatePaths(PathType type, CString& outPath); + BOOL getInstalledVersion(const CString& path, CString& version); + BOOL isApplicationInstalled(CString& version, CString& domain, + CString& content, bool& loggedIn); + LauncherUtils::ResponseError getAccessTokenForCredentials(const CString& username, const CString& password); + LauncherUtils::ResponseError getMostRecentBuild(CString& urlOut, CString& versionOut); + LauncherUtils::ResponseError readOrganizationJSON(const CString& hash); + LauncherUtils::ResponseError readConfigJSON(CString& version, CString& domain, + CString& content, bool& loggedIn); + BOOL createConfigJSON(); + BOOL createApplicationRegistryKeys(int size); + BOOL deleteApplicationRegistryKeys(); + BOOL createShortcuts(); + BOOL deleteShortcuts(); + BOOL launchApplication(const CString& tokensJSON = _T("")); + BOOL uninstallApplication(); + BOOL installLauncher(); - // getters - const CString& getContentURL() const { return _contentURL; } - const CString& getdomainURL() const { return _domainURL; } - const CString& getVersion() const { return _version; } - BOOL shouldShutDown() const { return _shouldShutdown; } - BOOL needsUpdate() { return _shouldUpdate; } - BOOL needsUninstall() { return _shouldUninstall; } - void setDisplayName(const CString& displayName) { _displayName = displayName; } - bool isLoggedIn() { return _loggedIn; } - const CString& getLatestInterfaceURL() const { return _latestApplicationURL; } - void uninstall() { _shouldUninstall = true; }; + // getters + const CString& getContentURL() const { return _contentURL; } + const CString& getdomainURL() const { return _domainURL; } + const CString& getVersion() const { return _version; } + BOOL shouldShutDown() const { return _shouldShutdown; } + BOOL needsUpdate() { return _shouldUpdate; } + BOOL needsUninstall() { return _shouldUninstall; } + void setDisplayName(const CString& displayName) { _displayName = displayName; } + bool isLoggedIn() { return _loggedIn; } + const CString& getLatestInterfaceURL() const { return _latestApplicationURL; } + void uninstall() { _shouldUninstall = true; }; - BOOL downloadFile(DownloadType type, const CString& url, CString& localPath); - BOOL downloadContent(); - BOOL downloadApplication(); - BOOL installContent(); - BOOL extractApplication(); - void onZipExtracted(ZipType type, int size); - void onFileDownloaded(DownloadType type); + BOOL downloadFile(DownloadType type, const CString& url, CString& localPath); + BOOL downloadContent(); + BOOL downloadApplication(); + BOOL installContent(); + BOOL extractApplication(); + void onZipExtracted(ZipType type, int size); + void onFileDownloaded(DownloadType type); private: - CString _latestApplicationURL; - CString _latestVersion; - CString _contentURL; - CString _domainURL; - CString _version; - CString _displayName; - CString _tokensJSON; - CString _applicationZipPath; - CString _contentZipPath; - bool _loggedIn{ false }; - BOOL _shouldUpdate{ FALSE }; - BOOL _shouldUninstall{ FALSE }; - BOOL _shouldShutdown{ FALSE }; + CString _latestApplicationURL; + CString _latestVersion; + CString _contentURL; + CString _domainURL; + CString _version; + CString _displayName; + CString _tokensJSON; + CString _applicationZipPath; + CString _contentZipPath; + bool _loggedIn{ false }; + BOOL _shouldUpdate{ FALSE }; + BOOL _shouldUninstall{ FALSE }; + BOOL _shouldShutdown{ FALSE }; CStdioFile _logFile; }; diff --git a/launchers/win32/LauncherUtils.cpp b/launchers/win32/LauncherUtils.cpp index 22724ac499..0309671bc2 100644 --- a/launchers/win32/LauncherUtils.cpp +++ b/launchers/win32/LauncherUtils.cpp @@ -36,360 +36,360 @@ CString LauncherUtils::urlEncodeString(const CString& url) { } BOOL LauncherUtils::IsProcessRunning(const wchar_t *processName) { - bool exists = false; - PROCESSENTRY32 entry; - entry.dwSize = sizeof(PROCESSENTRY32); + bool exists = false; + PROCESSENTRY32 entry; + entry.dwSize = sizeof(PROCESSENTRY32); - HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); + HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); - if (Process32First(snapshot, &entry)) { - while (Process32Next(snapshot, &entry)) { - if (!_wcsicmp(entry.szExeFile, processName)) { - exists = true; - break; - } - } - } - CloseHandle(snapshot); - return exists; + if (Process32First(snapshot, &entry)) { + while (Process32Next(snapshot, &entry)) { + if (!_wcsicmp(entry.szExeFile, processName)) { + exists = true; + break; + } + } + } + CloseHandle(snapshot); + return exists; } HRESULT LauncherUtils::CreateLink(LPCWSTR lpszPathObj, LPCSTR lpszPathLink, LPCWSTR lpszDesc, LPCWSTR lpszArgs) { - IShellLink* psl; + IShellLink* psl; - // Get a pointer to the IShellLink interface. It is assumed that CoInitialize - // has already been called. - CoInitialize(NULL); - HRESULT hres = E_INVALIDARG; - if ((lpszPathObj != NULL) && (wcslen(lpszPathObj) > 0) && - (lpszDesc != NULL) && - (lpszPathLink != NULL) && (strlen(lpszPathLink) > 0)) { - hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); - if (SUCCEEDED(hres)) { - IPersistFile* ppf; + // Get a pointer to the IShellLink interface. It is assumed that CoInitialize + // has already been called. + CoInitialize(NULL); + HRESULT hres = E_INVALIDARG; + if ((lpszPathObj != NULL) && (wcslen(lpszPathObj) > 0) && + (lpszDesc != NULL) && + (lpszPathLink != NULL) && (strlen(lpszPathLink) > 0)) { + hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); + if (SUCCEEDED(hres)) { + IPersistFile* ppf; - // Set the path to the shortcut target and add the description. - psl->SetPath(lpszPathObj); - psl->SetDescription(lpszDesc); - psl->SetArguments(lpszArgs); + // Set the path to the shortcut target and add the description. + psl->SetPath(lpszPathObj); + psl->SetDescription(lpszDesc); + psl->SetArguments(lpszArgs); - // Query IShellLink for the IPersistFile interface, used for saving the - // shortcut in persistent storage. - hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf); + // Query IShellLink for the IPersistFile interface, used for saving the + // shortcut in persistent storage. + hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf); - if (SUCCEEDED(hres)) { - WCHAR wsz[MAX_PATH]; + if (SUCCEEDED(hres)) { + WCHAR wsz[MAX_PATH]; - // Ensure that the string is Unicode. - MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH); + // Ensure that the string is Unicode. + MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH); - // Add code here to check return value from MultiByteWideChar - // for success. + // Add code here to check return value from MultiByteWideChar + // for success. - // Save the link by calling IPersistFile::Save. - hres = ppf->Save(wsz, TRUE); - ppf->Release(); - } - psl->Release(); - } - } - CoUninitialize(); - return SUCCEEDED(hres); + // Save the link by calling IPersistFile::Save. + hres = ppf->Save(wsz, TRUE); + ppf->Release(); + } + psl->Release(); + } + } + CoUninitialize(); + return SUCCEEDED(hres); } std::string LauncherUtils::cStringToStd(CString cstring) { - CT2CA convertedString(cstring); - std::string strStd(convertedString); - return strStd; + CT2CA convertedString(cstring); + std::string strStd(convertedString); + return strStd; } BOOL LauncherUtils::launchApplication(LPCWSTR lpApplicationName, LPTSTR cmdArgs) { - // additional information - STARTUPINFO si; - PROCESS_INFORMATION pi; + // additional information + STARTUPINFO si; + PROCESS_INFORMATION pi; - // set the size of the structures - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); + // set the size of the structures + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + ZeroMemory(&pi, sizeof(pi)); - // start the program up - BOOL success = CreateProcess( - lpApplicationName, // the path - cmdArgs, // Command line - NULL, // Process handle not inheritable - NULL, // Thread handle not inheritable - FALSE, // Set handle inheritance to FALSE - CREATE_NEW_CONSOLE, // Opens file in a separate console - NULL, // Use parent's environment block - NULL, // Use parent's starting directory - &si, // Pointer to STARTUPINFO structure - &pi // Pointer to PROCESS_INFORMATION structure - ); - // Close process and thread handles. - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - return success; + // start the program up + BOOL success = CreateProcess( + lpApplicationName, // the path + cmdArgs, // Command line + NULL, // Process handle not inheritable + NULL, // Thread handle not inheritable + FALSE, // Set handle inheritance to FALSE + CREATE_NEW_CONSOLE, // Opens file in a separate console + NULL, // Use parent's environment block + NULL, // Use parent's starting directory + &si, // Pointer to STARTUPINFO structure + &pi // Pointer to PROCESS_INFORMATION structure + ); + // Close process and thread handles. + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return success; } BOOL LauncherUtils::deleteRegistryKey(const CString& registryPath) { - TCHAR szDelKey[MAX_PATH * 2]; - StringCchCopy(szDelKey, MAX_PATH * 2, registryPath); - auto status = RegDeleteKey(HKEY_CURRENT_USER, szDelKey); - if (status == ERROR_SUCCESS) { - return TRUE; - } - return FALSE; + TCHAR szDelKey[MAX_PATH * 2]; + StringCchCopy(szDelKey, MAX_PATH * 2, registryPath); + auto status = RegDeleteKey(HKEY_CURRENT_USER, szDelKey); + if (status == ERROR_SUCCESS) { + return TRUE; + } + return FALSE; } LauncherUtils::ResponseError LauncherUtils::makeHTTPCall(const CString& callerName, - const CString& mainUrl, const CString& dirUrl, - const CString& contentType, CStringA& postData, - CString& response, bool isPost = false) { + const CString& mainUrl, const CString& dirUrl, + const CString& contentType, CStringA& postData, + CString& response, bool isPost = false) { - HINTERNET hopen = WinHttpOpen(callerName, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, - WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); - if (!hopen) { - return ResponseError::Open; - } - HINTERNET hconnect = WinHttpConnect(hopen, mainUrl, INTERNET_DEFAULT_HTTPS_PORT, 0); - if (!hconnect) { - return ResponseError::Connect; - } - HINTERNET hrequest = WinHttpOpenRequest(hconnect, isPost ? L"POST" : L"GET", dirUrl, - NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); - if (!hrequest) { - return ResponseError::OpenRequest; - } - if (isPost) { - if (!WinHttpSendRequest(hrequest, contentType, -1, - postData.GetBuffer(postData.GetLength()), (DWORD)strlen(postData), (DWORD)strlen(postData), NULL)) { - return ResponseError::SendRequest; - } - } else { - if (!WinHttpSendRequest(hrequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0)) { - return ResponseError::SendRequest; - } - } - if (!WinHttpReceiveResponse(hrequest, 0)) { - return ResponseError::ReceiveRequest; - } - // query remote file size, set haveContentLength on success and dwContentLength to the length - wchar_t szContentLength[32]; - DWORD bufferBytes = 4096; - DWORD dwHeaderIndex = WINHTTP_NO_HEADER_INDEX; + HINTERNET hopen = WinHttpOpen(callerName, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, + WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); + if (!hopen) { + return ResponseError::Open; + } + HINTERNET hconnect = WinHttpConnect(hopen, mainUrl, INTERNET_DEFAULT_HTTPS_PORT, 0); + if (!hconnect) { + return ResponseError::Connect; + } + HINTERNET hrequest = WinHttpOpenRequest(hconnect, isPost ? L"POST" : L"GET", dirUrl, + NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); + if (!hrequest) { + return ResponseError::OpenRequest; + } + if (isPost) { + if (!WinHttpSendRequest(hrequest, contentType, -1, + postData.GetBuffer(postData.GetLength()), (DWORD)strlen(postData), (DWORD)strlen(postData), NULL)) { + return ResponseError::SendRequest; + } + } else { + if (!WinHttpSendRequest(hrequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0)) { + return ResponseError::SendRequest; + } + } + if (!WinHttpReceiveResponse(hrequest, 0)) { + return ResponseError::ReceiveRequest; + } + // query remote file size, set haveContentLength on success and dwContentLength to the length + wchar_t szContentLength[32]; + DWORD bufferBytes = 4096; + DWORD dwHeaderIndex = WINHTTP_NO_HEADER_INDEX; - BOOL haveContentLength = WinHttpQueryHeaders(hrequest, WINHTTP_QUERY_CONTENT_LENGTH, NULL, - &szContentLength, &bufferBytes, &dwHeaderIndex); + BOOL haveContentLength = WinHttpQueryHeaders(hrequest, WINHTTP_QUERY_CONTENT_LENGTH, NULL, + &szContentLength, &bufferBytes, &dwHeaderIndex); - DWORD dwContentLength; - if (haveContentLength) { - dwContentLength = _wtoi(szContentLength); - } - byte p[4096]; - if (!WinHttpQueryDataAvailable(hrequest, &bufferBytes)) { - return ResponseError::ReadResponse; - } - WinHttpReadData(hrequest, p, bufferBytes, &bufferBytes); - response = CString((const char*)p, (int)bufferBytes); - return ResponseError::NoError; + DWORD dwContentLength; + if (haveContentLength) { + dwContentLength = _wtoi(szContentLength); + } + byte p[4096]; + if (!WinHttpQueryDataAvailable(hrequest, &bufferBytes)) { + return ResponseError::ReadResponse; + } + WinHttpReadData(hrequest, p, bufferBytes, &bufferBytes); + response = CString((const char*)p, (int)bufferBytes); + return ResponseError::NoError; } BOOL LauncherUtils::parseJSON(const CString& jsonTxt, Json::Value& root) { - Json::CharReaderBuilder CharBuilder; - std::string jsonString = cStringToStd(jsonTxt); - std::string errs; - Json::CharReader* nreader = CharBuilder.newCharReader(); - bool parsingSuccessful = false; - if (nreader != NULL) { - parsingSuccessful = nreader->parse(jsonString.c_str(), jsonString.c_str() + jsonString.length(), &root, &errs); - delete nreader; - } - return parsingSuccessful; + Json::CharReaderBuilder CharBuilder; + std::string jsonString = cStringToStd(jsonTxt); + std::string errs; + Json::CharReader* nreader = CharBuilder.newCharReader(); + bool parsingSuccessful = false; + if (nreader != NULL) { + parsingSuccessful = nreader->parse(jsonString.c_str(), jsonString.c_str() + jsonString.length(), &root, &errs); + delete nreader; + } + return parsingSuccessful; } BOOL LauncherUtils::getFont(const CString& fontName, int fontSize, bool isBold, CFont& fontOut) { - LOGFONT lf; - memset(&lf, 0, sizeof(lf)); - lf.lfHeight = fontSize; - lf.lfWeight = isBold ? FW_BOLD : FW_NORMAL; - lf.lfOutPrecision = OUT_TT_ONLY_PRECIS; - lf.lfQuality = ANTIALIASED_QUALITY; - - wcscpy_s(lf.lfFaceName, fontName); - if (!fontOut.CreateFontIndirect(&lf)) { - return FALSE; - } - return TRUE; + LOGFONT lf; + memset(&lf, 0, sizeof(lf)); + lf.lfHeight = fontSize; + lf.lfWeight = isBold ? FW_BOLD : FW_NORMAL; + lf.lfOutPrecision = OUT_TT_ONLY_PRECIS; + lf.lfQuality = ANTIALIASED_QUALITY; + + wcscpy_s(lf.lfFaceName, fontName); + if (!fontOut.CreateFontIndirect(&lf)) { + return FALSE; + } + return TRUE; } uint64_t LauncherUtils::extractZip(const std::string& zipFile, const std::string& path, std::vector& files) { - mz_zip_archive zip_archive; - memset(&zip_archive, 0, sizeof(zip_archive)); + mz_zip_archive zip_archive; + memset(&zip_archive, 0, sizeof(zip_archive)); - auto status = mz_zip_reader_init_file(&zip_archive, zipFile.c_str(), 0); + auto status = mz_zip_reader_init_file(&zip_archive, zipFile.c_str(), 0); - if (!status) return 0; - int fileCount = (int)mz_zip_reader_get_num_files(&zip_archive); - if (fileCount == 0) { - mz_zip_reader_end(&zip_archive); - return 0; - } - mz_zip_archive_file_stat file_stat; - if (!mz_zip_reader_file_stat(&zip_archive, 0, &file_stat)) { - mz_zip_reader_end(&zip_archive); - return 0; - } - // Get root folder - CString lastDir = _T(""); - uint64_t totalSize = 0; - for (int i = 0; i < fileCount; i++) { - if (!mz_zip_reader_file_stat(&zip_archive, i, &file_stat)) continue; - std::string filename = file_stat.m_filename; - std::replace(filename.begin(), filename.end(), '/', '\\'); - CString fullFilename = CString(path.c_str()) + "\\" + CString(filename.c_str()); - if (mz_zip_reader_is_file_a_directory(&zip_archive, i)) { - if (SHCreateDirectoryEx(NULL, fullFilename, NULL) || ERROR_ALREADY_EXISTS == GetLastError()) { - break; - } else { - continue; - } - } - CT2A destFile(fullFilename); - if (mz_zip_reader_extract_to_file(&zip_archive, i, destFile, 0)) { - totalSize += (uint64_t)file_stat.m_uncomp_size; - files.emplace_back(destFile); - } - } + if (!status) return 0; + int fileCount = (int)mz_zip_reader_get_num_files(&zip_archive); + if (fileCount == 0) { + mz_zip_reader_end(&zip_archive); + return 0; + } + mz_zip_archive_file_stat file_stat; + if (!mz_zip_reader_file_stat(&zip_archive, 0, &file_stat)) { + mz_zip_reader_end(&zip_archive); + return 0; + } + // Get root folder + CString lastDir = _T(""); + uint64_t totalSize = 0; + for (int i = 0; i < fileCount; i++) { + if (!mz_zip_reader_file_stat(&zip_archive, i, &file_stat)) continue; + std::string filename = file_stat.m_filename; + std::replace(filename.begin(), filename.end(), '/', '\\'); + CString fullFilename = CString(path.c_str()) + "\\" + CString(filename.c_str()); + if (mz_zip_reader_is_file_a_directory(&zip_archive, i)) { + if (SHCreateDirectoryEx(NULL, fullFilename, NULL) || ERROR_ALREADY_EXISTS == GetLastError()) { + break; + } else { + continue; + } + } + CT2A destFile(fullFilename); + if (mz_zip_reader_extract_to_file(&zip_archive, i, destFile, 0)) { + totalSize += (uint64_t)file_stat.m_uncomp_size; + files.emplace_back(destFile); + } + } - // Close the archive, freeing any resources it was using - mz_zip_reader_end(&zip_archive); - return totalSize; + // Close the archive, freeing any resources it was using + mz_zip_reader_end(&zip_archive); + return totalSize; } BOOL LauncherUtils::insertRegistryKey(const std::string& regPath, const std::string& name, const std::string& value) { - HKEY key; - auto status = RegCreateKeyExA(HKEY_CURRENT_USER, regPath.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_QUERY_VALUE, NULL, &key, NULL); - if (status == ERROR_SUCCESS) { - status = RegSetValueExA(key, name.c_str(), 0, REG_SZ, (const BYTE*)value.c_str(), (DWORD)(value.size() + 1)); - return status == ERROR_SUCCESS; - } - RegCloseKey(key); - return FALSE; + HKEY key; + auto status = RegCreateKeyExA(HKEY_CURRENT_USER, regPath.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_QUERY_VALUE, NULL, &key, NULL); + if (status == ERROR_SUCCESS) { + status = RegSetValueExA(key, name.c_str(), 0, REG_SZ, (const BYTE*)value.c_str(), (DWORD)(value.size() + 1)); + return status == ERROR_SUCCESS; + } + RegCloseKey(key); + return FALSE; } BOOL LauncherUtils::insertRegistryKey(const std::string& regPath, const std::string& name, DWORD value) { - HKEY key; - auto status = RegCreateKeyExA(HKEY_CURRENT_USER, regPath.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_QUERY_VALUE, NULL, &key, NULL); - if (status == ERROR_SUCCESS) { - status = RegSetValueExA(key, name.c_str(), 0, REG_DWORD, (const BYTE*)&value, sizeof(value)); - return TRUE; - } - RegCloseKey(key); - return FALSE; + HKEY key; + auto status = RegCreateKeyExA(HKEY_CURRENT_USER, regPath.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_QUERY_VALUE, NULL, &key, NULL); + if (status == ERROR_SUCCESS) { + status = RegSetValueExA(key, name.c_str(), 0, REG_DWORD, (const BYTE*)&value, sizeof(value)); + return TRUE; + } + RegCloseKey(key); + return FALSE; } BOOL LauncherUtils::deleteFileOrDirectory(const CString& dirPath, bool noRecycleBin) { - CString dir = dirPath; - // Add extra null to string - dir.AppendChar(0); - SHFILEOPSTRUCT fileop; - fileop.hwnd = NULL; // no status display - fileop.wFunc = FO_DELETE; // delete operation - fileop.pFrom = dir; // source file name as double null terminated string - fileop.pTo = NULL; // no destination needed - fileop.fFlags = FOF_NOCONFIRMATION | FOF_SILENT; // do not prompt the user + CString dir = dirPath; + // Add extra null to string + dir.AppendChar(0); + SHFILEOPSTRUCT fileop; + fileop.hwnd = NULL; // no status display + fileop.wFunc = FO_DELETE; // delete operation + fileop.pFrom = dir; // source file name as double null terminated string + fileop.pTo = NULL; // no destination needed + fileop.fFlags = FOF_NOCONFIRMATION | FOF_SILENT; // do not prompt the user - if (!noRecycleBin) { - fileop.fFlags |= FOF_ALLOWUNDO; - } + if (!noRecycleBin) { + fileop.fFlags |= FOF_ALLOWUNDO; + } - fileop.fAnyOperationsAborted = FALSE; - fileop.lpszProgressTitle = NULL; - fileop.hNameMappings = NULL; + fileop.fAnyOperationsAborted = FALSE; + fileop.lpszProgressTitle = NULL; + fileop.hNameMappings = NULL; - int ret = SHFileOperation(&fileop); - return (ret == 0); + int ret = SHFileOperation(&fileop); + return (ret == 0); } BOOL LauncherUtils::hMac256(const CString& cmessage, const char* keystr, CString& hashOut) { - char message[256]; - strcpy_s(message, CStringA(cmessage).GetString()); - char key[256]; - strcpy_s(key, keystr); - HCRYPTPROV hProv = 0; - HCRYPTHASH hHash = 0; - HCRYPTKEY hKey = 0; - HCRYPTHASH hHmacHash = 0; - BYTE pbHash[32]; - HMAC_INFO HmacInfo; - int err = 0; - typedef struct blob { - BLOBHEADER header; - DWORD len; - BYTE key[1]; - } m_blob; + char message[256]; + strcpy_s(message, CStringA(cmessage).GetString()); + char key[256]; + strcpy_s(key, keystr); + HCRYPTPROV hProv = 0; + HCRYPTHASH hHash = 0; + HCRYPTKEY hKey = 0; + HCRYPTHASH hHmacHash = 0; + BYTE pbHash[32]; + HMAC_INFO HmacInfo; + int err = 0; + typedef struct blob { + BLOBHEADER header; + DWORD len; + BYTE key[1]; + } m_blob; - ZeroMemory(&HmacInfo, sizeof(HmacInfo)); - HmacInfo.HashAlgid = CALG_SHA_256; - ZeroMemory(&pbHash, 32); - m_blob* kb = NULL; - DWORD kbSize = DWORD(sizeof(m_blob) + strlen(key)); + ZeroMemory(&HmacInfo, sizeof(HmacInfo)); + HmacInfo.HashAlgid = CALG_SHA_256; + ZeroMemory(&pbHash, 32); + m_blob* kb = NULL; + DWORD kbSize = DWORD(sizeof(m_blob) + strlen(key)); - kb = (m_blob*)malloc(kbSize); - kb->header.bType = PLAINTEXTKEYBLOB; - kb->header.bVersion = CUR_BLOB_VERSION; - kb->header.reserved = 0; - kb->header.aiKeyAlg = CALG_RC2; - memcpy(&kb->key, key, strlen(key)); - kb->len = (DWORD)strlen(key); - BOOL success = false; - DWORD datalen = (DWORD)32; - if (CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_NEWKEYSET) - && CryptImportKey(hProv, (BYTE*)kb, kbSize, 0, CRYPT_IPSEC_HMAC_KEY, &hKey) - && CryptCreateHash(hProv, CALG_HMAC, hKey, 0, &hHmacHash) - && CryptSetHashParam(hHmacHash, HP_HMAC_INFO, (BYTE*)&HmacInfo, 0) - && CryptHashData(hHmacHash, (BYTE*)message, (DWORD)strlen(message), 0) - && CryptGetHashParam(hHmacHash, HP_HASHVAL, pbHash, &datalen, 0)) { - char *Hex = "0123456789abcdef"; - char HashString[65] = { 0 }; - for (int Count = 0; Count < 32; Count++) - { - HashString[Count * 2] = Hex[pbHash[Count] >> 4]; - HashString[(Count * 2) + 1] = Hex[pbHash[Count] & 0xF]; - } - hashOut = CString(HashString); - success = true; - } + kb = (m_blob*)malloc(kbSize); + kb->header.bType = PLAINTEXTKEYBLOB; + kb->header.bVersion = CUR_BLOB_VERSION; + kb->header.reserved = 0; + kb->header.aiKeyAlg = CALG_RC2; + memcpy(&kb->key, key, strlen(key)); + kb->len = (DWORD)strlen(key); + BOOL success = false; + DWORD datalen = (DWORD)32; + if (CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_NEWKEYSET) + && CryptImportKey(hProv, (BYTE*)kb, kbSize, 0, CRYPT_IPSEC_HMAC_KEY, &hKey) + && CryptCreateHash(hProv, CALG_HMAC, hKey, 0, &hHmacHash) + && CryptSetHashParam(hHmacHash, HP_HMAC_INFO, (BYTE*)&HmacInfo, 0) + && CryptHashData(hHmacHash, (BYTE*)message, (DWORD)strlen(message), 0) + && CryptGetHashParam(hHmacHash, HP_HASHVAL, pbHash, &datalen, 0)) { + char *Hex = "0123456789abcdef"; + char HashString[65] = { 0 }; + for (int Count = 0; Count < 32; Count++) + { + HashString[Count * 2] = Hex[pbHash[Count] >> 4]; + HashString[(Count * 2) + 1] = Hex[pbHash[Count] & 0xF]; + } + hashOut = CString(HashString); + success = true; + } - free(kb); - if (hHmacHash) - CryptDestroyHash(hHmacHash); - if (hKey) - CryptDestroyKey(hKey); - if (hHash) - CryptDestroyHash(hHash); - if (hProv) - CryptReleaseContext(hProv, 0); - return success; + free(kb); + if (hHmacHash) + CryptDestroyHash(hHmacHash); + if (hKey) + CryptDestroyKey(hKey); + if (hHash) + CryptDestroyHash(hHash); + if (hProv) + CryptReleaseContext(hProv, 0); + return success; } DWORD WINAPI LauncherUtils::unzipThread(LPVOID lpParameter) { - UnzipThreadData& data = *((UnzipThreadData*)lpParameter); - uint64_t size = LauncherUtils::extractZip(data._zipFile, data._path, std::vector()); - int mb_size = (int)(size * 0.001f); - data.callback(data._type, mb_size); - delete &data; - return 0; + UnzipThreadData& data = *((UnzipThreadData*)lpParameter); + uint64_t size = LauncherUtils::extractZip(data._zipFile, data._path, std::vector()); + int mb_size = (int)(size * 0.001f); + data.callback(data._type, mb_size); + delete &data; + return 0; } DWORD WINAPI LauncherUtils::downloadThread(LPVOID lpParameter) { - DownloadThreadData& data = *((DownloadThreadData*)lpParameter); - auto hr = URLDownloadToFile(0, data._url, data._file, 0, NULL); - data.callback(data._type); - return 0; + DownloadThreadData& data = *((DownloadThreadData*)lpParameter); + auto hr = URLDownloadToFile(0, data._url, data._file, 0, NULL); + data.callback(data._type); + return 0; } DWORD WINAPI LauncherUtils::deleteDirectoriesThread(LPVOID lpParameter) { @@ -406,33 +406,33 @@ DWORD WINAPI LauncherUtils::deleteDirectoriesThread(LPVOID lpParameter) { } BOOL LauncherUtils::unzipFileOnThread(int type, const std::string& zipFile, const std::string& path, std::function callback) { - DWORD myThreadID; - UnzipThreadData* unzipThreadData = new UnzipThreadData(); - unzipThreadData->_type = type; - unzipThreadData->_zipFile = zipFile; - unzipThreadData->_path = path; - unzipThreadData->setCallback(callback); - HANDLE myHandle = CreateThread(0, 0, unzipThread, unzipThreadData, 0, &myThreadID); - if (myHandle) { - CloseHandle(myHandle); - return TRUE; - } - return FALSE; + DWORD myThreadID; + UnzipThreadData* unzipThreadData = new UnzipThreadData(); + unzipThreadData->_type = type; + unzipThreadData->_zipFile = zipFile; + unzipThreadData->_path = path; + unzipThreadData->setCallback(callback); + HANDLE myHandle = CreateThread(0, 0, unzipThread, unzipThreadData, 0, &myThreadID); + if (myHandle) { + CloseHandle(myHandle); + return TRUE; + } + return FALSE; } BOOL LauncherUtils::downloadFileOnThread(int type, const CString& url, const CString& file, std::function callback) { - DWORD myThreadID; - DownloadThreadData* downloadThreadData = new DownloadThreadData(); - downloadThreadData->_type = type; - downloadThreadData->_url = url; - downloadThreadData->_file = file; - downloadThreadData->setCallback(callback); - HANDLE myHandle = CreateThread(0, 0, downloadThread, downloadThreadData, 0, &myThreadID); - if (myHandle) { - CloseHandle(myHandle); - return TRUE; - } - return FALSE; + DWORD myThreadID; + DownloadThreadData* downloadThreadData = new DownloadThreadData(); + downloadThreadData->_type = type; + downloadThreadData->_url = url; + downloadThreadData->_file = file; + downloadThreadData->setCallback(callback); + HANDLE myHandle = CreateThread(0, 0, downloadThread, downloadThreadData, 0, &myThreadID); + if (myHandle) { + CloseHandle(myHandle); + return TRUE; + } + return FALSE; } BOOL LauncherUtils::deleteDirectoriesOnThread(const CString& applicationDir, diff --git a/launchers/win32/LauncherUtils.h b/launchers/win32/LauncherUtils.h index 47a8fc56c8..504212fcde 100644 --- a/launchers/win32/LauncherUtils.h +++ b/launchers/win32/LauncherUtils.h @@ -18,17 +18,17 @@ class LauncherUtils { public: - enum ResponseError { - Open = 0, - Connect, - OpenRequest, - SendRequest, - ReceiveRequest, - ReadResponse, - ParsingJSON, - BadCredentials, - NoError - }; + enum ResponseError { + Open = 0, + Connect, + OpenRequest, + SendRequest, + ReceiveRequest, + ReadResponse, + ParsingJSON, + BadCredentials, + NoError + }; enum DeleteDirError { NoErrorDeleting = 0, @@ -37,27 +37,27 @@ public: ErrorDeletingBothDirs }; - struct DownloadThreadData { - int _type; - CString _url; - CString _file; - std::function callback; - // function(type) - void setCallback(std::function fn) { - callback = std::bind(fn, std::placeholders::_1); - } - }; + struct DownloadThreadData { + int _type; + CString _url; + CString _file; + std::function callback; + // function(type) + void setCallback(std::function fn) { + callback = std::bind(fn, std::placeholders::_1); + } + }; - struct UnzipThreadData { - int _type; - std::string _zipFile; - std::string _path; - // function(type, size) - std::function callback; - void setCallback(std::function fn) { - callback = std::bind(fn, std::placeholders::_1, std::placeholders::_2); - } - }; + struct UnzipThreadData { + int _type; + std::string _zipFile; + std::string _path; + // function(type, size) + std::function callback; + void setCallback(std::function fn) { + callback = std::bind(fn, std::placeholders::_1, std::placeholders::_2); + } + }; struct DeleteThreadData { CString _applicationDir; @@ -66,31 +66,31 @@ public: void setCallback(std::function fn) { callback = std::bind(fn, std::placeholders::_1); } }; - static BOOL parseJSON(const CString& jsonTxt, Json::Value& jsonObject); - static ResponseError makeHTTPCall(const CString& callerName, const CString& mainUrl, - const CString& dirUrl, const CString& contentType, - CStringA& postData, CString& response, bool isPost); - static std::string cStringToStd(CString cstring); - static BOOL getFont(const CString& fontName, int fontSize, bool isBold, CFont& fontOut); - static BOOL launchApplication(LPCWSTR lpApplicationName, LPTSTR cmdArgs = _T("")); - static BOOL IsProcessRunning(const wchar_t *processName); - static BOOL insertRegistryKey(const std::string& regPath, const std::string& name, const std::string& value); - static BOOL insertRegistryKey(const std::string& regPath, const std::string& name, DWORD value); - static BOOL deleteFileOrDirectory(const CString& dirPath, bool noRecycleBin = true); - static HRESULT CreateLink(LPCWSTR lpszPathObj, LPCSTR lpszPathLink, LPCWSTR lpszDesc, LPCWSTR lpszArgs = _T("")); - static BOOL hMac256(const CString& message, const char* key, CString& hashOut); - static uint64_t extractZip(const std::string& zipFile, const std::string& path, std::vector& files); - static BOOL deleteRegistryKey(const CString& registryPath); - static BOOL unzipFileOnThread(int type, const std::string& zipFile, const std::string& path, std::function callback); - static BOOL downloadFileOnThread(int type, const CString& url, const CString& file, std::function callback); + static BOOL parseJSON(const CString& jsonTxt, Json::Value& jsonObject); + static ResponseError makeHTTPCall(const CString& callerName, const CString& mainUrl, + const CString& dirUrl, const CString& contentType, + CStringA& postData, CString& response, bool isPost); + static std::string cStringToStd(CString cstring); + static BOOL getFont(const CString& fontName, int fontSize, bool isBold, CFont& fontOut); + static BOOL launchApplication(LPCWSTR lpApplicationName, LPTSTR cmdArgs = _T("")); + static BOOL IsProcessRunning(const wchar_t *processName); + static BOOL insertRegistryKey(const std::string& regPath, const std::string& name, const std::string& value); + static BOOL insertRegistryKey(const std::string& regPath, const std::string& name, DWORD value); + static BOOL deleteFileOrDirectory(const CString& dirPath, bool noRecycleBin = true); + static HRESULT CreateLink(LPCWSTR lpszPathObj, LPCSTR lpszPathLink, LPCWSTR lpszDesc, LPCWSTR lpszArgs = _T("")); + static BOOL hMac256(const CString& message, const char* key, CString& hashOut); + static uint64_t extractZip(const std::string& zipFile, const std::string& path, std::vector& files); + static BOOL deleteRegistryKey(const CString& registryPath); + static BOOL unzipFileOnThread(int type, const std::string& zipFile, const std::string& path, std::function callback); + static BOOL downloadFileOnThread(int type, const CString& url, const CString& file, std::function callback); static BOOL deleteDirectoriesOnThread(const CString& applicationDir, const CString& downloadsDir, std::function callback); static CString urlEncodeString(const CString& url); private: - // Threads - static DWORD WINAPI unzipThread(LPVOID lpParameter); - static DWORD WINAPI downloadThread(LPVOID lpParameter); + // Threads + static DWORD WINAPI unzipThread(LPVOID lpParameter); + static DWORD WINAPI downloadThread(LPVOID lpParameter); static DWORD WINAPI deleteDirectoriesThread(LPVOID lpParameter); }; \ No newline at end of file diff --git a/launchers/win32/res/button.png b/launchers/win32/res/button.png deleted file mode 100644 index 64d7cc8df97399f91ca53d6a175036bafa9f181c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17324 zcmeI3c{J4f|Ht3b&AzlqlI|FaWHxIvjj@b1J0rA@na_-gS-l_tKF`nV{XR2u&cwO7 z*eS>^mjwVQIM`cz008y?0Q9Bj0RV0z-RJ-S8IHX#4*5y836mNQ($rZ4OYDE}?4j#EvrKclz0LV&IS@<+^WK7Vk zSk&BX5?`vg9r5b=f(f{vU(a}7OFqW}fM@)$)^UAQ$@1{^3&NS>r&bNk_unR$wQKYs ztysz8637~8_a5O0v#~jOxa{%czTVzP8|th!lW%+P9jDi9uks!X{3{IqdGy`WYtOYK z47Ntt&HwPU=FVHEGb>t-$n5v)e34-H`Lf)^XN`OCItRZpAH5|#?u&xrtdv<(MwtZ+lAaE|rf-OIVtfewTZ3x!EC;ll^z| z{gv7i2*d_-)yrj4hIN5xWPPpGg?0KeNtDJ5@B;b#`sL?07D$%Iy`!{T2%f(v!lp{b zWPY#}jJ(p)-p9$u<&k|3Y=ySb!gd)`8OiJehHZ*m>fm^$@YJz;%l%dTM;Yf{@~ z<39QJ`R@64uPaT82D3BHR@#*Neu_}EY}lZ)MaPbw(ELM2zvpAmC)u*uOP$Sd?~0Il z0cX@tmRkp3XJrqiWM11Ap6SHS?h2{w|F~i=YK%0-{FwdDPTprhiM;lL4*BL~_#4JS zY`g}lq2o_?;?`OV;u-QWa`LnNiDj+$)AwzEu~j<6sNd3~-NUSB)}LOzV72CIN9R}0 zLunq)WoOr%UGKEssiEmk)2XHhsmAGMn1=@a>HX;s)4MP4*d*AbUz$^T1#&3v-E`J> zsI-C=wF&Ec#>Z>Z))L#ojKWn9$_vZ07iO2aB)Q~gKA_j0|FiT~Y3^mU^L>vNbQF~` zOZSrLeya4#H;QV9k}8w-Ufui4n3H~}bKKX6OeP@H)$5s$U+)_XO^*J%k>-X_rBl@Af;URhMsGZgj0>XKs(`CjP87L7fPl zXa(8ft0d@>aS@ggo9BJ{5c-qm^>}k!2lT%9@u20QtTIa#%Y=P}`}(R2HT`e?akx-( zv_GXev6-P5t?~~!<5a_r9i_|MJVFh06{yaDm^E~6ZT+bfW z6x7YFoRE{vHE*M`m*yfD>En)DIK{fGJNkc?%6d6V53L$r9K0%CHl#+Qh7L!ynzY6~ zB5u)J=`w7u=Nx+EkHiY&5bYa=XY~8Z_Uq&xu5eOtdXkRIT$;8U#xyX)RbnEKBpwd3 z%F}dCDy6@ozo6}IEP$el$8WF>UPi4vCUq;Iy zxZBv{`I&2*2Je*I?l^3E;?1uUgNtewJv&l*Cfd;(q2cqQvS25+7#|eUA={(!!`kSL z3kvX84wULK@4My?dM6i!Rjv+o4v5%ReS2T^C5eF7a$d51QF~u^J{;WY>Vxv_zC`{Q zouN)pi91lVq(e1X<>yDboq|5~820V!shvkJ=H}OxQCnzjw1F30h|JB3$Mce3BrCEM z9=Bgq=-zm7@ZEcx4pefJZbx}!DY5MIb^MhIDEn4((|U8#Z=|=Rk0g_!wkMa!4?nP4 zht&5}yf^yee#hpD(J{iUYaLz^Ue5Pv_n}V?pGro}i{kPIJ{s{ZY?B<5 z(o!saSoZsUjW#oqN5X@(uk92Ye!MoG@g^9dV4~pl%Zd8uS{&<;-hok>?$MPBxc1$L z_7psmy7%L54Y~$ur&Zc;nr*sg+NaHao3FawA+$bt)fM{LuH#3g6GnL7kPRcGTa5OB zefN^+!!3t0j%Dl(L;lsdqvKTRo_pQ0?LL$D=+P#jSi@1nl?XqTN(1_(uoK6GqGk* zDn~-uqc=w1buWDq#?={XZY+NstTR+t;aai%t;L|_W8#yT`{tX+J0HF2{CQ_paMnm` zr`_m+sK}P_#CHiw#2*q;6B?rxqF-mOBVe)5&ADR(pR>fJ#$HvuRy)^GUsJ#G+AV=0X4~71p9ZUgJA*aeobFa~?fnV% zv+jidUl-na-p&4$q?VL4F<&xexklb1%NprAmA39(@I6Hrpes?)0^SeqO-)1-e-<3R42nRxWKs@#?E(NmL4YBxI-@ACumro$y zxBEK%k9W^!&}JUaH#Z@i`9~QfVEltjI5Q=iY=tTC0wxDX|Ouy}kjivl@V69h~SlEI+jFl6dFQ?jWs0&8N7L158FWW+kin1-OCDP%N+HZi6c z&?e(>{zm>cYil-Tm$2`rt*Ihf&yxSm+Lg$PQ$4o!L}~V2GbN@n#LrtUpWTKqR_NePKi3dDvOO z9Bhat7_5m2!T^bxZ8NKGmXGjo6m}xS;*%#k0E3@AFuxg_Tkj+6sK8y5^`-`BG#ZV< z2>(w@XHUzPr_%G}kSUPx*5(e)t#)Gwpg`?5(#l!A|Z}TB*bxvgg7pd5XU7F;wNQmPS32|H^ zA&yHV#Bqs)I4+S8$0ZWtxI{u6mq>`?5(#l!A|Z}TB*bxvgg7pd_}92(XMR5jv8ZP7 zV7NKK37-4`005)ddpH9Sx(a~sNC5tt03dt-fL&++UhMz?mjZw)`^feiwg3P>2Wv}` zp#6^yj08Z-*Ph??8Jn$}<`|vToz$DF_Gj_?Y`6GzLC@hXTk7Ht{_Bf{I@2}67ngsb gmvznqU}8cNn03iJXh Date: Tue, 11 Jun 2019 09:58:01 -0700 Subject: [PATCH 039/106] Implement BUGZ-633: Change 'Graphics Preset' --- .../qml/hifi/simplifiedUI/settingsApp/general/General.qml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml index 9c3a33412e..4ec3f59598 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml @@ -101,7 +101,7 @@ Flickable { HifiStylesUit.GraphikRegular { id: performanceTitle - text: "Graphics Preset" + text: "Graphics Settings" Layout.maximumWidth: parent.width height: paintedHeight size: 22 @@ -115,7 +115,7 @@ Flickable { SimplifiedControls.RadioButton { id: performanceLow - text: "Low" + text: "Low Quality" + (PlatformInfo.getTierProfiled() === PerformanceEnums.LOW ? " (Recommended)" : "") checked: Performance.getPerformancePreset() === PerformanceEnums.LOW onClicked: { Performance.setPerformancePreset(PerformanceEnums.LOW); @@ -124,7 +124,7 @@ Flickable { SimplifiedControls.RadioButton { id: performanceMedium - text: "Medium" + text: "Medium Quality" + (PlatformInfo.getTierProfiled() === PerformanceEnums.MID ? " (Recommended)" : "") checked: Performance.getPerformancePreset() === PerformanceEnums.MID onClicked: { Performance.setPerformancePreset(PerformanceEnums.MID); @@ -133,7 +133,7 @@ Flickable { SimplifiedControls.RadioButton { id: performanceHigh - text: "High" + text: "High Quality" + (PlatformInfo.getTierProfiled() === PerformanceEnums.HIGH ? " (Recommended)" : "") checked: Performance.getPerformancePreset() === PerformanceEnums.HIGH onClicked: { Performance.setPerformancePreset(PerformanceEnums.HIGH); From bd446192e8d05098ea55789dfdbd57b910cb5767 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Tue, 11 Jun 2019 10:31:22 -0700 Subject: [PATCH 040/106] get windows error before calling io --- libraries/networking/src/udt/Socket.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 6e27fd2483..5258582fce 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -63,7 +63,8 @@ void Socket::bind(const QHostAddress& address, quint16 port) { auto sd = _udpSocket.socketDescriptor(); int val = 0; // false if (setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, (const char *)&val, sizeof(val))) { - qCWarning(networking) << "Socket::bind Cannot setsockopt IP_DONTFRAGMENT" << WSAGetLastError(); + int wsaError = WSAGetLastError(); + qCWarning(networking) << "Socket::bind Cannot setsockopt IP_DONTFRAGMENT" << wsaError; } #endif } From db2ce822b71ed3e9b5ee4d597629c1301113f25c Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 11 Jun 2019 10:52:45 -0700 Subject: [PATCH 041/106] BUGZ-610: Auto-select the first avatar from your inventory if you have avatars in your inventory --- .../qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml index b1e2f7bcd2..85b3cf149f 100644 --- a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml +++ b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml @@ -93,6 +93,12 @@ Rectangle { topBarInventoryModel.getNextPage(); } else { inventoryFullyReceived = true; + + // If we have an avatar in our inventory AND we haven't already auto-selected an avatar... + if (!Settings.getValue("simplifiedUI/alreadyAutoSelectedAvatar", false) && topBarInventoryModel.count > 0) { + Settings.setValue("simplifiedUI/alreadyAutoSelectedAvatar", true); + MyAvatar.skeletonModelURL = topBarInventoryModel.get(0).download_url; + } } } } From 40a20aac0d7e25e4f9a5c245d2b914158213ca28 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 11 Jun 2019 09:59:24 -0700 Subject: [PATCH 042/106] Add signing for the windows launcher --- tools/ci-scripts/postbuild.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index 4c05abeb47..18397636d6 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -146,8 +146,29 @@ def buildLightLauncher(): launcherSourceFile = os.path.join(launcherBuildPath, "Release", "HQLauncher.exe") print("Moving {} to {}".format(launcherSourceFile, launcherDestFile)) shutil.move(launcherSourceFile, launcherDestFile) + RELEASE_TYPE = os.getenv("RELEASE_TYPE", "") + HF_PFX_FILE = os.getenv("HF_PFX_FILE", "") + HF_PFX_PASSPHRASE = os.getenv("HF_PFX_PASSPHRASE", "") + # FIXME use logic similar to the SetPackagingParameteres.cmake to locate the executable + SIGN_TOOL = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/signtool.exe" + # Only perform this signing work on Windows non-PR / DEV builds + if (sys.platform == 'win32') and (RELEASE_TYPE == "PRODUCTION") and (HF_PFX_FILE != "") and (HF_PFX_PASSPHRASE != ""): + # sign the launcher executable + print("Signing {}".format(launcherDestFile)) + hifi_utils.executeSubprocess([ + SIGN_TOOL, + 'sign', + '/fd', 'sha256', + '/f', HF_PFX_FILE, + '/p', HF_PFX_PASSPHRASE, + '/tr', 'http://sha256timestamp.ws.symantec.com/sha256/timestamp', + '/td', 'SHA256', + '"{}"'.format(launcherDestFile) + ], folder=launcherBuildPath) + +# Main for wipePath in WIPE_PATHS: wipeClientBuildPath(wipePath) From c5e1f2aedc514078a13bd0b4b003d35d1b693da8 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 11 Jun 2019 11:52:51 -0700 Subject: [PATCH 043/106] change ContextStats::evalDelta to better handle wrapping values in graphics stats --- .../src/gpu/gl/GLBackendPipeline.cpp | 2 +- libraries/gpu/src/gpu/Context.cpp | 28 +++++++++++++------ libraries/gpu/src/gpu/Context.h | 20 ++++++------- libraries/render/src/render/EngineStats.h | 4 +-- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp index 1e811653f9..e94d2986ee 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp @@ -309,7 +309,7 @@ void GLBackend::setResourceTexture(unsigned int slot, const TexturePointer& reso glActiveTexture(GL_TEXTURE0 + slot); glBindTexture(textureState._target, to); (void)CHECK_GL_ERROR(); - _stats._RSAmountTextureMemoryBounded += (int)object->size(); + _stats._RSAmountTextureMemoryBounded += (uint64_t)object->size(); } else { releaseResourceTexture(slot); diff --git a/libraries/gpu/src/gpu/Context.cpp b/libraries/gpu/src/gpu/Context.cpp index 45ee4263a3..927e872fbc 100644 --- a/libraries/gpu/src/gpu/Context.cpp +++ b/libraries/gpu/src/gpu/Context.cpp @@ -8,6 +8,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include #include "Context.h" #include @@ -18,19 +19,28 @@ using namespace gpu; +template +T subWrap(T endValue, T beginValue) { + if (endValue >= beginValue) { + return endValue - beginValue; + } else { + return endValue + ((std::numeric_limits::max() - beginValue) + 1); + } +} + void ContextStats::evalDelta(const ContextStats& begin, const ContextStats& end) { - _ISNumFormatChanges = end._ISNumFormatChanges - begin._ISNumFormatChanges; - _ISNumInputBufferChanges = end._ISNumInputBufferChanges - begin._ISNumInputBufferChanges; - _ISNumIndexBufferChanges = end._ISNumIndexBufferChanges - begin._ISNumIndexBufferChanges; + _ISNumFormatChanges = subWrap(end._ISNumFormatChanges, begin._ISNumFormatChanges); + _ISNumInputBufferChanges = subWrap(end._ISNumInputBufferChanges, begin._ISNumInputBufferChanges); + _ISNumIndexBufferChanges = subWrap(end._ISNumIndexBufferChanges, begin._ISNumIndexBufferChanges); - _RSNumTextureBounded = end._RSNumTextureBounded - begin._RSNumTextureBounded; - _RSAmountTextureMemoryBounded = end._RSAmountTextureMemoryBounded - begin._RSAmountTextureMemoryBounded; + _RSNumTextureBounded = subWrap(end._RSNumTextureBounded, begin._RSNumTextureBounded); + _RSAmountTextureMemoryBounded = subWrap(end._RSAmountTextureMemoryBounded, begin._RSAmountTextureMemoryBounded); - _DSNumAPIDrawcalls = end._DSNumAPIDrawcalls - begin._DSNumAPIDrawcalls; - _DSNumDrawcalls = end._DSNumDrawcalls - begin._DSNumDrawcalls; - _DSNumTriangles= end._DSNumTriangles - begin._DSNumTriangles; + _DSNumAPIDrawcalls = subWrap(end._DSNumAPIDrawcalls, begin._DSNumAPIDrawcalls); + _DSNumDrawcalls = subWrap(end._DSNumDrawcalls, begin._DSNumDrawcalls); + _DSNumTriangles= subWrap(end._DSNumTriangles, begin._DSNumTriangles); - _PSNumSetPipelines = end._PSNumSetPipelines - begin._PSNumSetPipelines; + _PSNumSetPipelines = subWrap(end._PSNumSetPipelines, begin._PSNumSetPipelines); } diff --git a/libraries/gpu/src/gpu/Context.h b/libraries/gpu/src/gpu/Context.h index 7109b3dfeb..1946f447f8 100644 --- a/libraries/gpu/src/gpu/Context.h +++ b/libraries/gpu/src/gpu/Context.h @@ -32,19 +32,19 @@ namespace gpu { struct ContextStats { public: - int _ISNumFormatChanges = 0; - int _ISNumInputBufferChanges = 0; - int _ISNumIndexBufferChanges = 0; + uint32_t _ISNumFormatChanges { 0 }; + uint32_t _ISNumInputBufferChanges { 0 }; + uint32_t _ISNumIndexBufferChanges { 0 }; - int _RSNumResourceBufferBounded = 0; - int _RSNumTextureBounded = 0; - int _RSAmountTextureMemoryBounded = 0; + uint32_t _RSNumResourceBufferBounded { 0 }; + uint32_t _RSNumTextureBounded { 0 }; + uint64_t _RSAmountTextureMemoryBounded { 0 }; - int _DSNumAPIDrawcalls = 0; - int _DSNumDrawcalls = 0; - int _DSNumTriangles = 0; + uint32_t _DSNumAPIDrawcalls { 0 }; + uint32_t _DSNumDrawcalls { 0 }; + uint32_t _DSNumTriangles { 0 }; - int _PSNumSetPipelines = 0; + uint32_t _PSNumSetPipelines { 0 }; ContextStats() {} ContextStats(const ContextStats& stats) = default; diff --git a/libraries/render/src/render/EngineStats.h b/libraries/render/src/render/EngineStats.h index 46be372d5d..f323038ff3 100644 --- a/libraries/render/src/render/EngineStats.h +++ b/libraries/render/src/render/EngineStats.h @@ -56,7 +56,7 @@ namespace render { Q_PROPERTY(quint32 frameTextureCount MEMBER frameTextureCount NOTIFY dirty) Q_PROPERTY(quint32 frameTextureRate MEMBER frameTextureRate NOTIFY dirty) - Q_PROPERTY(quint32 frameTextureMemoryUsage MEMBER frameTextureMemoryUsage NOTIFY dirty) + Q_PROPERTY(quint64 frameTextureMemoryUsage MEMBER frameTextureMemoryUsage NOTIFY dirty) Q_PROPERTY(quint32 frameSetPipelineCount MEMBER frameSetPipelineCount NOTIFY dirty) Q_PROPERTY(quint32 frameSetInputFormatCount MEMBER frameSetInputFormatCount NOTIFY dirty) @@ -124,4 +124,4 @@ namespace render { }; } -#endif \ No newline at end of file +#endif From 8a3672f3c5c15b722c4010e65b024189ef97a122 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Tue, 11 Jun 2019 12:41:45 -0700 Subject: [PATCH 044/106] Checkpoint MTBF uptime reporting --- domain-server/src/DomainGatekeeper.cpp | 22 ++++++++++--------- domain-server/src/NodeConnectionData.cpp | 4 ++++ domain-server/src/NodeConnectionData.h | 2 ++ libraries/networking/src/LimitedNodeList.cpp | 1 + libraries/networking/src/LimitedNodeList.h | 8 +++++++ libraries/networking/src/NodeList.cpp | 14 +++++++++++- .../networking/src/udt/PacketHeaders.cpp | 2 +- libraries/networking/src/udt/PacketHeaders.h | 3 ++- libraries/networking/src/udt/Socket.cpp | 16 ++++++++++---- 9 files changed, 55 insertions(+), 17 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index f5705a570b..289d583719 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -57,7 +57,7 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointergetSize() == 0) { return; } - + QDataStream packetStream(message->getMessage()); // read a NodeConnectionData object from the packet so we can pass around this data while we're inspecting it @@ -88,11 +88,10 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointersecond); } else if (!STATICALLY_ASSIGNED_NODES.contains(nodeConnection.nodeType)) { - QString username; QByteArray usernameSignature; if (message->getBytesLeftToRead() > 0) { @@ -122,9 +121,13 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointersetNodeInterestSet(safeInterestSet); nodeData->setPlaceName(nodeConnection.placeName); - qDebug() << "Allowed connection from node" << uuidStringWithoutCurlyBraces(node->getUUID()) - << "on" << message->getSenderSockAddr() << "with MAC" << nodeConnection.hardwareAddress - << "and machine fingerprint" << nodeConnection.machineFingerprint; + qDebug() << "Allowed connection from node" << uuidStringWithoutCurlyBraces(node->getUUID()) + << "on" << message->getSenderSockAddr() + << "with MAC" << nodeConnection.hardwareAddress + << "and machine fingerprint" << nodeConnection.machineFingerprint + << "user" << username + << "reason" << nodeConnection.connectReason + << "previous connection uptime" << nodeConnection.previousConnectionUpTime/USECS_PER_MSEC << "msec"; // signal that we just connected a node so the DomainServer can get it a list // and broadcast its presence right away @@ -468,7 +471,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect if (node->getPublicSocket() == nodeConnection.publicSockAddr && node->getLocalSocket() == nodeConnection.localSockAddr) { // we have a node that already has these exact sockets // this can occur if a node is failing to connect to the domain - + // remove the old node before adding the new node qDebug() << "Deleting existing connection from same sockaddr: " << node->getUUID(); existingNodeID = node->getUUID(); @@ -842,7 +845,7 @@ void DomainGatekeeper::processICEPingPacket(QSharedPointer mess // before we respond to this ICE ping packet, make sure we have a peer in the list that matches QUuid icePeerID = QUuid::fromRfc4122({ message->getRawMessage(), NUM_BYTES_RFC4122_UUID }); - + if (_icePeers.contains(icePeerID)) { auto pingReplyPacket = limitedNodeList->constructICEPingReplyPacket(*message, limitedNodeList->getSessionUUID()); @@ -882,7 +885,6 @@ void DomainGatekeeper::getGroupMemberships(const QString& username) { QJsonArray groupIDs = QJsonArray::fromStringList(groupIDSet.toList()); json["groups"] = groupIDs; - // if we've already asked, wait for the answer before asking again QString lowerUsername = username.toLower(); if (_inFlightGroupMembershipsRequests.contains(lowerUsername)) { @@ -969,7 +971,7 @@ void DomainGatekeeper::getDomainOwnerFriendsList() { QNetworkAccessManager::GetOperation, callbackParams, QByteArray(), NULL, QVariantMap()); } - + } void DomainGatekeeper::getDomainOwnerFriendsListJSONCallback(QNetworkReply* requestReply) { diff --git a/domain-server/src/NodeConnectionData.cpp b/domain-server/src/NodeConnectionData.cpp index b3ea005bd1..b4aaacd749 100644 --- a/domain-server/src/NodeConnectionData.cpp +++ b/domain-server/src/NodeConnectionData.cpp @@ -35,6 +35,10 @@ NodeConnectionData NodeConnectionData::fromDataStream(QDataStream& dataStream, c // now the machine fingerprint dataStream >> newHeader.machineFingerprint; + + dataStream >> newHeader.connectReason; + + dataStream >> newHeader.previousConnectionUpTime; } dataStream >> newHeader.lastPingTimestamp; diff --git a/domain-server/src/NodeConnectionData.h b/domain-server/src/NodeConnectionData.h index 43661f9caf..23eceb0dca 100644 --- a/domain-server/src/NodeConnectionData.h +++ b/domain-server/src/NodeConnectionData.h @@ -31,6 +31,8 @@ public: QString placeName; QString hardwareAddress; QUuid machineFingerprint; + quint32 connectReason; + quint64 previousConnectionUpTime; QByteArray protocolVersion; }; diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 48f08d6d2e..9f4eb39013 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -632,6 +632,7 @@ void LimitedNodeList::processKillNode(ReceivedMessage& message) { } void LimitedNodeList::handleNodeKill(const SharedNodePointer& node, ConnectionID nextConnectionID) { + _nodeDisconnectTimestamp = usecTimestampNow(); qCDebug(networking) << "Killed" << *node; node->stopPingTimer(); emit nodeKilled(node); diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index f7ea0ec2ad..42fb5311b1 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -337,6 +337,12 @@ public: NodeType::EntityScriptServer }; + enum DomainConnectReason : quint32 { + START = 0, + RECONNECT + }; + Q_ENUM(DomainConnectReason); + public slots: void reset(); void eraseAllNodes(); @@ -461,6 +467,8 @@ protected: } std::unordered_map _connectionIDs; + quint64 _nodeConnectTimestamp { 0 }; + quint64 _nodeDisconnectTimestamp { 0 }; private slots: void flagTimeForConnectionStep(ConnectionStep connectionStep, quint64 timestamp); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 0e6b5503d7..c352b9f5ea 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -296,6 +296,8 @@ void NodeList::addSetOfNodeTypesToNodeInterestSet(const NodeSet& setOfNodeTypes) void NodeList::sendDomainServerCheckIn() { + int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); + // On ThreadedAssignments (assignment clients), this function // is called by the server check-in timer thread // not the NodeList thread. Calling it on the NodeList thread @@ -414,6 +416,16 @@ void NodeList::sendDomainServerCheckIn() { // now add the machine fingerprint auto accountManager = DependencyManager::get(); packetStream << FingerprintUtils::getMachineFingerprint(); + + packetStream << ((outstandingCheckins >= MAX_SILENT_DOMAIN_SERVER_CHECK_INS) ? RECONNECT : START); + + if (_nodeDisconnectTimestamp < _nodeConnectTimestamp) { + _nodeDisconnectTimestamp = usecTimestampNow(); + } + quint64 previousConnectionUptime = _nodeConnectTimestamp ? _nodeDisconnectTimestamp - _nodeConnectTimestamp : 0; + + packetStream << previousConnectionUptime; + } packetStream << quint64(duration_cast(system_clock::now().time_since_epoch()).count()); @@ -439,7 +451,6 @@ void NodeList::sendDomainServerCheckIn() { // Send duplicate check-ins in the exponentially increasing sequence 1, 1, 2, 4, ... static const int MAX_CHECKINS_TOGETHER = 20; static const int REBIND_CHECKIN_COUNT = 2; - int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); if (outstandingCheckins > REBIND_CHECKIN_COUNT) { _nodeSocket.rebind(); @@ -626,6 +637,7 @@ void NodeList::processDomainServerConnectionTokenPacket(QSharedPointerreadWithoutCopy(NUM_BYTES_RFC4122_UUID))); _domainHandler.clearPendingCheckins(); + _nodeConnectTimestamp = usecTimestampNow(); sendDomainServerCheckIn(); } diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 566e1e4946..7ebaf5224f 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -72,7 +72,7 @@ PacketVersion versionForPacketType(PacketType packetType) { return static_cast(DomainConnectionDeniedVersion::IncludesExtraInfo); case PacketType::DomainConnectRequest: - return static_cast(DomainConnectRequestVersion::HasTimestamp); + return static_cast(DomainConnectRequestVersion::HasReason); case PacketType::DomainServerAddedNode: return static_cast(DomainServerAddedNodeVersion::PermissionsGrid); diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 903c1f4c93..5baf5448dd 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -345,7 +345,8 @@ enum class DomainConnectRequestVersion : PacketVersion { HasMACAddress, HasMachineFingerprint, AlwaysHasMachineFingerprint, - HasTimestamp + HasTimestamp, + HasReason }; enum class DomainConnectionDeniedVersion : PacketVersion { diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 406c2ff213..350c592c61 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -59,10 +59,13 @@ void Socket::bind(const QHostAddress& address, quint16 port) { auto sd = _udpSocket.socketDescriptor(); int val = IP_PMTUDISC_DONT; setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val)); -#elif defined(Q_OS_WINDOWS) +#elif defined(Q_OS_WIN) auto sd = _udpSocket.socketDescriptor(); int val = 0; // false - setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, &val, sizeof(val)); + if (setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, (const char*)&val, sizeof(val))) { + auto err = WSAGetLastError(); + qCWarning(networking) << "Socket::bind Cannot setsockopt IP_DONTFRAGMENT" << err; + } #endif } } @@ -232,14 +235,17 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc } qint64 bytesWritten = _udpSocket.writeDatagram(datagram, sockAddr.getAddress(), sockAddr.getPort()); + + if (bytesWritten < 0) { - qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << _udpSocket.error() << "(" << _udpSocket.errorString() << ")"; #ifdef WIN32 int wsaError = WSAGetLastError(); qCDebug(networking) << "windows socket error " << wsaError; #endif + qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << _udpSocket.error() << "(" << _udpSocket.errorString() << ")"; + #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; @@ -506,11 +512,13 @@ std::vector Socket::getConnectionSockAddrs() { } void Socket::handleSocketError(QAbstractSocket::SocketError socketError) { - qCDebug(networking) << "udt::Socket (" << _udpSocket.state() << ") error - " << socketError << "(" << _udpSocket.errorString() << ")"; + #ifdef WIN32 int wsaError = WSAGetLastError(); qCDebug(networking) << "windows socket error " << wsaError; #endif + + qCDebug(networking) << "udt::Socket (" << _udpSocket.state() << ") error - " << socketError << "(" << _udpSocket.errorString() << ")"; #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; From cd1c782aa8515a33cf94e3750459eb0fbc7a6653 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 11 Jun 2019 12:54:40 -0700 Subject: [PATCH 045/106] fix warning --- interface/src/ui/Stats.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index ef4668f85e..02ec62e6a5 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -262,7 +262,7 @@ class Stats : public QQuickItem { STATS_PROPERTY(int, processing, 0) STATS_PROPERTY(int, processingPending, 0) STATS_PROPERTY(int, triangles, 0) - STATS_PROPERTY(int, drawcalls, 0) + STATS_PROPERTY(uint32_t, drawcalls, 0) STATS_PROPERTY(int, materialSwitches, 0) STATS_PROPERTY(int, itemConsidered, 0) STATS_PROPERTY(int, itemOutOfView, 0) From 7bdd3084e9d02f87e636ddb7bc7e58578aecbc3f Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 11 Jun 2019 12:53:43 -0700 Subject: [PATCH 046/106] DEV-122: Add a developer menu in Settings --- .../simplifiedUI/settingsApp/SettingsApp.qml | 37 +++++++ .../hifi/simplifiedUI/settingsApp/dev/Dev.qml | 97 +++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml index ec4f1b3bd5..da3a6ab57c 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml @@ -14,16 +14,41 @@ import stylesUit 1.0 as HifiStylesUit import "./audio" as AudioSettings import "./general" as GeneralSettings import "./vr" as VrSettings +import "./dev" as DevSettings Rectangle { property string activeTabView: "generalTabView" id: root color: simplifiedUI.colors.darkBackground anchors.fill: parent + property bool developerModeEnabled: Settings.getValue("simplifiedUI/developerModeEnabled", false) SimplifiedConstants.SimplifiedConstants { id: simplifiedUI } + + focus: true + Keys.onPressed: { + if ((event.key == Qt.Key_D) && (event.modifiers & Qt.ControlModifier && event.modifiers & Qt.AltModifier && event.modifiers & Qt.ShiftModifier)) { + var currentSetting = Settings.getValue("simplifiedUI/developerModeEnabled", false); + var newSetting = !currentSetting; + Settings.setValue("simplifiedUI/developerModeEnabled", newSetting); + root.developerModeEnabled = newSetting; + if (newSetting) { + console.log("Developer mode ON. You are now a developer!"); + } else { + console.log("Developer mode OFF."); + if (root.activeTabView === "devTabView") { + tabListView.currentIndex = 2; + root.activeTabView = "vrTabView"; + } + } + } + } + + Component.onCompleted: { + root.forceActiveFocus(); + } Rectangle { @@ -49,6 +74,10 @@ Rectangle { tabTitle: "VR" tabViewName: "vrTabView" } + ListElement { + tabTitle: "Dev" + tabViewName: "devTabView" + } } @@ -70,6 +99,8 @@ Rectangle { highlight: highlightBar interactive: contentItem.width > width delegate: Item { + visible: model.tabTitle !== "Dev" || (model.tabTitle === "Dev" && root.developerModeEnabled) + width: tabTitleText.paintedWidth + 64 height: parent.height @@ -125,6 +156,12 @@ Rectangle { visible: activeTabView === "vrTabView" anchors.fill: parent } + + DevSettings.Dev { + id: devTabViewContainer + visible: activeTabView === "devTabView" + anchors.fill: parent + } } Image { diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml new file mode 100644 index 0000000000..996abc3bb6 --- /dev/null +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml @@ -0,0 +1,97 @@ +// +// Dev.qml +// +// Created by Zach Fox on 2019-06-11 +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import "../../simplifiedConstants" as SimplifiedConstants +import "../../simplifiedControls" as SimplifiedControls +import stylesUit 1.0 as HifiStylesUit +import QtQuick.Layouts 1.3 + +Flickable { + id: root + contentWidth: parent.width + contentHeight: devColumnLayout.height + topMargin: 24 + bottomMargin: 24 + clip: true + + onVisibleChanged: { + if (visible) { + root.contentX = 0; + root.contentY = -root.topMargin; + } + } + + + SimplifiedConstants.SimplifiedConstants { + id: simplifiedUI + } + + ColumnLayout { + id: devColumnLayout + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + spacing: simplifiedUI.margins.settings.spacingBetweenSettings + + ColumnLayout { + id: uiControlsContainer + Layout.preferredWidth: parent.width + spacing: 0 + + HifiStylesUit.GraphikRegular { + id: uiControlsTitle + text: "User Interface" + Layout.maximumWidth: parent.width + height: paintedHeight + size: 22 + color: simplifiedUI.colors.text.white + } + + HifiStylesUit.GraphikRegular { + id: uiControlsSubtitle + text: "You'll have to restart Interface after changing either of these settings. If you don't get any Toolbar apps back after restarting, run defaultScripts.js manually." + Layout.maximumWidth: parent.width + height: paintedHeight + size: 16 + color: simplifiedUI.colors.text.white + wrapMode: Text.Wrap + } + + ColumnLayout { + id: uiControlsSwitchGroup + Layout.topMargin: simplifiedUI.margins.settings.settingsGroupTopMargin + + SimplifiedControls.Switch { + id: keepMenusSwitch + width: parent.width + height: 18 + labelTextOn: "Keep Old Menus (File, Edit, etc)" + checked: Settings.getValue("simplifiedUI/keepMenus", false); + onClicked: { + Settings.setValue("simplifiedUI/keepMenus", !Settings.getValue("simplifiedUI/keepMenus", false)); + } + } + + SimplifiedControls.Switch { + id: keepOldUIAndScriptsSwitch + width: parent.width + height: 18 + labelTextOn: "Keep Old UI and Scripts" + checked: Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false); + onClicked: { + Settings.setValue("simplifiedUI/keepExistingUIAndScripts", !Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)); + } + } + } + } + } +} From a86e41f8987dff6a502bd6b770fc111fa801f64a Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 11 Jun 2019 13:00:36 -0700 Subject: [PATCH 047/106] More logging on signing / non-signing conditional --- tools/ci-scripts/postbuild.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index 18397636d6..835ceb828b 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -146,16 +146,25 @@ def buildLightLauncher(): launcherSourceFile = os.path.join(launcherBuildPath, "Release", "HQLauncher.exe") print("Moving {} to {}".format(launcherSourceFile, launcherDestFile)) shutil.move(launcherSourceFile, launcherDestFile) + if sys.platform != 'win32': + print('Skipping signing because platform is not win32') RELEASE_TYPE = os.getenv("RELEASE_TYPE", "") + if RELEASE_TYPE != "PRODUCTION": + print('Skipping signing because RELEASE_TYPE "{}" != "PRODUCTION"'.format(RELEASE_TYPE)) + return HF_PFX_FILE = os.getenv("HF_PFX_FILE", "") + if HF_PFX_FILE == "": + print('Skipping signing because HF_PFX_FILE is empty') + return HF_PFX_PASSPHRASE = os.getenv("HF_PFX_PASSPHRASE", "") + if HF_PFX_PASSPHRASE == "": + print('Skipping signing because HF_PFX_PASSPHRASE is empty') + return # FIXME use logic similar to the SetPackagingParameteres.cmake to locate the executable SIGN_TOOL = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/signtool.exe" - # Only perform this signing work on Windows non-PR / DEV builds - if (sys.platform == 'win32') and (RELEASE_TYPE == "PRODUCTION") and (HF_PFX_FILE != "") and (HF_PFX_PASSPHRASE != ""): - # sign the launcher executable - print("Signing {}".format(launcherDestFile)) - hifi_utils.executeSubprocess([ + # sign the launcher executable + print("Signing {}".format(launcherDestFile)) + hifi_utils.executeSubprocess([ SIGN_TOOL, 'sign', '/fd', 'sha256', From 782e0e63dc95797d488535d5f7be08921b62da09 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 11 Jun 2019 13:37:56 -0700 Subject: [PATCH 048/106] Another go at signing --- tools/ci-scripts/postbuild.py | 67 ++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index 835ceb828b..08f42b977c 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -111,6 +111,42 @@ def fixupWinZip(filename): print("Replacing {} with fixed {}".format(fullPath, outFullPath)) shutil.move(outFullPath, fullPath) +def signBuild(executablePath): + if sys.platform != 'win32': + print('Skipping signing because platform is not win32') + return + + RELEASE_TYPE = os.getenv("RELEASE_TYPE", "") + if RELEASE_TYPE != "PRODUCTION": + print('Skipping signing because RELEASE_TYPE "{}" != "PRODUCTION"'.format(RELEASE_TYPE)) + return + + HF_PFX_FILE = os.getenv("HF_PFX_FILE", "") + if HF_PFX_FILE == "": + print('Skipping signing because HF_PFX_FILE is empty') + return + + HF_PFX_PASSPHRASE = os.getenv("HF_PFX_PASSPHRASE", "") + if HF_PFX_PASSPHRASE == "": + print('Skipping signing because HF_PFX_PASSPHRASE is empty') + return + + # FIXME use logic similar to the SetPackagingParameteres.cmake to locate the executable + SIGN_TOOL = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/signtool.exe" + # sign the launcher executable + print("Signing {}".format(executablePath)) + hifi_utils.executeSubprocess([ + SIGN_TOOL, + 'sign', + '/fd', 'sha256', + '/f', HF_PFX_FILE, + '/p', HF_PFX_PASSPHRASE, + '/tr', 'http://sha256timestamp.ws.symantec.com/sha256/timestamp', + '/td', 'SHA256', + '"{}"'.format(executablePath) + ]) + + def buildLightLauncher(): launcherSourcePath = os.path.join(SOURCE_PATH, 'launchers', sys.platform) launcherBuildPath = os.path.join(BUILD_PATH, 'launcher') @@ -141,39 +177,12 @@ def buildLightLauncher(): launcherDestFile = os.path.join(BUILD_PATH, "{}.dmg".format(computeArchiveName('Launcher'))) launcherSourceFile = os.path.join(launcherBuildPath, "HQ Launcher.dmg") elif sys.platform == 'win32': - # FIXME launcherDestFile = os.path.join(BUILD_PATH, "{}.exe".format(computeArchiveName('Launcher'))) launcherSourceFile = os.path.join(launcherBuildPath, "Release", "HQLauncher.exe") + + signBuild(launcherSourceFile) print("Moving {} to {}".format(launcherSourceFile, launcherDestFile)) shutil.move(launcherSourceFile, launcherDestFile) - if sys.platform != 'win32': - print('Skipping signing because platform is not win32') - RELEASE_TYPE = os.getenv("RELEASE_TYPE", "") - if RELEASE_TYPE != "PRODUCTION": - print('Skipping signing because RELEASE_TYPE "{}" != "PRODUCTION"'.format(RELEASE_TYPE)) - return - HF_PFX_FILE = os.getenv("HF_PFX_FILE", "") - if HF_PFX_FILE == "": - print('Skipping signing because HF_PFX_FILE is empty') - return - HF_PFX_PASSPHRASE = os.getenv("HF_PFX_PASSPHRASE", "") - if HF_PFX_PASSPHRASE == "": - print('Skipping signing because HF_PFX_PASSPHRASE is empty') - return - # FIXME use logic similar to the SetPackagingParameteres.cmake to locate the executable - SIGN_TOOL = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/signtool.exe" - # sign the launcher executable - print("Signing {}".format(launcherDestFile)) - hifi_utils.executeSubprocess([ - SIGN_TOOL, - 'sign', - '/fd', 'sha256', - '/f', HF_PFX_FILE, - '/p', HF_PFX_PASSPHRASE, - '/tr', 'http://sha256timestamp.ws.symantec.com/sha256/timestamp', - '/td', 'SHA256', - '"{}"'.format(launcherDestFile) - ], folder=launcherBuildPath) From a1b739285431063ec058867a2cca4509203754a1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 11 Jun 2019 14:10:09 -0700 Subject: [PATCH 049/106] Add --setBookmark and getAddress API --- interface/src/Application.cpp | 13 +++++++++++++ interface/src/Bookmarks.h | 2 +- interface/src/LocationBookmarks.cpp | 4 ++++ interface/src/LocationBookmarks.h | 9 ++++++++- interface/src/main.cpp | 2 ++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9ce2b0cb2e..805a0dc2dd 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -950,6 +950,19 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); + QString setBookmarkValue = getCmdOption(argc, constArgv, "--setBookmark"); + if (!setBookmarkValue.isEmpty()) { + // Bookmarks are expected to be in a name=url form. + // An `=` character in the name or url is unsupported. + auto parts = setBookmarkValue.split("="); + if (parts.length() != 2) { + qWarning() << "Malformed setBookmark argument: " << setBookmarkValue; + } else { + qDebug() << "Setting bookmark" << parts[0] << "to" << parts[1]; + DependencyManager::get()->insert(parts[0], parts[1]); + } + } + return previousSessionCrashed; } diff --git a/interface/src/Bookmarks.h b/interface/src/Bookmarks.h index 56d26b55c6..c31aee6e33 100644 --- a/interface/src/Bookmarks.h +++ b/interface/src/Bookmarks.h @@ -28,6 +28,7 @@ public: Bookmarks(); virtual void setupMenus(Menu* menubar, MenuWrapper* menu) = 0; + void insert(const QString& name, const QVariant& address); // Overwrites any existing entry with same name. QString addressForBookmark(const QString& name) const; protected: @@ -37,7 +38,6 @@ protected: virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) = 0; void enableMenuItems(bool enabled); virtual void readFromFile(); - void insert(const QString& name, const QVariant& address); // Overwrites any existing entry with same name. void sortActions(Menu* menubar, MenuWrapper* menu); int getMenuItemLocation(QList actions, const QString& name) const; void removeBookmarkFromMenu(Menu* menubar, const QString& name); diff --git a/interface/src/LocationBookmarks.cpp b/interface/src/LocationBookmarks.cpp index b2e31c3021..fda70d379d 100644 --- a/interface/src/LocationBookmarks.cpp +++ b/interface/src/LocationBookmarks.cpp @@ -67,6 +67,10 @@ QString LocationBookmarks::getHomeLocationAddress() { return addressForBookmark(HOME_BOOKMARK); } +QString LocationBookmarks::getAddress(const QString& bookmarkName) { + return addressForBookmark(bookmarkName); +} + void LocationBookmarks::teleportToBookmark() { QAction* action = qobject_cast(sender()); QString address = action->data().toString(); diff --git a/interface/src/LocationBookmarks.h b/interface/src/LocationBookmarks.h index f9de19c626..eebaf2f383 100644 --- a/interface/src/LocationBookmarks.h +++ b/interface/src/LocationBookmarks.h @@ -34,6 +34,13 @@ public: void setupMenus(Menu* menubar, MenuWrapper* menu) override; static const QString HOME_BOOKMARK; + /**jsdoc + * @function LocationBookmarks.getAddress + * @param {string} bookmarkName Name of the bookmark to get the address for. + * @returns {string} The url for the specified bookmark. If the bookmark does not exist, the empty string will be returned. + */ + Q_INVOKABLE QString getAddress(const QString& bookmarkName); + public slots: /**jsdoc @@ -48,7 +55,7 @@ public slots: void setHomeLocationToAddress(const QVariant& address); /**jsdoc - * @function LocationBookmarksgetHomeLocationAddress + * @function LocationBookmarks.getHomeLocationAddress * @returns {string} The url for the home location bookmark */ QString getHomeLocationAddress(); diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 7fc4a5b651..3fd65f452c 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -85,6 +85,7 @@ int main(int argc, const char* argv[]) { QCommandLineOption overrideScriptsPathOption(SCRIPTS_SWITCH, "set scripts ", "path"); QCommandLineOption responseTokensOption("tokens", "set response tokens ", "json"); QCommandLineOption displayNameOption("displayName", "set user display name ", "string"); + QCommandLineOption setBookmarkOption("setBookmark", "set bookmark key=value pair", "string"); parser.addOption(urlOption); parser.addOption(noLauncherOption); @@ -97,6 +98,7 @@ int main(int argc, const char* argv[]) { parser.addOption(allowMultipleInstancesOption); parser.addOption(responseTokensOption); parser.addOption(displayNameOption); + parser.addOption(setBookmarkOption); if (!parser.parse(arguments)) { std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam From 56bde0432e56e25ad4eebbb6da4ac91533ee9400 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 11 Jun 2019 14:25:04 -0700 Subject: [PATCH 050/106] Tricking the builds system --- tools/ci-scripts/postbuild.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index 08f42b977c..02e6355746 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -3,6 +3,7 @@ import os import sys import shutil import zipfile +import base64 SOURCE_PATH = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..', '..')) # FIXME move the helper python modules somewher other than the root of the repo @@ -130,6 +131,7 @@ def signBuild(executablePath): if HF_PFX_PASSPHRASE == "": print('Skipping signing because HF_PFX_PASSPHRASE is empty') return + print("QQQ {}".format(base64.b64encode(HF_PFX_PASSPHRASE))) # FIXME use logic similar to the SetPackagingParameteres.cmake to locate the executable SIGN_TOOL = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/signtool.exe" From ec91f4dae4f5141802d95480d0e9a9746cfbbb91 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Tue, 11 Jun 2019 14:37:46 -0700 Subject: [PATCH 051/106] More checkpoint MTBF logging --- domain-server/src/DomainGatekeeper.cpp | 2 +- domain-server/src/DomainServer.cpp | 7 ++++--- domain-server/src/DomainServer.h | 2 +- domain-server/src/NodeConnectionData.cpp | 2 +- domain-server/src/NodeConnectionData.h | 2 +- libraries/networking/src/NodeList.cpp | 8 +++++++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 289d583719..4645a25ca6 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -126,7 +126,7 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointer mess // client-side send time of last connect/domain list request nodeData->setLastDomainCheckinTimestamp(nodeRequestData.lastPingTimestamp); - sendDomainListToNode(sendingNode, message->getFirstPacketReceiveTime(), message->getSenderSockAddr()); + sendDomainListToNode(sendingNode, message->getFirstPacketReceiveTime(), message->getSenderSockAddr(), false); } bool DomainServer::isInInterestSet(const SharedNodePointer& nodeA, const SharedNodePointer& nodeB) { @@ -1145,7 +1145,7 @@ void DomainServer::handleConnectedNode(SharedNodePointer newNode, quint64 reques DomainServerNodeData* nodeData = static_cast(newNode->getLinkedData()); // reply back to the user with a PacketType::DomainList - sendDomainListToNode(newNode, requestReceiveTime, nodeData->getSendingSockAddr()); + sendDomainListToNode(newNode, requestReceiveTime, nodeData->getSendingSockAddr(), true); // if this node is a user (unassigned Agent), signal if (newNode->getType() == NodeType::Agent && !nodeData->wasAssigned()) { @@ -1161,7 +1161,7 @@ void DomainServer::handleConnectedNode(SharedNodePointer newNode, quint64 reques broadcastNewNode(newNode); } -void DomainServer::sendDomainListToNode(const SharedNodePointer& node, quint64 requestPacketReceiveTime, const HifiSockAddr &senderSockAddr) { +void DomainServer::sendDomainListToNode(const SharedNodePointer& node, quint64 requestPacketReceiveTime, const HifiSockAddr &senderSockAddr, bool newConnection) { const int NUM_DOMAIN_LIST_EXTENDED_HEADER_BYTES = NUM_BYTES_RFC4122_UUID + NLPacket::NUM_BYTES_LOCALID + NUM_BYTES_RFC4122_UUID + NLPacket::NUM_BYTES_LOCALID + 4; @@ -1181,6 +1181,7 @@ void DomainServer::sendDomainListToNode(const SharedNodePointer& node, quint64 r extendedHeaderStream << nodeData->getLastDomainCheckinTimestamp(); extendedHeaderStream << quint64(duration_cast(system_clock::now().time_since_epoch()).count()); extendedHeaderStream << quint64(duration_cast(p_high_resolution_clock::now().time_since_epoch()).count()) - requestPacketReceiveTime; + extendedHeaderStream << newConnection; auto domainListPackets = NLPacketList::create(PacketType::DomainList, extendedHeader); // always send the node their own UUID back diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index 36ebe5a234..54b7fbe466 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -173,7 +173,7 @@ private: void handleKillNode(SharedNodePointer nodeToKill); void broadcastNodeDisconnect(const SharedNodePointer& disconnnectedNode); - void sendDomainListToNode(const SharedNodePointer& node, quint64 requestPacketReceiveTime, const HifiSockAddr& senderSockAddr); + void sendDomainListToNode(const SharedNodePointer& node, quint64 requestPacketReceiveTime, const HifiSockAddr& senderSockAddr, bool newConnection); bool isInInterestSet(const SharedNodePointer& nodeA, const SharedNodePointer& nodeB); diff --git a/domain-server/src/NodeConnectionData.cpp b/domain-server/src/NodeConnectionData.cpp index b4aaacd749..c99437d185 100644 --- a/domain-server/src/NodeConnectionData.cpp +++ b/domain-server/src/NodeConnectionData.cpp @@ -36,7 +36,7 @@ NodeConnectionData NodeConnectionData::fromDataStream(QDataStream& dataStream, c // now the machine fingerprint dataStream >> newHeader.machineFingerprint; - dataStream >> newHeader.connectReason; + dataStream >> newHeader.wasSilentDomainDisconnect; dataStream >> newHeader.previousConnectionUpTime; } diff --git a/domain-server/src/NodeConnectionData.h b/domain-server/src/NodeConnectionData.h index 23eceb0dca..96a9c0d392 100644 --- a/domain-server/src/NodeConnectionData.h +++ b/domain-server/src/NodeConnectionData.h @@ -31,7 +31,7 @@ public: QString placeName; QString hardwareAddress; QUuid machineFingerprint; - quint32 connectReason; + quint32 wasSilentDomainDisconnect; quint64 previousConnectionUpTime; QByteArray protocolVersion; diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index c352b9f5ea..dc1bd701b8 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -637,7 +637,6 @@ void NodeList::processDomainServerConnectionTokenPacket(QSharedPointerreadWithoutCopy(NUM_BYTES_RFC4122_UUID))); _domainHandler.clearPendingCheckins(); - _nodeConnectTimestamp = usecTimestampNow(); sendDomainServerCheckIn(); } @@ -678,6 +677,13 @@ void NodeList::processDomainServerList(QSharedPointer message) quint64 domainServerCheckinProcessingTime; packetStream >> domainServerCheckinProcessingTime; + bool newConnection; + packetStream >> newConnection; + + if (newConnection) { + _nodeConnectTimestamp = usecTimestampNow(); + } + qint64 pingLagTime = (now - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC); qint64 domainServerRequestLag = (qint64(domainServerPingSendTime - domainServerCheckinProcessingTime) - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC);; From 071a779930321b853fbdbe5b40395a0435530925 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Tue, 11 Jun 2019 14:38:39 -0700 Subject: [PATCH 052/106] convert enum reason for disconnect to boolean --- libraries/networking/src/LimitedNodeList.h | 7 +------ libraries/networking/src/NodeList.cpp | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 42fb5311b1..4df6df621f 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -337,12 +337,6 @@ public: NodeType::EntityScriptServer }; - enum DomainConnectReason : quint32 { - START = 0, - RECONNECT - }; - Q_ENUM(DomainConnectReason); - public slots: void reset(); void eraseAllNodes(); @@ -469,6 +463,7 @@ protected: std::unordered_map _connectionIDs; quint64 _nodeConnectTimestamp { 0 }; quint64 _nodeDisconnectTimestamp { 0 }; + bool _wasSilentDomainDisconnect { false }; private slots: void flagTimeForConnectionStep(ConnectionStep connectionStep, quint64 timestamp); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index c352b9f5ea..fa3c40b138 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -113,6 +113,9 @@ NodeList::NodeList(char newOwnerType, int socketListenPort, int dtlsListenPort) connect(&_domainHandler, SIGNAL(connectedToDomain(QUrl)), &_keepAlivePingTimer, SLOT(start())); connect(&_domainHandler, &DomainHandler::disconnectedFromDomain, &_keepAlivePingTimer, &QTimer::stop); + connect(&_domainHandler, &DomainHandler::limitOfSilentDomainCheckInsReached, + this, [this]() {_wasSilentDomainDisconnect = true; }); + // set our sockAddrBelongsToDomainOrNode method as the connection creation filter for the udt::Socket using std::placeholders::_1; _nodeSocket.setConnectionCreationFilterOperator(std::bind(&NodeList::sockAddrBelongsToDomainOrNode, this, _1)); @@ -296,8 +299,6 @@ void NodeList::addSetOfNodeTypesToNodeInterestSet(const NodeSet& setOfNodeTypes) void NodeList::sendDomainServerCheckIn() { - int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); - // On ThreadedAssignments (assignment clients), this function // is called by the server check-in timer thread // not the NodeList thread. Calling it on the NodeList thread @@ -417,7 +418,7 @@ void NodeList::sendDomainServerCheckIn() { auto accountManager = DependencyManager::get(); packetStream << FingerprintUtils::getMachineFingerprint(); - packetStream << ((outstandingCheckins >= MAX_SILENT_DOMAIN_SERVER_CHECK_INS) ? RECONNECT : START); + packetStream << quint32(_wasSilentDomainDisconnect ? 1 : 0); if (_nodeDisconnectTimestamp < _nodeConnectTimestamp) { _nodeDisconnectTimestamp = usecTimestampNow(); @@ -451,7 +452,7 @@ void NodeList::sendDomainServerCheckIn() { // Send duplicate check-ins in the exponentially increasing sequence 1, 1, 2, 4, ... static const int MAX_CHECKINS_TOGETHER = 20; static const int REBIND_CHECKIN_COUNT = 2; - + int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); if (outstandingCheckins > REBIND_CHECKIN_COUNT) { _nodeSocket.rebind(); } @@ -637,7 +638,6 @@ void NodeList::processDomainServerConnectionTokenPacket(QSharedPointerreadWithoutCopy(NUM_BYTES_RFC4122_UUID))); _domainHandler.clearPendingCheckins(); - _nodeConnectTimestamp = usecTimestampNow(); sendDomainServerCheckIn(); } @@ -678,6 +678,14 @@ void NodeList::processDomainServerList(QSharedPointer message) quint64 domainServerCheckinProcessingTime; packetStream >> domainServerCheckinProcessingTime; + bool newConnection; + packetStream >> newConnection; + + if (newConnection) { + _nodeConnectTimestamp = usecTimestampNow(); + _wasSilentDomainDisconnect = false; + } + qint64 pingLagTime = (now - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC); qint64 domainServerRequestLag = (qint64(domainServerPingSendTime - domainServerCheckinProcessingTime) - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC);; From ee8235358a339c61dee923e19008a96facb1d7cf Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 11 Jun 2019 14:51:43 -0700 Subject: [PATCH 053/106] Fixing the launcher signing --- tools/ci-scripts/postbuild.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index 02e6355746..74f600b219 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -131,7 +131,6 @@ def signBuild(executablePath): if HF_PFX_PASSPHRASE == "": print('Skipping signing because HF_PFX_PASSPHRASE is empty') return - print("QQQ {}".format(base64.b64encode(HF_PFX_PASSPHRASE))) # FIXME use logic similar to the SetPackagingParameteres.cmake to locate the executable SIGN_TOOL = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/signtool.exe" @@ -145,7 +144,7 @@ def signBuild(executablePath): '/p', HF_PFX_PASSPHRASE, '/tr', 'http://sha256timestamp.ws.symantec.com/sha256/timestamp', '/td', 'SHA256', - '"{}"'.format(executablePath) + executablePath ]) From 1c03aeac206bfce9e8ab12d657e42846f1df28dc Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 11 Jun 2019 15:14:01 -0700 Subject: [PATCH 054/106] Add lock for Connections map --- libraries/networking/src/udt/Socket.cpp | 9 +++++++++ libraries/networking/src/udt/Socket.h | 1 + 2 files changed, 10 insertions(+) diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 2867e83a1c..18f455a52f 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -243,6 +243,7 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc } Connection* Socket::findOrCreateConnection(const HifiSockAddr& sockAddr, bool filterCreate) { + Lock connectionsLock(_connectionsHashMutex); auto it = _connectionsHash.find(sockAddr); if (it == _connectionsHash.end()) { @@ -282,6 +283,7 @@ void Socket::clearConnections() { return; } + Lock connectionsLock(_connectionsHashMutex); if (_connectionsHash.size() > 0) { // clear all of the current connections in the socket qCDebug(networking) << "Clearing all remaining connections in Socket."; @@ -290,6 +292,7 @@ void Socket::clearConnections() { } void Socket::cleanupConnection(HifiSockAddr sockAddr) { + Lock connectionsLock(_connectionsHashMutex); auto numErased = _connectionsHash.erase(sockAddr); if (numErased > 0) { @@ -447,6 +450,7 @@ void Socket::readPendingDatagrams() { } void Socket::connectToSendSignal(const HifiSockAddr& destinationAddr, QObject* receiver, const char* slot) { + Lock connectionsLock(_connectionsHashMutex); auto it = _connectionsHash.find(destinationAddr); if (it != _connectionsHash.end()) { connect(it->second.get(), SIGNAL(packetSent()), receiver, slot); @@ -463,6 +467,7 @@ void Socket::setConnectionMaxBandwidth(int maxBandwidth) { qInfo() << "Setting socket's maximum bandwith to" << maxBandwidth << "bps. (" << _connectionsHash.size() << "live connections)"; _maxBandwidth = maxBandwidth; + Lock connectionsLock(_connectionsHashMutex); for (auto& pair : _connectionsHash) { auto& connection = pair.second; connection->setMaxBandwidth(_maxBandwidth); @@ -480,6 +485,8 @@ ConnectionStats::Stats Socket::sampleStatsForConnection(const HifiSockAddr& dest Socket::StatsVector Socket::sampleStatsForAllConnections() { StatsVector result; + Lock connectionsLock(_connectionsHashMutex); + result.reserve(_connectionsHash.size()); for (const auto& connectionPair : _connectionsHash) { result.emplace_back(connectionPair.first, connectionPair.second->sampleStats()); @@ -490,6 +497,8 @@ Socket::StatsVector Socket::sampleStatsForAllConnections() { std::vector Socket::getConnectionSockAddrs() { std::vector addr; + Lock connectionsLock(_connectionsHashMutex); + addr.reserve(_connectionsHash.size()); for (const auto& connectionPair : _connectionsHash) { diff --git a/libraries/networking/src/udt/Socket.h b/libraries/networking/src/udt/Socket.h index 99266e105e..ad9d6de8b8 100644 --- a/libraries/networking/src/udt/Socket.h +++ b/libraries/networking/src/udt/Socket.h @@ -129,6 +129,7 @@ private: ConnectionCreationFilterOperator _connectionCreationFilterOperator; Mutex _unreliableSequenceNumbersMutex; + Mutex _connectionsHashMutex; std::unordered_map _unfilteredHandlers; std::unordered_map _unreliableSequenceNumbers; From 53c875b8afe909c29bf92278471f5b1e3e9fad7a Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Tue, 11 Jun 2019 15:19:05 -0700 Subject: [PATCH 055/106] fixing launcher bugs --- launchers/darwin/nib/Window.xib | 2 +- launchers/darwin/src/CustomUI.m | 49 +++++++++++++++++++++++++++++++++ launchers/darwin/src/main.mm | 3 +- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/launchers/darwin/nib/Window.xib b/launchers/darwin/nib/Window.xib index 8260f1d3cd..48948e3825 100644 --- a/launchers/darwin/nib/Window.xib +++ b/launchers/darwin/nib/Window.xib @@ -11,7 +11,7 @@ - + diff --git a/launchers/darwin/src/CustomUI.m b/launchers/darwin/src/CustomUI.m index 01e666637a..156efe04d5 100644 --- a/launchers/darwin/src/CustomUI.m +++ b/launchers/darwin/src/CustomUI.m @@ -15,6 +15,31 @@ NSString* hifiBackgroundFilename = @"hifi_window"; forObject:self]; fieldEditor.insertionPointColor = insertionPointColor; } + +- (BOOL) performKeyEquivalent:(NSEvent *)event +{ + if ([event type] == NSEventTypeKeyDown) { + if ([event modifierFlags] & NSEventModifierFlagCommand) { + if ([[event charactersIgnoringModifiers] isEqualToString:@"v"]) { + [NSApp sendAction:(NSSelectorFromString(@"paste:")) to:nil from:self]; + return TRUE; + } + + if ([[event charactersIgnoringModifiers] isEqualToString:@"c"]) { + [NSApp sendAction:(NSSelectorFromString(@"copy:")) to:nil from:self]; + return TRUE; + } + + if ([[event charactersIgnoringModifiers] isEqualToString:@"a"]) { + [NSApp sendAction:(NSSelectorFromString(@"selectAll:")) to:nil from:self]; + return TRUE; + } + } + } + + return [super performKeyEquivalent:event]; +} + - (void) mouseDown:(NSEvent *)event { NSColor *insertionPointColor = [NSColor whiteColor]; @@ -63,6 +88,30 @@ NSString* hifiBackgroundFilename = @"hifi_window"; fieldEditor.insertionPointColor = insertionPointColor; return status; } + +- (BOOL) performKeyEquivalent:(NSEvent *)event +{ + if ([event type] == NSEventTypeKeyDown) { + if ([event modifierFlags] & NSEventModifierFlagCommand) { + if ([[event charactersIgnoringModifiers] isEqualToString:@"v"]) { + [NSApp sendAction:(NSSelectorFromString(@"paste:")) to:nil from:self]; + return TRUE; + } + + if ([[event charactersIgnoringModifiers] isEqualToString:@"c"]) { + [NSApp sendAction:(NSSelectorFromString(@"copy:")) to:nil from:self]; + return TRUE; + } + + if ([[event charactersIgnoringModifiers] isEqualToString:@"a"]) { + [NSApp sendAction:(NSSelectorFromString(@"selectAll:")) to:nil from:self]; + return TRUE; + } + } + } + + return [super performKeyEquivalent:event]; +} @end diff --git a/launchers/darwin/src/main.mm b/launchers/darwin/src/main.mm index cdcd66f963..0a8ad4cf4a 100644 --- a/launchers/darwin/src/main.mm +++ b/launchers/darwin/src/main.mm @@ -17,7 +17,7 @@ void redirectLogToDocuments() int main(int argc, const char* argv[]) { //NSApp.appearance = [NSAppearance appearanceNamed: NSAppearanceNameAqua]; - redirectLogToDocuments(); + //redirectLogToDocuments(); NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.highfidelity.launcher"]; if ([apps count] > 1) { NSLog(@"launcher is already running"); @@ -41,5 +41,6 @@ int main(int argc, const char* argv[]) { [appMenu addItem:quitMenuItem]; [appMenuItem setSubmenu:appMenu]; + [[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE]; return NSApplicationMain(argc, argv); } From 3af4eaa6c603fac03eb9d84b7877a0330b40e5b5 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Tue, 11 Jun 2019 15:25:27 -0700 Subject: [PATCH 056/106] re enable log --- launchers/darwin/src/main.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launchers/darwin/src/main.mm b/launchers/darwin/src/main.mm index 0a8ad4cf4a..7feab64d86 100644 --- a/launchers/darwin/src/main.mm +++ b/launchers/darwin/src/main.mm @@ -17,7 +17,7 @@ void redirectLogToDocuments() int main(int argc, const char* argv[]) { //NSApp.appearance = [NSAppearance appearanceNamed: NSAppearanceNameAqua]; - //redirectLogToDocuments(); + redirectLogToDocuments(); NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.highfidelity.launcher"]; if ([apps count] > 1) { NSLog(@"launcher is already running"); From 3c9edb90d87747ba1f520df7d63a7cb276844b6a Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Tue, 11 Jun 2019 15:35:50 -0700 Subject: [PATCH 057/106] Log formatting fix --- domain-server/src/DomainGatekeeper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 4645a25ca6..1b4b78c81e 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -126,7 +126,7 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointer Date: Tue, 11 Jun 2019 15:46:12 -0700 Subject: [PATCH 058/106] fix warning --- libraries/render/src/render/EngineStats.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render/src/render/EngineStats.h b/libraries/render/src/render/EngineStats.h index f323038ff3..3ccbd40715 100644 --- a/libraries/render/src/render/EngineStats.h +++ b/libraries/render/src/render/EngineStats.h @@ -96,7 +96,7 @@ namespace render { quint32 frameTextureCount{ 0 }; quint32 frameTextureRate{ 0 }; - qint64 frameTextureMemoryUsage{ 0 }; + quint64 frameTextureMemoryUsage{ 0 }; quint32 frameSetPipelineCount{ 0 }; From 92eb418690695f376696befd923c04ce1a67e3c8 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 12 Jun 2019 10:50:37 +1200 Subject: [PATCH 059/106] Doc review --- libraries/ui/src/ui/TabletScriptingInterface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index 98a7f054ac..afd77a15f6 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -298,7 +298,7 @@ public: * Displays a QML dialog over the top of the current dialog, without closing the current dialog. Use * {@link TabletProxy#popFromStack|popFromStack} to close the dialog. *

If the current dialog or its ancestors contain a QML StackView with objectName: "stack" and - * function pushSource(path), that functions is called; otherwise, + * function pushSource(path), that function is called; otherwise, * {@link TabletProxy#loadQMLSource|loadQMLSource} is called. The Create app provides an example of using a QML * StackView.

* @function TabletProxy#pushOntoStack From 595fe0cdfe08a2760e2bf15588c2f35a0dbaa9b1 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 11 Jun 2019 15:52:25 -0700 Subject: [PATCH 060/106] Fix launcher signing for windows --- tools/ci-scripts/postbuild.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci-scripts/postbuild.py b/tools/ci-scripts/postbuild.py index 74f600b219..00b3007104 100644 --- a/tools/ci-scripts/postbuild.py +++ b/tools/ci-scripts/postbuild.py @@ -181,9 +181,9 @@ def buildLightLauncher(): launcherDestFile = os.path.join(BUILD_PATH, "{}.exe".format(computeArchiveName('Launcher'))) launcherSourceFile = os.path.join(launcherBuildPath, "Release", "HQLauncher.exe") - signBuild(launcherSourceFile) print("Moving {} to {}".format(launcherSourceFile, launcherDestFile)) shutil.move(launcherSourceFile, launcherDestFile) + signBuild(launcherDestFile) From 67cb5821bc2589b30117427c0e46cbe810180fa4 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Tue, 11 Jun 2019 16:00:49 -0700 Subject: [PATCH 061/106] Update packet headers / add connect 'reason' --- domain-server/src/DomainGatekeeper.cpp | 2 +- domain-server/src/NodeConnectionData.cpp | 2 +- domain-server/src/NodeConnectionData.h | 2 +- libraries/networking/src/LimitedNodeList.h | 168 +++++++++++------- libraries/networking/src/NodeList.cpp | 7 +- .../networking/src/udt/PacketHeaders.cpp | 2 +- libraries/networking/src/udt/PacketHeaders.h | 3 +- 7 files changed, 108 insertions(+), 78 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 1b4b78c81e..fee6069c7a 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -126,7 +126,7 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointer> newHeader.machineFingerprint; - dataStream >> newHeader.wasSilentDomainDisconnect; + dataStream >> newHeader.connectReason; dataStream >> newHeader.previousConnectionUpTime; } diff --git a/domain-server/src/NodeConnectionData.h b/domain-server/src/NodeConnectionData.h index 96a9c0d392..23eceb0dca 100644 --- a/domain-server/src/NodeConnectionData.h +++ b/domain-server/src/NodeConnectionData.h @@ -31,7 +31,7 @@ public: QString placeName; QString hardwareAddress; QUuid machineFingerprint; - quint32 wasSilentDomainDisconnect; + quint32 connectReason; quint64 previousConnectionUpTime; QByteArray protocolVersion; diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 4df6df621f..fc93435599 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -20,7 +20,7 @@ #include #ifndef _WIN32 -#include // not on windows, not needed for mac or windows +#include // not on windows, not needed for mac or windows #endif #include @@ -51,7 +51,7 @@ const int INVALID_PORT = -1; const quint64 NODE_SILENCE_THRESHOLD_MSECS = 10 * 1000; -static const size_t DEFAULT_MAX_CONNECTION_RATE { std::numeric_limits::max() }; +static const size_t DEFAULT_MAX_CONNECTION_RATE{ std::numeric_limits::max() }; const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost"; @@ -67,26 +67,26 @@ const QHostAddress DEFAULT_ASSIGNMENT_CLIENT_MONITOR_HOSTNAME = QHostAddress::Lo const QString USERNAME_UUID_REPLACEMENT_STATS_KEY = "$username"; using ConnectionID = int64_t; -const ConnectionID NULL_CONNECTION_ID { -1 }; -const ConnectionID INITIAL_CONNECTION_ID { 0 }; +const ConnectionID NULL_CONNECTION_ID{ -1 }; +const ConnectionID INITIAL_CONNECTION_ID{ 0 }; typedef std::pair UUIDNodePair; typedef tbb::concurrent_unordered_map NodeHash; typedef quint8 PingType_t; namespace PingType { - const PingType_t Agnostic = 0; - const PingType_t Local = 1; - const PingType_t Public = 2; - const PingType_t Symmetric = 3; -} +const PingType_t Agnostic = 0; +const PingType_t Local = 1; +const PingType_t Public = 2; +const PingType_t Symmetric = 3; +} // namespace PingType class LimitedNodeList : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY public: - - enum ConnectionStep { + enum ConnectionStep + { LookupAddress = 1, HandleAddress, SendSTUNRequest, @@ -108,6 +108,14 @@ public: }; Q_ENUM(ConnectionStep); + + enum ConnectReason : quint32 + { + Connect = 0, + SilentDomainDisconnect + }; + Q_ENUM(ConnectReason); + QUuid getSessionUUID() const; void setSessionUUID(const QUuid& sessionUUID); Node::LocalID getSessionLocalID() const; @@ -117,12 +125,18 @@ public: bool isAllowedEditor() const { return _permissions.can(NodePermissions::Permission::canAdjustLocks); } bool getThisNodeCanRez() const { return _permissions.can(NodePermissions::Permission::canRezPermanentEntities); } bool getThisNodeCanRezTmp() const { return _permissions.can(NodePermissions::Permission::canRezTemporaryEntities); } - bool getThisNodeCanRezCertified() const { return _permissions.can(NodePermissions::Permission::canRezPermanentCertifiedEntities); } - bool getThisNodeCanRezTmpCertified() const { return _permissions.can(NodePermissions::Permission::canRezTemporaryCertifiedEntities); } + bool getThisNodeCanRezCertified() const { + return _permissions.can(NodePermissions::Permission::canRezPermanentCertifiedEntities); + } + bool getThisNodeCanRezTmpCertified() const { + return _permissions.can(NodePermissions::Permission::canRezTemporaryCertifiedEntities); + } bool getThisNodeCanWriteAssets() const { return _permissions.can(NodePermissions::Permission::canWriteToAssetServer); } bool getThisNodeCanKick() const { return _permissions.can(NodePermissions::Permission::canKick); } bool getThisNodeCanReplaceContent() const { return _permissions.can(NodePermissions::Permission::canReplaceDomainContent); } - bool getThisNodeCanGetAndSetPrivateUserData() const { return _permissions.can(NodePermissions::Permission::canGetAndSetPrivateUserData); } + bool getThisNodeCanGetAndSetPrivateUserData() const { + return _permissions.can(NodePermissions::Permission::canGetAndSetPrivateUserData); + } quint16 getSocketLocalPort() const { return _nodeSocket.localPort(); } Q_INVOKABLE void setSocketLocalPort(quint16 socketLocalPort); @@ -132,9 +146,18 @@ public: PacketReceiver& getPacketReceiver() { return *_packetReceiver; } virtual bool isDomainServer() const { return true; } - virtual QUuid getDomainUUID() const { assert(false); return QUuid(); } - virtual Node::LocalID getDomainLocalID() const { assert(false); return Node::NULL_LOCAL_ID; } - virtual HifiSockAddr getDomainSockAddr() const { assert(false); return HifiSockAddr(); } + virtual QUuid getDomainUUID() const { + assert(false); + return QUuid(); + } + virtual Node::LocalID getDomainLocalID() const { + assert(false); + return Node::NULL_LOCAL_ID; + } + virtual HifiSockAddr getDomainSockAddr() const { + assert(false); + return HifiSockAddr(); + } // use sendUnreliablePacket to send an unreliable packet (that you do not need to move) // either to a node (via its active socket) or to a manual sockaddr @@ -148,8 +171,9 @@ public: // use sendUnreliableUnorderedPacketList to unreliably send separate packets from the packet list // either to a node's active socket or to a manual sockaddr qint64 sendUnreliableUnorderedPacketList(NLPacketList& packetList, const Node& destinationNode); - qint64 sendUnreliableUnorderedPacketList(NLPacketList& packetList, const HifiSockAddr& sockAddr, - HMACAuth* hmacAuth = nullptr); + qint64 sendUnreliableUnorderedPacketList(NLPacketList& packetList, + const HifiSockAddr& sockAddr, + HMACAuth* hmacAuth = nullptr); // use sendPacketList to send reliable packet lists (ordered or unordered) to a node's active socket // or to a manual sock addr @@ -158,15 +182,22 @@ public: std::function linkedDataCreateCallback; - size_t size() const { QReadLocker readLock(&_nodeMutex); return _nodeHash.size(); } + size_t size() const { + QReadLocker readLock(&_nodeMutex); + return _nodeHash.size(); + } SharedNodePointer nodeWithUUID(const QUuid& nodeUUID); SharedNodePointer nodeWithLocalID(Node::LocalID localID) const; - SharedNodePointer addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType, - const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket, - Node::LocalID localID = Node::NULL_LOCAL_ID, bool isReplicated = false, - bool isUpstream = false, const QUuid& connectionSecret = QUuid(), + SharedNodePointer addOrUpdateNode(const QUuid& uuid, + NodeType_t nodeType, + const HifiSockAddr& publicSocket, + const HifiSockAddr& localSocket, + Node::LocalID localID = Node::NULL_LOCAL_ID, + bool isReplicated = false, + bool isUpstream = false, + const QUuid& connectionSecret = QUuid(), const NodePermissions& permissions = DEFAULT_AGENT_PERMISSIONS); static bool parseSTUNResponse(udt::BasePacket* packet, QHostAddress& newPublicAddress, uint16_t& newPublicPort); @@ -201,7 +232,7 @@ public: // Use this for nested loops instead of taking nested read locks! // This allows multiple threads (i.e. a thread pool) to share a lock // without deadlocking when a dying node attempts to acquire a write lock - template + template void nestedEach(NestedNodeLambda functor, int* lockWaitOut = nullptr, int* nodeTransformOut = nullptr, @@ -221,9 +252,8 @@ public: // so reserve enough memory for the current size // and then back insert all the nodes found nodes.reserve(_nodeHash.size()); - std::transform(_nodeHash.cbegin(), _nodeHash.cend(), std::back_inserter(nodes), [&](const NodeHash::value_type& it) { - return it.second; - }); + std::transform(_nodeHash.cbegin(), _nodeHash.cend(), std::back_inserter(nodes), + [&](const NodeHash::value_type& it) { return it.second; }); endTransform = usecTimestampNow(); if (nodeTransformOut) { @@ -238,7 +268,7 @@ public: } } - template + template void eachNode(NodeLambda functor) { QReadLocker readLock(&_nodeMutex); @@ -247,7 +277,7 @@ public: } } - template + template void eachMatchingNode(PredLambda predicate, NodeLambda functor) { QReadLocker readLock(&_nodeMutex); @@ -258,7 +288,7 @@ public: } } - template + template void eachNodeBreakable(BreakableNodeLambda functor) { QReadLocker readLock(&_nodeMutex); @@ -269,7 +299,7 @@ public: } } - template + template SharedNodePointer nodeMatchingPredicate(const PredLambda predicate) { QReadLocker readLock(&_nodeMutex); @@ -285,7 +315,7 @@ public: // This is unsafe because it does not take a lock // Must only be called when you know that a read lock on the node mutex is held // and will be held for the duration of your iteration - template + template void unsafeEachNode(NodeLambda functor) { for (NodeHash::const_iterator it = _nodeHash.cbegin(); it != _nodeHash.cend(); ++it) { functor(it->second); @@ -295,15 +325,19 @@ public: void putLocalPortIntoSharedMemory(const QString key, QObject* parent, quint16 localPort); bool getLocalServerPortFromSharedMemory(const QString key, quint16& localPort); - const QMap getLastConnectionTimes() const - { QReadLocker readLock(&_connectionTimeLock); return _lastConnectionTimes; } + const QMap getLastConnectionTimes() const { + QReadLocker readLock(&_connectionTimeLock); + return _lastConnectionTimes; + } void flagTimeForConnectionStep(ConnectionStep connectionStep); udt::Socket::StatsVector sampleStatsForAllConnections() { return _nodeSocket.sampleStatsForAllConnections(); } void setConnectionMaxBandwidth(int maxBandwidth) { _nodeSocket.setConnectionMaxBandwidth(maxBandwidth); } - void setPacketFilterOperator(udt::PacketFilterOperator filterOperator) { _nodeSocket.setPacketFilterOperator(filterOperator); } + void setPacketFilterOperator(udt::PacketFilterOperator filterOperator) { + _nodeSocket.setPacketFilterOperator(filterOperator); + } bool packetVersionMatch(const udt::Packet& packet); bool isPacketVerifiedWithSource(const udt::Packet& packet, Node* sourceNode = nullptr); @@ -328,14 +362,9 @@ public: float getInboundKbps() const { return _inboundKbps; } float getOutboundKbps() const { return _outboundKbps; } - const std::set SOLO_NODE_TYPES = { - NodeType::AvatarMixer, - NodeType::AudioMixer, - NodeType::AssetServer, - NodeType::EntityServer, - NodeType::MessagesMixer, - NodeType::EntityScriptServer - }; + const std::set SOLO_NODE_TYPES = + { NodeType::AvatarMixer, NodeType::AudioMixer, NodeType::AssetServer, + NodeType::EntityServer, NodeType::MessagesMixer, NodeType::EntityScriptServer }; public slots: void reset(); @@ -399,11 +428,10 @@ protected: }; LimitedNodeList(int socketListenPort = INVALID_PORT, int dtlsListenPort = INVALID_PORT); - LimitedNodeList(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton - void operator=(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton + LimitedNodeList(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton + void operator=(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton - qint64 sendPacket(std::unique_ptr packet, const Node& destinationNode, - const HifiSockAddr& overridenSockAddr); + qint64 sendPacket(std::unique_ptr packet, const Node& destinationNode, const HifiSockAddr& overridenSockAddr); void fillPacketHeader(const NLPacket& packet, HMACAuth* hmacAuth = nullptr); void setLocalSocket(const HifiSockAddr& sockAddr); @@ -415,7 +443,9 @@ protected: void stopInitialSTUNUpdate(bool success); - void sendPacketToIceServer(PacketType packetType, const HifiSockAddr& iceServerSockAddr, const QUuid& clientID, + void sendPacketToIceServer(PacketType packetType, + const HifiSockAddr& iceServerSockAddr, + const QUuid& clientID, const QUuid& peerRequestID = QUuid()); bool sockAddrBelongsToNode(const HifiSockAddr& sockAddr); @@ -426,14 +456,14 @@ protected: bool isDelayedNode(QUuid nodeUUID); NodeHash _nodeHash; - mutable QReadWriteLock _nodeMutex { QReadWriteLock::Recursive }; + mutable QReadWriteLock _nodeMutex{ QReadWriteLock::Recursive }; udt::Socket _nodeSocket; - QUdpSocket* _dtlsSocket { nullptr }; + QUdpSocket* _dtlsSocket{ nullptr }; HifiSockAddr _localSockAddr; HifiSockAddr _publicSockAddr; - HifiSockAddr _stunSockAddr { STUN_SERVER_HOSTNAME, STUN_SERVER_PORT }; - bool _hasTCPCheckedLocalSocket { false }; - bool _useAuthentication { true }; + HifiSockAddr _stunSockAddr{ STUN_SERVER_HOSTNAME, STUN_SERVER_PORT }; + bool _hasTCPCheckedLocalSocket{ false }; + bool _useAuthentication{ true }; PacketReceiver* _packetReceiver; @@ -446,11 +476,11 @@ protected: quint64 _firstSTUNTime = 0; quint64 _publicSocketUpdateTime = 0; - mutable QReadWriteLock _connectionTimeLock { }; + mutable QReadWriteLock _connectionTimeLock{}; QMap _lastConnectionTimes; bool _areConnectionTimesComplete = false; - template + template void eachNodeHashIterator(IteratorLambda functor) { QWriteLocker writeLock(&_nodeMutex); NodeHash::iterator it = _nodeHash.begin(); @@ -461,31 +491,31 @@ protected: } std::unordered_map _connectionIDs; - quint64 _nodeConnectTimestamp { 0 }; - quint64 _nodeDisconnectTimestamp { 0 }; - bool _wasSilentDomainDisconnect { false }; + quint64 _nodeConnectTimestamp{ 0 }; + quint64 _nodeDisconnectTimestamp{ 0 }; + ConnectReason _connectReason { Connect }; private slots: void flagTimeForConnectionStep(ConnectionStep connectionStep, quint64 timestamp); void possiblyTimeoutSTUNAddressLookup(); - void addSTUNHandlerToUnfiltered(); // called once STUN socket known + void addSTUNHandlerToUnfiltered(); // called once STUN socket known private: mutable QReadWriteLock _sessionUUIDLock; QUuid _sessionUUID; using LocalIDMapping = tbb::concurrent_unordered_map; LocalIDMapping _localIDMap; - Node::LocalID _sessionLocalID { 0 }; - bool _flagTimeForConnectionStep { false }; // only keep track in interface + Node::LocalID _sessionLocalID{ 0 }; + bool _flagTimeForConnectionStep{ false }; // only keep track in interface - size_t _maxConnectionRate { DEFAULT_MAX_CONNECTION_RATE }; - size_t _nodesAddedInCurrentTimeSlice { 0 }; + size_t _maxConnectionRate{ DEFAULT_MAX_CONNECTION_RATE }; + size_t _nodesAddedInCurrentTimeSlice{ 0 }; std::vector _delayedNodeAdds; - int _inboundPPS { 0 }; - int _outboundPPS { 0 }; - float _inboundKbps { 0.0f }; - float _outboundKbps { 0.0f }; + int _inboundPPS{ 0 }; + int _outboundPPS{ 0 }; + float _inboundKbps{ 0.0f }; + float _outboundKbps{ 0.0f }; }; -#endif // hifi_LimitedNodeList_h +#endif // hifi_LimitedNodeList_h diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index fa3c40b138..1f933920eb 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -113,8 +113,7 @@ NodeList::NodeList(char newOwnerType, int socketListenPort, int dtlsListenPort) connect(&_domainHandler, SIGNAL(connectedToDomain(QUrl)), &_keepAlivePingTimer, SLOT(start())); connect(&_domainHandler, &DomainHandler::disconnectedFromDomain, &_keepAlivePingTimer, &QTimer::stop); - connect(&_domainHandler, &DomainHandler::limitOfSilentDomainCheckInsReached, - this, [this]() {_wasSilentDomainDisconnect = true; }); + connect(&_domainHandler, &DomainHandler::limitOfSilentDomainCheckInsReached, this, [this]() { _connectReason = LimitedNodeList::SilentDomainDisconnect; }); // set our sockAddrBelongsToDomainOrNode method as the connection creation filter for the udt::Socket using std::placeholders::_1; @@ -418,7 +417,7 @@ void NodeList::sendDomainServerCheckIn() { auto accountManager = DependencyManager::get(); packetStream << FingerprintUtils::getMachineFingerprint(); - packetStream << quint32(_wasSilentDomainDisconnect ? 1 : 0); + packetStream << _connectReason; if (_nodeDisconnectTimestamp < _nodeConnectTimestamp) { _nodeDisconnectTimestamp = usecTimestampNow(); @@ -683,7 +682,7 @@ void NodeList::processDomainServerList(QSharedPointer message) if (newConnection) { _nodeConnectTimestamp = usecTimestampNow(); - _wasSilentDomainDisconnect = false; + _connectReason = Connect; } qint64 pingLagTime = (now - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC); diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 7ebaf5224f..30066b68e8 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -27,7 +27,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::StunResponse: return 17; case PacketType::DomainList: - return static_cast(DomainListVersion::HasTimestamp); + return static_cast(DomainListVersion::HasConnectReason); case PacketType::EntityAdd: case PacketType::EntityClone: case PacketType::EntityEdit: diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 5baf5448dd..93a5d4e2b4 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -366,7 +366,8 @@ enum class DomainListVersion : PacketVersion { GetUsernameFromUUIDSupport, GetMachineFingerprintFromUUIDSupport, AuthenticationOptional, - HasTimestamp + HasTimestamp, + HasConnectReason }; enum class AudioVersion : PacketVersion { From b32a71549675e089e0630c6407dce9ebddfe6657 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Tue, 11 Jun 2019 16:29:32 -0700 Subject: [PATCH 062/106] fixed persistant ui element when switching from HMD to Desktop. not a complete fix but sufficient for M1 --- diff.patch | 40 +++++++++++++++++++++++++ interface/src/Application.cpp | 3 +- scripts/simplifiedUI/ui/simplifiedUI.js | 12 ++++++-- 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 diff.patch diff --git a/diff.patch b/diff.patch new file mode 100644 index 0000000000..4f433568b9 --- /dev/null +++ b/diff.patch @@ -0,0 +1,40 @@ +diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js +index cdf6a9591a..4116eb4314 100644 +--- a/scripts/simplifiedUI/ui/simplifiedUI.js ++++ b/scripts/simplifiedUI/ui/simplifiedUI.js +@@ -457,9 +457,16 @@ function onGeometryChanged(rect) { + } + } + +-function ensureFirstPersonCameraInHMD(isHMDMode) { ++function onDisplayModeChanged(isHMDMode) { ++ print("TEST 2"); + if (isHMDMode) { + Camera.setModeString("first person"); ++ } else { ++ //setTimeout(function () { ++ toolbar.writeProperty("visible", false); ++ print("TEST"); ++ //}, 10000); ++ + } + } + +@@ -505,7 +512,7 @@ function startup() { + updateOutputDeviceMutedOverlay(isOutputMuted()); + Audio.mutedDesktopChanged.connect(onDesktopInputDeviceMutedChanged); + Window.geometryChanged.connect(onGeometryChanged); +- HMD.displayModeChanged.connect(ensureFirstPersonCameraInHMD); ++ HMD.displayModeChanged.connect(onDisplayModeChanged); + Audio.avatarGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); + Audio.localInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); + Audio.serverInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); +@@ -559,7 +566,7 @@ function shutdown() { + + Audio.mutedDesktopChanged.disconnect(onDesktopInputDeviceMutedChanged); + Window.geometryChanged.disconnect(onGeometryChanged); +- HMD.displayModeChanged.disconnect(ensureFirstPersonCameraInHMD); ++ HMD.displayModeChanged.disconnect(onDisplayModeChanged); + Audio.avatarGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); + Audio.localInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); + Audio.serverInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6d8e2a31af..547b8d387b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -978,7 +978,7 @@ Setting::Handle sessionRunTime{ "sessionRunTime", 0 }; const float DEFAULT_HMD_TABLET_SCALE_PERCENT = 60.0f; const float DEFAULT_DESKTOP_TABLET_SCALE_PERCENT = 75.0f; -const bool DEFAULT_DESKTOP_TABLET_BECOMES_TOOLBAR = true; +const bool DEFAULT_DESKTOP_TABLET_BECOMES_TOOLBAR = false; const bool DEFAULT_HMD_TABLET_BECOMES_TOOLBAR = false; const bool DEFAULT_PREFER_STYLUS_OVER_LASER = false; const bool DEFAULT_PREFER_AVATAR_FINGER_OVER_STYLUS = false; @@ -9301,6 +9301,7 @@ void Application::updateSystemTabletMode() { if (isHMDMode()) { DependencyManager::get()->setToolbarMode(getHmdTabletBecomesToolbarSetting()); } else { + //_desktopTabletBecomesToolbarSetting.set(false); DependencyManager::get()->setToolbarMode(getDesktopTabletBecomesToolbarSetting()); } } diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index cdf6a9591a..7547f04fa2 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -457,9 +457,15 @@ function onGeometryChanged(rect) { } } -function ensureFirstPersonCameraInHMD(isHMDMode) { +function onDisplayModeChanged(isHMDMode) { if (isHMDMode) { Camera.setModeString("first person"); + } else { + //works for now, but not a permanent fix by any means. + Script.setTimeout(function () { + var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); + toolbar.writeProperty("visible", false); + }, 700); } } @@ -505,7 +511,7 @@ function startup() { updateOutputDeviceMutedOverlay(isOutputMuted()); Audio.mutedDesktopChanged.connect(onDesktopInputDeviceMutedChanged); Window.geometryChanged.connect(onGeometryChanged); - HMD.displayModeChanged.connect(ensureFirstPersonCameraInHMD); + HMD.displayModeChanged.connect(onDisplayModeChanged); Audio.avatarGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.localInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.serverInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); @@ -559,7 +565,7 @@ function shutdown() { Audio.mutedDesktopChanged.disconnect(onDesktopInputDeviceMutedChanged); Window.geometryChanged.disconnect(onGeometryChanged); - HMD.displayModeChanged.disconnect(ensureFirstPersonCameraInHMD); + HMD.displayModeChanged.disconnect(onDisplayModeChanged); Audio.avatarGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.localInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.serverInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); From fc1f7615f48936becf29827078f0a3faebe0a8e9 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Tue, 11 Jun 2019 16:30:21 -0700 Subject: [PATCH 063/106] fix errors --- launchers/darwin/src/DownloadDomainContent.m | 4 +++- launchers/darwin/src/DownloadInterface.m | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/launchers/darwin/src/DownloadDomainContent.m b/launchers/darwin/src/DownloadDomainContent.m index f0b625c3e2..65878db356 100644 --- a/launchers/darwin/src/DownloadDomainContent.m +++ b/launchers/darwin/src/DownloadDomainContent.m @@ -54,7 +54,9 @@ -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { NSLog(@"completed; error: %@", error); - [[Launcher sharedLauncher] displayErrorPage]; + if (error) { + [[Launcher sharedLauncher] displayErrorPage]; + } } @end diff --git a/launchers/darwin/src/DownloadInterface.m b/launchers/darwin/src/DownloadInterface.m index bcc07f6377..7a8abf2e0a 100644 --- a/launchers/darwin/src/DownloadInterface.m +++ b/launchers/darwin/src/DownloadInterface.m @@ -66,7 +66,9 @@ -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { NSLog(@"completed; error: %@", error); - [[Launcher sharedLauncher] displayErrorPage]; + if (error) { + [[Launcher sharedLauncher] displayErrorPage]; + } } From 6622aba4ac40a56129b973279a07c82e8367d9f5 Mon Sep 17 00:00:00 2001 From: PrestonB1123 <51343779+PrestonB1123@users.noreply.github.com> Date: Wed, 12 Jun 2019 09:13:20 -0700 Subject: [PATCH 064/106] Delete diff.patch --- diff.patch | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 diff.patch diff --git a/diff.patch b/diff.patch deleted file mode 100644 index 4f433568b9..0000000000 --- a/diff.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js -index cdf6a9591a..4116eb4314 100644 ---- a/scripts/simplifiedUI/ui/simplifiedUI.js -+++ b/scripts/simplifiedUI/ui/simplifiedUI.js -@@ -457,9 +457,16 @@ function onGeometryChanged(rect) { - } - } - --function ensureFirstPersonCameraInHMD(isHMDMode) { -+function onDisplayModeChanged(isHMDMode) { -+ print("TEST 2"); - if (isHMDMode) { - Camera.setModeString("first person"); -+ } else { -+ //setTimeout(function () { -+ toolbar.writeProperty("visible", false); -+ print("TEST"); -+ //}, 10000); -+ - } - } - -@@ -505,7 +512,7 @@ function startup() { - updateOutputDeviceMutedOverlay(isOutputMuted()); - Audio.mutedDesktopChanged.connect(onDesktopInputDeviceMutedChanged); - Window.geometryChanged.connect(onGeometryChanged); -- HMD.displayModeChanged.connect(ensureFirstPersonCameraInHMD); -+ HMD.displayModeChanged.connect(onDisplayModeChanged); - Audio.avatarGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); - Audio.localInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); - Audio.serverInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); -@@ -559,7 +566,7 @@ function shutdown() { - - Audio.mutedDesktopChanged.disconnect(onDesktopInputDeviceMutedChanged); - Window.geometryChanged.disconnect(onGeometryChanged); -- HMD.displayModeChanged.disconnect(ensureFirstPersonCameraInHMD); -+ HMD.displayModeChanged.disconnect(onDisplayModeChanged); - Audio.avatarGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); - Audio.localInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); - Audio.serverInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); From a79a75702a7f7437baa7e77f0085594e3ae16880 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 09:17:18 -0700 Subject: [PATCH 065/106] reverted a couple of testing changes and added a variable --- interface/src/Application.cpp | 3 +-- scripts/simplifiedUI/ui/simplifiedUI.js | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 547b8d387b..6d8e2a31af 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -978,7 +978,7 @@ Setting::Handle sessionRunTime{ "sessionRunTime", 0 }; const float DEFAULT_HMD_TABLET_SCALE_PERCENT = 60.0f; const float DEFAULT_DESKTOP_TABLET_SCALE_PERCENT = 75.0f; -const bool DEFAULT_DESKTOP_TABLET_BECOMES_TOOLBAR = false; +const bool DEFAULT_DESKTOP_TABLET_BECOMES_TOOLBAR = true; const bool DEFAULT_HMD_TABLET_BECOMES_TOOLBAR = false; const bool DEFAULT_PREFER_STYLUS_OVER_LASER = false; const bool DEFAULT_PREFER_AVATAR_FINGER_OVER_STYLUS = false; @@ -9301,7 +9301,6 @@ void Application::updateSystemTabletMode() { if (isHMDMode()) { DependencyManager::get()->setToolbarMode(getHmdTabletBecomesToolbarSetting()); } else { - //_desktopTabletBecomesToolbarSetting.set(false); DependencyManager::get()->setToolbarMode(getDesktopTabletBecomesToolbarSetting()); } } diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 7547f04fa2..54914118c2 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -457,6 +457,7 @@ function onGeometryChanged(rect) { } } +var TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS = 700 function onDisplayModeChanged(isHMDMode) { if (isHMDMode) { Camera.setModeString("first person"); @@ -465,7 +466,7 @@ function onDisplayModeChanged(isHMDMode) { Script.setTimeout(function () { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); toolbar.writeProperty("visible", false); - }, 700); + }, TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS); } } From 266c08227f23f9019001ba6b7f563bc9f358a803 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 09:29:43 -0700 Subject: [PATCH 066/106] turned an else into an else if --- scripts/simplifiedUI/ui/simplifiedUI.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 54914118c2..72442b46ed 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -461,8 +461,8 @@ var TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS = 700 function onDisplayModeChanged(isHMDMode) { if (isHMDMode) { Camera.setModeString("first person"); - } else { - //works for now, but not a permanent fix by any means. + } else if (Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) { + // works for now, but not a permanent fix by any means. Script.setTimeout(function () { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); toolbar.writeProperty("visible", false); From 6c0bbfae7608b02da8a67460f85cfbcb5cd2f718 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 10:02:33 -0700 Subject: [PATCH 067/106] hopefully good now --- scripts/simplifiedUI/ui/simplifiedUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 72442b46ed..0b28fc7f35 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -457,7 +457,7 @@ function onGeometryChanged(rect) { } } -var TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS = 700 +var TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS = 700; function onDisplayModeChanged(isHMDMode) { if (isHMDMode) { Camera.setModeString("first person"); From 51c2cc793a173b0ac973d762ee515d65d0888da2 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 12 Jun 2019 10:20:54 -0700 Subject: [PATCH 068/106] Tinkering with toolbar visibility signal - not quite working --- interface/resources/qml/hifi/Desktop.qml | 8 ++++++++ libraries/ui/src/OffscreenUi.cpp | 6 ++++++ libraries/ui/src/OffscreenUi.h | 4 +++- libraries/ui/src/ui/ToolbarScriptingInterface.cpp | 5 +++++ libraries/ui/src/ui/ToolbarScriptingInterface.h | 6 ++++++ 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index 5fa6234504..64a145b0c5 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -12,6 +12,8 @@ import controlsUit 1.0 OriginalDesktop.Desktop { id: desktop + property alias toolbarObjectName: sysToolbar.objectName + MouseArea { id: hoverWatch anchors.fill: parent @@ -70,7 +72,13 @@ OriginalDesktop.Desktop { x: sysToolbar.x buttonModel: tablet ? tablet.buttons : null; shown: tablet ? tablet.toolbarMode : false; + + onVisibleChanged: { + console.log("ZRF HERE DESKTOP.QML: " + visible); + desktop.toolbarVisibleChanged(visible); + } } + signal toolbarVisibleChanged(bool isVisible); QtSettings.Settings { id: settings; diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 1e6a01c187..c39159748d 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -688,6 +688,12 @@ void OffscreenUi::createDesktop(const QUrl& url) { menuInitializer(_vrMenu); } + + QString toolbarName = newObject->property("toolbarObjectName").toString(); // will return "com.highfidelity.interface.toolbar.system" + auto toolbarScriptingInterface = DependencyManager::get(); + _currentToolbarProxy = dynamic_cast(toolbarScriptingInterface->getToolbar(toolbarName)); + connect(_desktop, SIGNAL(toolbarVisibleChanged(bool)), _currentToolbarProxy, SLOT(onToolbarVisibleChanged(bool))); + auto keyboardFocus = new KeyboardFocusHack(); connect(_desktop, SIGNAL(showDesktop()), this, SIGNAL(showDesktop())); emit desktopReady(); diff --git a/libraries/ui/src/OffscreenUi.h b/libraries/ui/src/OffscreenUi.h index 6abbc486d0..67c23ce41e 100644 --- a/libraries/ui/src/OffscreenUi.h +++ b/libraries/ui/src/OffscreenUi.h @@ -24,6 +24,7 @@ #include #include "ui/OffscreenQmlSurface.h" +#include "ui/ToolbarScriptingInterface.h" #include "OffscreenQmlElement.h" class VrMenu; @@ -270,7 +271,8 @@ private: QList _modalDialogListeners; std::unordered_map _pressedKeys; VrMenu* _vrMenu { nullptr }; - QQueue> _queuedMenuInitializers; + QQueue> _queuedMenuInitializers; + ToolbarProxy* _currentToolbarProxy; }; #endif diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp index d01b538004..ebc22d528b 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp @@ -63,6 +63,11 @@ void ToolbarButtonProxy::editProperties(const QVariantMap& properties) { } } +void ToolbarProxy::onToolbarVisibleChanged(bool isVisible) { + qDebug() << "ZRF HERE IN ENGINE SLOT"; + emit ToolbarProxy::toolbarVisibleChanged(isVisible); +} + ToolbarProxy::ToolbarProxy(QObject* qmlObject, QObject* parent) : QmlWrapper(qmlObject, parent) { Q_ASSERT(QThread::currentThread() == qApp->thread()); } diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.h b/libraries/ui/src/ui/ToolbarScriptingInterface.h index 409ea28fdc..8ce548f7b6 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.h +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.h @@ -129,6 +129,12 @@ public: * @param {string[]} propertyList * @returns {object} */ + +public slots: + void onToolbarVisibleChanged(bool isVisible); + +signals: + void toolbarVisibleChanged(bool isVisible); }; Q_DECLARE_METATYPE(ToolbarProxy*); From b396256d7543f42f3442835441e8cf0e852e0c41 Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Wed, 12 Jun 2019 11:02:49 -0700 Subject: [PATCH 069/106] updating org url and trim whitespace for org and username --- launchers/darwin/src/CredentialsRequest.m | 3 ++- launchers/darwin/src/OrganizationRequest.m | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/launchers/darwin/src/CredentialsRequest.m b/launchers/darwin/src/CredentialsRequest.m index fd651bd98a..a5c24496ec 100644 --- a/launchers/darwin/src/CredentialsRequest.m +++ b/launchers/darwin/src/CredentialsRequest.m @@ -7,8 +7,9 @@ - (void) confirmCredentials:(NSString*)username :(NSString*)password { NSLog(@"web request started"); + NSString* trimmedUsername = [username stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; NSString *post = [NSString stringWithFormat:@"grant_type=password&username=%@&password=%@&scope=owner", - [username stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]], + [trimmedUsername stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]], [password stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]]]; NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding]; NSString *postLength = [NSString stringWithFormat:@"%ld", (unsigned long)[postData length]]; diff --git a/launchers/darwin/src/OrganizationRequest.m b/launchers/darwin/src/OrganizationRequest.m index 36a4228c96..abc104785a 100644 --- a/launchers/darwin/src/OrganizationRequest.m +++ b/launchers/darwin/src/OrganizationRequest.m @@ -4,15 +4,15 @@ #import "Launcher.h" -static NSString* const organizationURL = @"https://s3.amazonaws.com/hifi-public/huffman/organizations/"; +static NSString* const organizationURL = @"https://orgs.highfidelity.com/organizations/"; @implementation OrganizationRequest - (void) confirmOrganization:(NSString*)aOrganization :(NSString*)aUsername { self.username = aUsername; - + NSString* trimmedOrgString = [aOrganization stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; const char *cKey = LAUNCHER_HMAC_SECRET; - const char *cData = [[aOrganization lowercaseString] cStringUsingEncoding:NSASCIIStringEncoding]; + const char *cData = [[trimmedOrgString lowercaseString] cStringUsingEncoding:NSASCIIStringEncoding]; unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC); NSData *HMACData = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)]; From 6e6bd18baad192fec6828ad9eb3900e22ab220c3 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Wed, 12 Jun 2019 11:43:43 -0700 Subject: [PATCH 070/106] Undo Visual Studio mis-formatting --- domain-server/src/DomainGatekeeper.cpp | 2 +- libraries/networking/src/LimitedNodeList.h | 157 +++++++++------------ 2 files changed, 68 insertions(+), 91 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index fee6069c7a..709c5810e2 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -126,7 +126,7 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointer #ifndef _WIN32 -#include // not on windows, not needed for mac or windows +#include // not on windows, not needed for mac or windows #endif #include @@ -51,7 +51,7 @@ const int INVALID_PORT = -1; const quint64 NODE_SILENCE_THRESHOLD_MSECS = 10 * 1000; -static const size_t DEFAULT_MAX_CONNECTION_RATE{ std::numeric_limits::max() }; +static const size_t DEFAULT_MAX_CONNECTION_RATE { std::numeric_limits::max() }; const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost"; @@ -67,26 +67,26 @@ const QHostAddress DEFAULT_ASSIGNMENT_CLIENT_MONITOR_HOSTNAME = QHostAddress::Lo const QString USERNAME_UUID_REPLACEMENT_STATS_KEY = "$username"; using ConnectionID = int64_t; -const ConnectionID NULL_CONNECTION_ID{ -1 }; -const ConnectionID INITIAL_CONNECTION_ID{ 0 }; +const ConnectionID NULL_CONNECTION_ID { -1 }; +const ConnectionID INITIAL_CONNECTION_ID { 0 }; typedef std::pair UUIDNodePair; typedef tbb::concurrent_unordered_map NodeHash; typedef quint8 PingType_t; namespace PingType { -const PingType_t Agnostic = 0; -const PingType_t Local = 1; -const PingType_t Public = 2; -const PingType_t Symmetric = 3; -} // namespace PingType + const PingType_t Agnostic = 0; + const PingType_t Local = 1; + const PingType_t Public = 2; + const PingType_t Symmetric = 3; +} class LimitedNodeList : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY public: - enum ConnectionStep - { + + enum ConnectionStep { LookupAddress = 1, HandleAddress, SendSTUNRequest, @@ -109,8 +109,7 @@ public: Q_ENUM(ConnectionStep); - enum ConnectReason : quint32 - { + enum ConnectReason : quint32 { Connect = 0, SilentDomainDisconnect }; @@ -125,18 +124,12 @@ public: bool isAllowedEditor() const { return _permissions.can(NodePermissions::Permission::canAdjustLocks); } bool getThisNodeCanRez() const { return _permissions.can(NodePermissions::Permission::canRezPermanentEntities); } bool getThisNodeCanRezTmp() const { return _permissions.can(NodePermissions::Permission::canRezTemporaryEntities); } - bool getThisNodeCanRezCertified() const { - return _permissions.can(NodePermissions::Permission::canRezPermanentCertifiedEntities); - } - bool getThisNodeCanRezTmpCertified() const { - return _permissions.can(NodePermissions::Permission::canRezTemporaryCertifiedEntities); - } + bool getThisNodeCanRezCertified() const { return _permissions.can(NodePermissions::Permission::canRezPermanentCertifiedEntities); } + bool getThisNodeCanRezTmpCertified() const { return _permissions.can(NodePermissions::Permission::canRezTemporaryCertifiedEntities); } bool getThisNodeCanWriteAssets() const { return _permissions.can(NodePermissions::Permission::canWriteToAssetServer); } bool getThisNodeCanKick() const { return _permissions.can(NodePermissions::Permission::canKick); } bool getThisNodeCanReplaceContent() const { return _permissions.can(NodePermissions::Permission::canReplaceDomainContent); } - bool getThisNodeCanGetAndSetPrivateUserData() const { - return _permissions.can(NodePermissions::Permission::canGetAndSetPrivateUserData); - } + bool getThisNodeCanGetAndSetPrivateUserData() const { return _permissions.can(NodePermissions::Permission::canGetAndSetPrivateUserData); } quint16 getSocketLocalPort() const { return _nodeSocket.localPort(); } Q_INVOKABLE void setSocketLocalPort(quint16 socketLocalPort); @@ -146,18 +139,9 @@ public: PacketReceiver& getPacketReceiver() { return *_packetReceiver; } virtual bool isDomainServer() const { return true; } - virtual QUuid getDomainUUID() const { - assert(false); - return QUuid(); - } - virtual Node::LocalID getDomainLocalID() const { - assert(false); - return Node::NULL_LOCAL_ID; - } - virtual HifiSockAddr getDomainSockAddr() const { - assert(false); - return HifiSockAddr(); - } + virtual QUuid getDomainUUID() const { assert(false); return QUuid(); } + virtual Node::LocalID getDomainLocalID() const { assert(false); return Node::NULL_LOCAL_ID; } + virtual HifiSockAddr getDomainSockAddr() const { assert(false); return HifiSockAddr(); } // use sendUnreliablePacket to send an unreliable packet (that you do not need to move) // either to a node (via its active socket) or to a manual sockaddr @@ -171,9 +155,8 @@ public: // use sendUnreliableUnorderedPacketList to unreliably send separate packets from the packet list // either to a node's active socket or to a manual sockaddr qint64 sendUnreliableUnorderedPacketList(NLPacketList& packetList, const Node& destinationNode); - qint64 sendUnreliableUnorderedPacketList(NLPacketList& packetList, - const HifiSockAddr& sockAddr, - HMACAuth* hmacAuth = nullptr); + qint64 sendUnreliableUnorderedPacketList(NLPacketList& packetList, const HifiSockAddr& sockAddr, + HMACAuth* hmacAuth = nullptr); // use sendPacketList to send reliable packet lists (ordered or unordered) to a node's active socket // or to a manual sock addr @@ -182,22 +165,15 @@ public: std::function linkedDataCreateCallback; - size_t size() const { - QReadLocker readLock(&_nodeMutex); - return _nodeHash.size(); - } + size_t size() const { QReadLocker readLock(&_nodeMutex); return _nodeHash.size(); } SharedNodePointer nodeWithUUID(const QUuid& nodeUUID); SharedNodePointer nodeWithLocalID(Node::LocalID localID) const; - SharedNodePointer addOrUpdateNode(const QUuid& uuid, - NodeType_t nodeType, - const HifiSockAddr& publicSocket, - const HifiSockAddr& localSocket, - Node::LocalID localID = Node::NULL_LOCAL_ID, - bool isReplicated = false, - bool isUpstream = false, - const QUuid& connectionSecret = QUuid(), + SharedNodePointer addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType, + const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket, + Node::LocalID localID = Node::NULL_LOCAL_ID, bool isReplicated = false, + bool isUpstream = false, const QUuid& connectionSecret = QUuid(), const NodePermissions& permissions = DEFAULT_AGENT_PERMISSIONS); static bool parseSTUNResponse(udt::BasePacket* packet, QHostAddress& newPublicAddress, uint16_t& newPublicPort); @@ -232,7 +208,7 @@ public: // Use this for nested loops instead of taking nested read locks! // This allows multiple threads (i.e. a thread pool) to share a lock // without deadlocking when a dying node attempts to acquire a write lock - template + template void nestedEach(NestedNodeLambda functor, int* lockWaitOut = nullptr, int* nodeTransformOut = nullptr, @@ -252,8 +228,9 @@ public: // so reserve enough memory for the current size // and then back insert all the nodes found nodes.reserve(_nodeHash.size()); - std::transform(_nodeHash.cbegin(), _nodeHash.cend(), std::back_inserter(nodes), - [&](const NodeHash::value_type& it) { return it.second; }); + std::transform(_nodeHash.cbegin(), _nodeHash.cend(), std::back_inserter(nodes), [&](const NodeHash::value_type& it) { + return it.second; + }); endTransform = usecTimestampNow(); if (nodeTransformOut) { @@ -268,7 +245,7 @@ public: } } - template + template void eachNode(NodeLambda functor) { QReadLocker readLock(&_nodeMutex); @@ -277,7 +254,7 @@ public: } } - template + template void eachMatchingNode(PredLambda predicate, NodeLambda functor) { QReadLocker readLock(&_nodeMutex); @@ -288,7 +265,7 @@ public: } } - template + template void eachNodeBreakable(BreakableNodeLambda functor) { QReadLocker readLock(&_nodeMutex); @@ -299,7 +276,7 @@ public: } } - template + template SharedNodePointer nodeMatchingPredicate(const PredLambda predicate) { QReadLocker readLock(&_nodeMutex); @@ -315,7 +292,7 @@ public: // This is unsafe because it does not take a lock // Must only be called when you know that a read lock on the node mutex is held // and will be held for the duration of your iteration - template + template void unsafeEachNode(NodeLambda functor) { for (NodeHash::const_iterator it = _nodeHash.cbegin(); it != _nodeHash.cend(); ++it) { functor(it->second); @@ -325,19 +302,15 @@ public: void putLocalPortIntoSharedMemory(const QString key, QObject* parent, quint16 localPort); bool getLocalServerPortFromSharedMemory(const QString key, quint16& localPort); - const QMap getLastConnectionTimes() const { - QReadLocker readLock(&_connectionTimeLock); - return _lastConnectionTimes; - } + const QMap getLastConnectionTimes() const + { QReadLocker readLock(&_connectionTimeLock); return _lastConnectionTimes; } void flagTimeForConnectionStep(ConnectionStep connectionStep); udt::Socket::StatsVector sampleStatsForAllConnections() { return _nodeSocket.sampleStatsForAllConnections(); } void setConnectionMaxBandwidth(int maxBandwidth) { _nodeSocket.setConnectionMaxBandwidth(maxBandwidth); } - void setPacketFilterOperator(udt::PacketFilterOperator filterOperator) { - _nodeSocket.setPacketFilterOperator(filterOperator); - } + void setPacketFilterOperator(udt::PacketFilterOperator filterOperator) { _nodeSocket.setPacketFilterOperator(filterOperator); } bool packetVersionMatch(const udt::Packet& packet); bool isPacketVerifiedWithSource(const udt::Packet& packet, Node* sourceNode = nullptr); @@ -362,9 +335,14 @@ public: float getInboundKbps() const { return _inboundKbps; } float getOutboundKbps() const { return _outboundKbps; } - const std::set SOLO_NODE_TYPES = - { NodeType::AvatarMixer, NodeType::AudioMixer, NodeType::AssetServer, - NodeType::EntityServer, NodeType::MessagesMixer, NodeType::EntityScriptServer }; + const std::set SOLO_NODE_TYPES = { + NodeType::AvatarMixer, + NodeType::AudioMixer, + NodeType::AssetServer, + NodeType::EntityServer, + NodeType::MessagesMixer, + NodeType::EntityScriptServer + }; public slots: void reset(); @@ -428,10 +406,11 @@ protected: }; LimitedNodeList(int socketListenPort = INVALID_PORT, int dtlsListenPort = INVALID_PORT); - LimitedNodeList(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton - void operator=(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton + LimitedNodeList(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton + void operator=(LimitedNodeList const&) = delete; // Don't implement, needed to avoid copies of singleton - qint64 sendPacket(std::unique_ptr packet, const Node& destinationNode, const HifiSockAddr& overridenSockAddr); + qint64 sendPacket(std::unique_ptr packet, const Node& destinationNode, + const HifiSockAddr& overridenSockAddr); void fillPacketHeader(const NLPacket& packet, HMACAuth* hmacAuth = nullptr); void setLocalSocket(const HifiSockAddr& sockAddr); @@ -443,9 +422,7 @@ protected: void stopInitialSTUNUpdate(bool success); - void sendPacketToIceServer(PacketType packetType, - const HifiSockAddr& iceServerSockAddr, - const QUuid& clientID, + void sendPacketToIceServer(PacketType packetType, const HifiSockAddr& iceServerSockAddr, const QUuid& clientID, const QUuid& peerRequestID = QUuid()); bool sockAddrBelongsToNode(const HifiSockAddr& sockAddr); @@ -456,14 +433,14 @@ protected: bool isDelayedNode(QUuid nodeUUID); NodeHash _nodeHash; - mutable QReadWriteLock _nodeMutex{ QReadWriteLock::Recursive }; + mutable QReadWriteLock _nodeMutex { QReadWriteLock::Recursive }; udt::Socket _nodeSocket; - QUdpSocket* _dtlsSocket{ nullptr }; + QUdpSocket* _dtlsSocket { nullptr }; HifiSockAddr _localSockAddr; HifiSockAddr _publicSockAddr; - HifiSockAddr _stunSockAddr{ STUN_SERVER_HOSTNAME, STUN_SERVER_PORT }; - bool _hasTCPCheckedLocalSocket{ false }; - bool _useAuthentication{ true }; + HifiSockAddr _stunSockAddr { STUN_SERVER_HOSTNAME, STUN_SERVER_PORT }; + bool _hasTCPCheckedLocalSocket { false }; + bool _useAuthentication { true }; PacketReceiver* _packetReceiver; @@ -476,11 +453,11 @@ protected: quint64 _firstSTUNTime = 0; quint64 _publicSocketUpdateTime = 0; - mutable QReadWriteLock _connectionTimeLock{}; + mutable QReadWriteLock _connectionTimeLock { }; QMap _lastConnectionTimes; bool _areConnectionTimesComplete = false; - template + template void eachNodeHashIterator(IteratorLambda functor) { QWriteLocker writeLock(&_nodeMutex); NodeHash::iterator it = _nodeHash.begin(); @@ -498,24 +475,24 @@ protected: private slots: void flagTimeForConnectionStep(ConnectionStep connectionStep, quint64 timestamp); void possiblyTimeoutSTUNAddressLookup(); - void addSTUNHandlerToUnfiltered(); // called once STUN socket known + void addSTUNHandlerToUnfiltered(); // called once STUN socket known private: mutable QReadWriteLock _sessionUUIDLock; QUuid _sessionUUID; using LocalIDMapping = tbb::concurrent_unordered_map; LocalIDMapping _localIDMap; - Node::LocalID _sessionLocalID{ 0 }; - bool _flagTimeForConnectionStep{ false }; // only keep track in interface + Node::LocalID _sessionLocalID { 0 }; + bool _flagTimeForConnectionStep { false }; // only keep track in interface - size_t _maxConnectionRate{ DEFAULT_MAX_CONNECTION_RATE }; - size_t _nodesAddedInCurrentTimeSlice{ 0 }; + size_t _maxConnectionRate { DEFAULT_MAX_CONNECTION_RATE }; + size_t _nodesAddedInCurrentTimeSlice { 0 }; std::vector _delayedNodeAdds; - int _inboundPPS{ 0 }; - int _outboundPPS{ 0 }; - float _inboundKbps{ 0.0f }; - float _outboundKbps{ 0.0f }; + int _inboundPPS { 0 }; + int _outboundPPS { 0 }; + float _inboundKbps { 0.0f }; + float _outboundKbps { 0.0f }; }; -#endif // hifi_LimitedNodeList_h +#endif // hifi_LimitedNodeList_h From ca0c9e236bd8f1d41589369574e7de7b47f68eca Mon Sep 17 00:00:00 2001 From: Roxanne Skelly Date: Wed, 12 Jun 2019 11:58:26 -0700 Subject: [PATCH 071/106] Cleanup --- libraries/networking/src/NodeList.cpp | 1 + libraries/networking/src/udt/Socket.cpp | 10 +++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 1f933920eb..86b33bbe20 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -452,6 +452,7 @@ void NodeList::sendDomainServerCheckIn() { static const int MAX_CHECKINS_TOGETHER = 20; static const int REBIND_CHECKIN_COUNT = 2; int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); + if (outstandingCheckins > REBIND_CHECKIN_COUNT) { _nodeSocket.rebind(); } diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index b8e2784017..9871935853 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -62,9 +62,9 @@ void Socket::bind(const QHostAddress& address, quint16 port) { #elif defined(Q_OS_WIN) auto sd = _udpSocket.socketDescriptor(); int val = 0; // false - if (setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, (const char*)&val, sizeof(val))) { - auto err = WSAGetLastError(); - qCWarning(networking) << "Socket::bind Cannot setsockopt IP_DONTFRAGMENT" << err; + if (setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, (const char *)&val, sizeof(val))) { + auto wsaErr = WSAGetLastError(); + qCWarning(networking) << "Socket::bind Cannot setsockopt IP_DONTFRAGMENT" << wsaErr; } #endif } @@ -234,7 +234,6 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc return -1; } qint64 bytesWritten = _udpSocket.writeDatagram(datagram, sockAddr.getAddress(), sockAddr.getPort()); - int pending = _udpSocket.bytesToWrite(); if (bytesWritten < 0 || pending) { int wsaError = 0; @@ -243,9 +242,6 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc #endif qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << wsaError << _udpSocket.error() << "(" << _udpSocket.errorString() << ")" << (pending ? "pending bytes:" : "pending:") << pending; - - qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << _udpSocket.error() << "(" << _udpSocket.errorString() << ")"; - #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; From c5b1024bacd8eb8720db9a21e6d55c98322cc6bc Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 12 Jun 2019 12:12:29 -0700 Subject: [PATCH 072/106] New org http, interface on front and copy all --- launchers/win32/LauncherDlg.cpp | 24 +++++++++++---- launchers/win32/LauncherDlg.h | 2 ++ launchers/win32/LauncherManager.cpp | 45 ++++++++++++++++------------- launchers/win32/LauncherManager.h | 4 ++- launchers/win32/LauncherUtils.cpp | 36 +++++++++++++++++++++++ launchers/win32/LauncherUtils.h | 1 + 6 files changed, 86 insertions(+), 26 deletions(-) diff --git a/launchers/win32/LauncherDlg.cpp b/launchers/win32/LauncherDlg.cpp index abf53b46b5..d3cae39013 100644 --- a/launchers/win32/LauncherDlg.cpp +++ b/launchers/win32/LauncherDlg.cpp @@ -120,8 +120,16 @@ BOOL CLauncherDlg::OnInitDialog() { BOOL CLauncherDlg::PreTranslateMessage(MSG* pMsg) { if ((pMsg->message == WM_KEYDOWN)) { - if (pMsg->wParam == VK_RETURN) - { + if (pMsg->wParam == 'A' && GetKeyState(VK_CONTROL) < 0) { + CWnd* wnd = GetFocus(); + CWnd* myWnd = this->GetDlgItem(IDC_ORGNAME); + if (wnd && (wnd == this->GetDlgItem(IDC_ORGNAME) || + wnd == this->GetDlgItem(IDC_USERNAME) || + wnd == this->GetDlgItem(IDC_PASSWORD))) { + ((CEdit*)wnd)->SetSel(0, -1); + } + return TRUE; + } else if (pMsg->wParam == VK_RETURN) { OnNextClicked(); return TRUE; } @@ -140,7 +148,6 @@ void CLauncherDlg::setCustomDialog() { SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, lExStyle); SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); - // theApp.setDialogOnFront(); } void CLauncherDlg::OnPaint() @@ -210,7 +217,7 @@ BOOL CLauncherDlg::getHQInfo(const CString& orgname) { } afx_msg void CLauncherDlg::OnTroubleClicked() { - ShellExecute(0, NULL, TROUBLE_URL, NULL, NULL, SW_SHOWDEFAULT); + LauncherUtils::executeOnForeground(TROUBLE_URL, _T("")); } afx_msg void CLauncherDlg::OnNextClicked() { @@ -584,10 +591,14 @@ void CLauncherDlg::OnTimer(UINT_PTR nIDEvent) { } else { theApp._manager.addToLog(_T("Start splash screen")); setDrawDialog(DrawStep::DrawLogo); - } + } } else if (_splashStep > 100) { _showSplash = false; if (theApp._manager.shouldShutDown()) { + if (_applicationWND != NULL) { + ::SetForegroundWindow(_applicationWND); + ::SetActiveWindow(_applicationWND); + } if (LauncherUtils::IsProcessRunning(L"interface.exe")) { exit(0); } @@ -607,6 +618,9 @@ void CLauncherDlg::OnTimer(UINT_PTR nIDEvent) { exit(0); } } + if (theApp._manager.shouldLaunch()) { + _applicationWND = theApp._manager.launchApplication(); + } } void CLauncherDlg::setDrawDialog(DrawStep step, BOOL isUpdate) { diff --git a/launchers/win32/LauncherDlg.h b/launchers/win32/LauncherDlg.h index e998b342c1..beaaedcdb6 100644 --- a/launchers/win32/LauncherDlg.h +++ b/launchers/win32/LauncherDlg.h @@ -90,6 +90,8 @@ protected: CStatic* m_username_banner; CStatic* m_password_banner; + HWND _applicationWND { 0 }; + void drawBackground(CHwndRenderTarget* pRenderTarget); void drawLogo(CHwndRenderTarget* pRenderTarget); void drawSmallLogo(CHwndRenderTarget* pRenderTarget); diff --git a/launchers/win32/LauncherManager.cpp b/launchers/win32/LauncherManager.cpp index 91bb80d4b8..35903a0887 100644 --- a/launchers/win32/LauncherManager.cpp +++ b/launchers/win32/LauncherManager.cpp @@ -34,7 +34,7 @@ void LauncherManager::init() { addToLog(_T("Installed version: ") + currentVersion); if (_latestVersion.Compare(currentVersion) == 0) { addToLog(_T("Already running most recent build. Launching interface.exe")); - launchApplication(); + _shouldLaunch = TRUE; _shouldShutdown = TRUE; } else { addToLog(_T("New build found. Updating")); @@ -94,7 +94,7 @@ BOOL LauncherManager::installLauncher() { // The installer is not running on the desired location and has to be installed // Kill of running before self-copy if (LauncherUtils::IsProcessRunning(LAUNCHER_EXE_FILENAME)) { - ::ShellExecute(NULL, NULL, L"taskkill", L"/F /T /IM " + LAUNCHER_EXE_FILENAME, NULL, SW_HIDE); + ShellExecute(NULL, NULL, L"taskkill", L"/F /T /IM " + LAUNCHER_EXE_FILENAME, NULL, SW_HIDE); } CopyFile(appPath, instalationPath, FALSE); } @@ -218,24 +218,27 @@ BOOL LauncherManager::getInstalledVersion(const CString& path, CString& version) } -BOOL LauncherManager::launchApplication(const CString& tokensJSON) { +HWND LauncherManager::launchApplication() { CString installDir; LauncherManager::getAndCreatePaths(PathType::Interface_Directory, installDir); CString interfaceExe = installDir + _T("\\interface.exe"); - CString params1 = _T("--url \"") + _domainURL + ("\" "); + CString urlParam = _T("--url \"") + _domainURL + ("\" "); CString scriptsURL = installDir + _T("\\scripts\\simplifiedUI"); - CString params2 = _T("--scripts \"") + scriptsURL + ("\" "); + CString scriptsParam = _T("--scripts \"") + scriptsURL + ("\" "); CString cacheDir; LauncherManager::getAndCreatePaths(PathType::Content_Directory, cacheDir); - CString params3 = _T("--cache \"") + cacheDir + ("\" "); - CString params4 = !_displayName.IsEmpty() ? _T("--displayName \"") + _displayName + ("\" ") : _T(""); - CString parsedTokens = tokensJSON; - parsedTokens.Replace(_T("\""), _T("\\\"")); - CString params5 = !tokensJSON.IsEmpty() ? _T("--tokens \"") + parsedTokens + ("\"") : _T(""); - CString params = params1 + params2 + params3 + params4 + params5 + EXTRA_PARAMETERS; - - auto rs = ShellExecute(NULL, L"open", interfaceExe, params, NULL, SW_SHOW); - return (rs != NULL); + CString cacheParam = _T("--cache \"") + cacheDir + ("\" "); + CString nameParam = !_displayName.IsEmpty() ? _T("--displayName \"") + _displayName + ("\" ") : _T(""); + CString tokensParam = _T(""); + if (!_tokensJSON.IsEmpty()) { + CString parsedTokens = _tokensJSON; + parsedTokens.Replace(_T("\""), _T("\\\"")); + tokensParam = _T("--tokens \""); + tokensParam += parsedTokens + _T("\""); + } + CString params = urlParam + scriptsParam + cacheParam + nameParam + tokensParam + EXTRA_PARAMETERS; + _shouldLaunch = FALSE; + return LauncherUtils::executeOnForeground(interfaceExe, params); } BOOL LauncherManager::createConfigJSON() { @@ -288,8 +291,8 @@ LauncherUtils::ResponseError LauncherManager::readConfigJSON(CString& version, C LauncherUtils::ResponseError LauncherManager::readOrganizationJSON(const CString& hash) { CString contentTypeJson = L"content-type:application/json"; CString response; - CString url = _T("/hifi-public/huffman/organizations/") + hash + _T(".json"); - LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"s3.amazonaws.com", url, + CString url = _T("/organizations/") + hash + _T(".json"); + LauncherUtils::ResponseError error = LauncherUtils::makeHTTPCall(L"HQ Launcher", L"orgs.highfidelity.com", url, contentTypeJson, CStringA(), response, false); if (error != LauncherUtils::ResponseError::NoError) { return error; @@ -407,9 +410,11 @@ void LauncherManager::onZipExtracted(ZipType type, int size) { addToLog(_T("Creating config.json")); createConfigJSON(); addToLog(_T("Launching application.")); - launchApplication(_tokensJSON); - addToLog(_T("Creating registry keys.")); - createApplicationRegistryKeys(size); + _shouldLaunch = TRUE; + if (!_shouldUpdate) { + addToLog(_T("Creating registry keys.")); + createApplicationRegistryKeys(size); + } _shouldShutdown = TRUE; } } @@ -429,7 +434,7 @@ void LauncherManager::onFileDownloaded(DownloadType type) { addToLog(_T("Installing content.")); installContent(); } else if (type == DownloadType::DownloadApplication) { - addToLog(_T("Installing application.")); + addToLog(_T("Installing application.")); extractApplication(); } } diff --git a/launchers/win32/LauncherManager.h b/launchers/win32/LauncherManager.h index b0e212a097..6fa7efeeda 100644 --- a/launchers/win32/LauncherManager.h +++ b/launchers/win32/LauncherManager.h @@ -70,7 +70,7 @@ public: BOOL deleteApplicationRegistryKeys(); BOOL createShortcuts(); BOOL deleteShortcuts(); - BOOL launchApplication(const CString& tokensJSON = _T("")); + HWND launchApplication(); BOOL uninstallApplication(); BOOL installLauncher(); @@ -79,6 +79,7 @@ public: const CString& getdomainURL() const { return _domainURL; } const CString& getVersion() const { return _version; } BOOL shouldShutDown() const { return _shouldShutdown; } + BOOL shouldLaunch() const { return _shouldLaunch; } BOOL needsUpdate() { return _shouldUpdate; } BOOL needsUninstall() { return _shouldUninstall; } void setDisplayName(const CString& displayName) { _displayName = displayName; } @@ -108,6 +109,7 @@ private: BOOL _shouldUpdate{ FALSE }; BOOL _shouldUninstall{ FALSE }; BOOL _shouldShutdown{ FALSE }; + BOOL _shouldLaunch{ FALSE }; CStdioFile _logFile; }; diff --git a/launchers/win32/LauncherUtils.cpp b/launchers/win32/LauncherUtils.cpp index 0309671bc2..cfb8b765c5 100644 --- a/launchers/win32/LauncherUtils.cpp +++ b/launchers/win32/LauncherUtils.cpp @@ -13,6 +13,7 @@ #include #include #include + #pragma comment(lib, "winhttp") #include "LauncherUtils.h" @@ -450,3 +451,38 @@ BOOL LauncherUtils::deleteDirectoriesOnThread(const CString& applicationDir, } return FALSE; } + +HWND LauncherUtils::executeOnForeground(const CString& path, const CString& params) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.lpVerb = _T("open"); + info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC | SEE_MASK_WAITFORINPUTIDLE; + info.hwnd = NULL; + info.lpVerb = NULL; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = SW_SHOWNORMAL; + info.hInstApp = NULL; + info.lpFile = path; + info.lpParameters = params; + HWND hwnd = NULL; + if (!ShellExecuteEx(&info)) { + return FALSE; + } else { + DWORD infopid = GetProcessId(info.hProcess); + AllowSetForegroundWindow(infopid); + hwnd = GetTopWindow(0); + while (hwnd) { + DWORD pid; + DWORD dwTheardId = ::GetWindowThreadProcessId(hwnd, &pid); + if (pid == infopid) { + SetForegroundWindow(hwnd); + SetActiveWindow(hwnd); + break; + } + hwnd = ::GetNextWindow(hwnd, GW_HWNDNEXT); + } + CloseHandle(info.hProcess); + } + return hwnd; +} diff --git a/launchers/win32/LauncherUtils.h b/launchers/win32/LauncherUtils.h index 504212fcde..a1cc553128 100644 --- a/launchers/win32/LauncherUtils.h +++ b/launchers/win32/LauncherUtils.h @@ -87,6 +87,7 @@ public: const CString& downloadsDir, std::function callback); static CString urlEncodeString(const CString& url); + static HWND executeOnForeground(const CString& path, const CString& params); private: // Threads From fade8f9c043006769e41d8b2aab012a6ef4e01f6 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 12 Jun 2019 12:42:58 -0700 Subject: [PATCH 073/106] It works! --- interface/resources/qml/hifi/Desktop.qml | 6 +++--- libraries/ui/src/OffscreenUi.cpp | 3 +-- libraries/ui/src/ui/ToolbarScriptingInterface.cpp | 10 +++++----- libraries/ui/src/ui/ToolbarScriptingInterface.h | 12 ++++++------ 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index 64a145b0c5..87647efe3f 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -74,11 +74,11 @@ OriginalDesktop.Desktop { shown: tablet ? tablet.toolbarMode : false; onVisibleChanged: { - console.log("ZRF HERE DESKTOP.QML: " + visible); - desktop.toolbarVisibleChanged(visible); + console.log("ZRF HERE DESKTOP.QML: " + visible + " " + sysToolbar.objectName); + desktop.toolbarVisibleChanged(visible, sysToolbar.objectName); } } - signal toolbarVisibleChanged(bool isVisible); + signal toolbarVisibleChanged(bool isVisible, string toolbarName); QtSettings.Settings { id: settings; diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index c39159748d..32512e6316 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -691,8 +691,7 @@ void OffscreenUi::createDesktop(const QUrl& url) { QString toolbarName = newObject->property("toolbarObjectName").toString(); // will return "com.highfidelity.interface.toolbar.system" auto toolbarScriptingInterface = DependencyManager::get(); - _currentToolbarProxy = dynamic_cast(toolbarScriptingInterface->getToolbar(toolbarName)); - connect(_desktop, SIGNAL(toolbarVisibleChanged(bool)), _currentToolbarProxy, SLOT(onToolbarVisibleChanged(bool))); + connect(_desktop, SIGNAL(toolbarVisibleChanged(bool, QString)), toolbarScriptingInterface.data(), SLOT(onToolbarVisibleChanged(bool, QString))); auto keyboardFocus = new KeyboardFocusHack(); connect(_desktop, SIGNAL(showDesktop()), this, SIGNAL(showDesktop())); diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp index ebc22d528b..dc31d08e42 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp @@ -63,11 +63,6 @@ void ToolbarButtonProxy::editProperties(const QVariantMap& properties) { } } -void ToolbarProxy::onToolbarVisibleChanged(bool isVisible) { - qDebug() << "ZRF HERE IN ENGINE SLOT"; - emit ToolbarProxy::toolbarVisibleChanged(isVisible); -} - ToolbarProxy::ToolbarProxy(QObject* qmlObject, QObject* parent) : QmlWrapper(qmlObject, parent) { Q_ASSERT(QThread::currentThread() == qApp->thread()); } @@ -125,3 +120,8 @@ ToolbarProxy* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) { return new ToolbarProxy(rawToolbar); } + +void ToolbarScriptingInterface::onToolbarVisibleChanged(bool isVisible, QString toolbarName) { + qDebug() << "ZRF HERE IN ENGINE SLOT" << isVisible << toolbarName; + emit ToolbarScriptingInterface::toolbarVisibleChanged(isVisible, toolbarName); +} diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.h b/libraries/ui/src/ui/ToolbarScriptingInterface.h index 8ce548f7b6..8266bb93f2 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.h +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.h @@ -129,12 +129,6 @@ public: * @param {string[]} propertyList * @returns {object} */ - -public slots: - void onToolbarVisibleChanged(bool isVisible); - -signals: - void toolbarVisibleChanged(bool isVisible); }; Q_DECLARE_METATYPE(ToolbarProxy*); @@ -156,6 +150,12 @@ public: * @returns {ToolbarProxy} */ Q_INVOKABLE ToolbarProxy* getToolbar(const QString& toolbarId); + +public slots: + void onToolbarVisibleChanged(bool isVisible, QString toolbarName); + +signals: + void toolbarVisibleChanged(bool isVisible, QString toolbarName); }; From 6fed58145254abc80700a2afc31600daadc76e58 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 12 Jun 2019 14:22:02 -0700 Subject: [PATCH 074/106] DEV-128: Update settings screen with latest design --- .../hifi/simplifiedUI/avatarApp/AvatarApp.qml | 2 +- .../{ => avatarApp}/images/accent.svg | 0 .../simplifiedUI/settingsApp/SettingsApp.qml | 18 ++++++++++++++---- .../simplifiedUI/settingsApp/audio/Audio.qml | 8 ++++---- .../hifi/simplifiedUI/settingsApp/dev/Dev.qml | 2 +- .../settingsApp/general/General.qml | 8 ++++---- .../settingsApp/images/accent1.svg | 4 ++++ .../settingsApp/images/accent2.svg | 4 ++++ .../settingsApp/images/accent3.svg | 4 ++++ .../hifi/simplifiedUI/settingsApp/vr/VR.qml | 8 ++++---- .../SimplifiedConstants.qml | 2 +- 11 files changed, 41 insertions(+), 19 deletions(-) rename interface/resources/qml/hifi/simplifiedUI/{ => avatarApp}/images/accent.svg (100%) create mode 100644 interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent1.svg create mode 100644 interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent2.svg create mode 100644 interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent3.svg diff --git a/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml b/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml index 4c6615ebdc..957df6d584 100644 --- a/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml +++ b/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml @@ -88,7 +88,7 @@ Rectangle { Image { id: accent - source: "../images/accent.svg" + source: "images/accent.svg" anchors.top: parent.top anchors.right: parent.right width: 60 diff --git a/interface/resources/qml/hifi/simplifiedUI/images/accent.svg b/interface/resources/qml/hifi/simplifiedUI/avatarApp/images/accent.svg similarity index 100% rename from interface/resources/qml/hifi/simplifiedUI/images/accent.svg rename to interface/resources/qml/hifi/simplifiedUI/avatarApp/images/accent.svg diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml index da3a6ab57c..60703a8062 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/SettingsApp.qml @@ -165,11 +165,21 @@ Rectangle { } Image { - source: "../images/accent.svg" + source: { + if (root.activeTabView === "generalTabView") { + "images/accent1.svg" + } else if (root.activeTabView === "audioTabView") { + "images/accent2.svg" + } else if (root.activeTabView === "vrTabView") { + "images/accent3.svg" + } else { + "images/accent3.svg" + } + } anchors.right: parent.right - anchors.bottom: parent.bottom - width: 94 - height: 175 + anchors.top: tabContainer.bottom + width: 106 + height: 200 } diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/audio/Audio.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/audio/Audio.qml index 7a19ab1a0f..4dc5e973fc 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/audio/Audio.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/audio/Audio.qml @@ -57,7 +57,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: volumeControlsTitle text: "Volume Controls" Layout.preferredWidth: parent.width @@ -154,7 +154,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: micControlsTitle text: "Default Mute Controls" Layout.maximumWidth: parent.width @@ -196,7 +196,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: inputDeviceTitle text: "Which input device?" Layout.maximumWidth: parent.width @@ -291,7 +291,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: outputDeviceTitle text: "Which output device?" Layout.maximumWidth: parent.width diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml index 996abc3bb6..a8c0a8f158 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/dev/Dev.qml @@ -47,7 +47,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: uiControlsTitle text: "User Interface" Layout.maximumWidth: parent.width diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml index 4ec3f59598..f56d0f33bd 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/general/General.qml @@ -51,7 +51,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: avatarNameTagsTitle text: "Avatar Name Tags" Layout.maximumWidth: parent.width @@ -99,7 +99,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: performanceTitle text: "Graphics Settings" Layout.maximumWidth: parent.width @@ -147,7 +147,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: cameraTitle text: "Camera View" Layout.maximumWidth: parent.width @@ -199,7 +199,7 @@ Flickable { wrapMode: Text.Wrap width: paintedWidth height: paintedHeight - size: 22 + size: 14 color: simplifiedUI.colors.text.lightBlue MouseArea { diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent1.svg b/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent1.svg new file mode 100644 index 0000000000..885edef5ac --- /dev/null +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent2.svg b/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent2.svg new file mode 100644 index 0000000000..027d9bb623 --- /dev/null +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent3.svg b/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent3.svg new file mode 100644 index 0000000000..07cc23ef1e --- /dev/null +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/images/accent3.svg @@ -0,0 +1,4 @@ + + + + diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml index c7e3cc9fc2..9f5ed3ff8f 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml @@ -57,7 +57,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: controlsTitle text: "VR Movement Controls" Layout.maximumWidth: parent.width @@ -143,7 +143,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: micControlsTitle text: "Default Mute Controls" Layout.maximumWidth: parent.width @@ -185,7 +185,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: inputDeviceTitle text: "Which input device?" Layout.maximumWidth: parent.width @@ -280,7 +280,7 @@ Flickable { Layout.preferredWidth: parent.width spacing: 0 - HifiStylesUit.GraphikRegular { + HifiStylesUit.GraphikSemiBold { id: outputDeviceTitle text: "Which output device?" Layout.maximumWidth: parent.width diff --git a/interface/resources/qml/hifi/simplifiedUI/simplifiedConstants/SimplifiedConstants.qml b/interface/resources/qml/hifi/simplifiedUI/simplifiedConstants/SimplifiedConstants.qml index 1f628b041d..5aa94d798e 100644 --- a/interface/resources/qml/hifi/simplifiedUI/simplifiedConstants/SimplifiedConstants.qml +++ b/interface/resources/qml/hifi/simplifiedUI/simplifiedConstants/SimplifiedConstants.qml @@ -183,7 +183,7 @@ QtObject { readonly property QtObject settings: QtObject { property int subtitleTopMargin: 2 - property int settingsGroupTopMargin: 24 + property int settingsGroupTopMargin: 14 property int spacingBetweenSettings: 48 property int spacingBetweenRadiobuttons: 14 } From 34e9acc0b5647040a6f5e6282bc432c5c1bd4517 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 14:31:43 -0700 Subject: [PATCH 075/106] better fix for the toolbar remnant --- interface/resources/qml/hifi/Desktop.qml | 1 - libraries/ui/src/OffscreenUi.cpp | 2 +- .../ui/src/ui/ToolbarScriptingInterface.cpp | 7 +------ .../ui/src/ui/ToolbarScriptingInterface.h | 3 --- scripts/simplifiedUI/ui/simplifiedUI.js | 19 +++++++++++++------ 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index 87647efe3f..3239471a00 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -74,7 +74,6 @@ OriginalDesktop.Desktop { shown: tablet ? tablet.toolbarMode : false; onVisibleChanged: { - console.log("ZRF HERE DESKTOP.QML: " + visible + " " + sysToolbar.objectName); desktop.toolbarVisibleChanged(visible, sysToolbar.objectName); } } diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 32512e6316..0b114a2e3e 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -691,7 +691,7 @@ void OffscreenUi::createDesktop(const QUrl& url) { QString toolbarName = newObject->property("toolbarObjectName").toString(); // will return "com.highfidelity.interface.toolbar.system" auto toolbarScriptingInterface = DependencyManager::get(); - connect(_desktop, SIGNAL(toolbarVisibleChanged(bool, QString)), toolbarScriptingInterface.data(), SLOT(onToolbarVisibleChanged(bool, QString))); + connect(_desktop, SIGNAL(toolbarVisibleChanged(bool, QString)), toolbarScriptingInterface.data(), SIGNAL(toolbarVisibleChanged(bool, QString))); auto keyboardFocus = new KeyboardFocusHack(); connect(_desktop, SIGNAL(showDesktop()), this, SIGNAL(showDesktop())); diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp index dc31d08e42..7ddc6463c3 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp @@ -119,9 +119,4 @@ ToolbarProxy* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) { } return new ToolbarProxy(rawToolbar); -} - -void ToolbarScriptingInterface::onToolbarVisibleChanged(bool isVisible, QString toolbarName) { - qDebug() << "ZRF HERE IN ENGINE SLOT" << isVisible << toolbarName; - emit ToolbarScriptingInterface::toolbarVisibleChanged(isVisible, toolbarName); -} +} \ No newline at end of file diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.h b/libraries/ui/src/ui/ToolbarScriptingInterface.h index 8266bb93f2..952d3cce95 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.h +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.h @@ -151,9 +151,6 @@ public: */ Q_INVOKABLE ToolbarProxy* getToolbar(const QString& toolbarId); -public slots: - void onToolbarVisibleChanged(bool isVisible, QString toolbarName); - signals: void toolbarVisibleChanged(bool isVisible, QString toolbarName); }; diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index bafc5fffe1..84ee93ecbf 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -457,12 +457,19 @@ function onGeometryChanged(rect) { } } -function ensureFirstPersonCameraInHMD(isHMDMode) { +function onDisplayModeChanged(isHMDMode) { if (isHMDMode) { Camera.setModeString("first person"); } } +function onToolbarVisibleChanged(isVisible, toolbarName) { + var toolbar = Toolbars.getToolbar(toolbarName); + if (isVisible) { + toolbar.writeProperty("visible", false); + } +} + function onStatusChanged() { sendLocalStatusToQml(); @@ -505,11 +512,12 @@ function startup() { updateOutputDeviceMutedOverlay(isOutputMuted()); Audio.mutedDesktopChanged.connect(onDesktopInputDeviceMutedChanged); Window.geometryChanged.connect(onGeometryChanged); - HMD.displayModeChanged.connect(ensureFirstPersonCameraInHMD); + HMD.displayModeChanged.connect(onDisplayModeChanged); Audio.avatarGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.localInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.serverInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.systemInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); + Toolbars.toolbarVisibleChanged.connect(onToolbarVisibleChanged); oldShowAudioTools = AvatarInputs.showAudioTools; AvatarInputs.showAudioTools = false; @@ -535,9 +543,7 @@ function shutdown() { if (!HMD.active) { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); - if (toolbar) { - toolbar.writeProperty("visible", true); - } + toolbar.writeProperty("visible", true); } } @@ -561,11 +567,12 @@ function shutdown() { Audio.mutedDesktopChanged.disconnect(onDesktopInputDeviceMutedChanged); Window.geometryChanged.disconnect(onGeometryChanged); - HMD.displayModeChanged.disconnect(ensureFirstPersonCameraInHMD); + HMD.displayModeChanged.disconnect(onDisplayModeChanged); Audio.avatarGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.localInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.serverInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.systemInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); + Toolbars.toolbarVisibleChanged.disconnect(onToolbarVisibleChanged); AvatarInputs.showAudioTools = oldShowAudioTools; AvatarInputs.showBubbleTools = oldShowBubbleTools; From 8fa80f89350d525e6f0d774041be6efed9108f81 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 14:57:37 -0700 Subject: [PATCH 076/106] fixed some formatting problems --- scripts/simplifiedUI/ui/simplifiedUI.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 91d8096881..84ee93ecbf 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -457,19 +457,9 @@ function onGeometryChanged(rect) { } } -<<<<<<< HEAD -======= -var TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS = 700; ->>>>>>> f360adccbc827bb52dc4a73ebe2c6890e8be039e function onDisplayModeChanged(isHMDMode) { if (isHMDMode) { Camera.setModeString("first person"); - } else if (Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) { - // works for now, but not a permanent fix by any means. - Script.setTimeout(function () { - var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); - toolbar.writeProperty("visible", false); - }, TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS); } } From 4b30065ad191f3b0291e4b90f1b24549b98e58fd Mon Sep 17 00:00:00 2001 From: Anna Date: Wed, 12 Jun 2019 15:17:37 -0700 Subject: [PATCH 077/106] fixed keyboard on quest login and cleaned up qml files --- interface/resources/qml/LoginDialog.qml | 16 ++-- .../qml/dialogs/TabletLoginDialog.qml | 74 ++++++++++--------- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 71 ++++++++++-------- 3 files changed, 90 insertions(+), 71 deletions(-) diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml index 2d5c68c0e8..e3cd492edb 100644 --- a/interface/resources/qml/LoginDialog.qml +++ b/interface/resources/qml/LoginDialog.qml @@ -13,15 +13,14 @@ import QtQuick 2.4 import controlsUit 1.0 as HifiControlsUit import stylesUit 1.0 as HifiStylesUit -import "LoginDialog" - FocusScope { id: root - HifiStylesUit.HifiConstants { id: hifi } objectName: "LoginDialog" property bool shown: true visible: shown + HifiStylesUit.HifiConstants { id: hifi } + anchors.fill: parent readonly property bool isTablet: false @@ -33,12 +32,17 @@ FocusScope { property bool keyboardRaised: false property bool punctuationMode: false property bool isPassword: false - property string title: "" - property string text: "" - property int titleWidth: 0 + property alias bannerWidth: banner.width property alias bannerHeight: banner.height + property string title: "" + property string text: "" + + property int titleWidth: 0 + + property bool isHMD: HMD.active + function tryDestroy() { root.destroy() } diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index 8d6444bc0e..b01bb5b761 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -23,43 +23,36 @@ FocusScope { objectName: "LoginDialog" visible: true + HifiStylesUit.HifiConstants { id: hifi } + anchors.fill: parent - width: parent.width - height: parent.height - property var tabletProxy: Tablet.getTablet("com.highfidelity.interface.tablet.system"); - - property bool isHMD: HMD.active - property bool gotoPreviousApp: false; + readonly property bool isTablet: true + readonly property bool isOverlay: false + property string iconText: hifi.glyphs.avatar + property int iconSize: 35 property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false property bool isPassword: false - readonly property bool isTablet: true - readonly property bool isOverlay: false - property alias text: loginKeyboard.mirroredText - - property int titleWidth: 0 property alias bannerWidth: banner.width property alias bannerHeight: banner.height - property string iconText: hifi.glyphs.avatar - property int iconSize: 35 - property var pane: QtObject { - property real width: root.width - property real height: root.height - } + property int titleWidth: 0 - function tryDestroy() { - tabletProxy.gotoHomeScreen(); - } + property bool isHMD: HMD.active - MouseArea { - width: root.width - height: root.height - } + // TABLET SPECIFIC PROPERTIES START // + property alias text: loginKeyboard.mirroredText + + width: parent.width + height: parent.height + + property var tabletProxy: Tablet.getTablet("com.highfidelity.interface.tablet.system") + + property bool gotoPreviousApp: false property bool keyboardOverride: true @@ -70,7 +63,20 @@ FocusScope { property alias loginDialog: loginDialog property alias hifi: hifi - HifiStylesUit.HifiConstants { id: hifi } + property var pane: QtObject { + property real width: root.width + property real height: root.height + } + + MouseArea { + width: root.width + height: root.height + } + // TABLET SPECIFIC PROPERTIES END // + + function tryDestroy() { + tabletProxy.gotoHomeScreen(); + } Timer { id: keyboardTimer @@ -102,6 +108,15 @@ FocusScope { anchors.fill: parent } + Rectangle { + z: -6 + id: opaqueRect + height: parent.height + width: parent.width + opacity: 0.65 + color: "black" + } + Item { z: -5 id: bannerContainer @@ -119,15 +134,6 @@ FocusScope { } } - Rectangle { - z: -6 - id: opaqueRect - height: parent.height - width: parent.width - opacity: 0.65 - color: "black" - } - HifiControlsUit.Keyboard { id: loginKeyboard raised: root.keyboardEnabled && root.keyboardRaised diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index ec0fad5ff0..975c067fbd 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -686,43 +686,52 @@ void OffscreenQmlSurface::setKeyboardRaised(QObject* object, bool raised, bool n return; } -#if !defined(Q_OS_ANDROID) - // if HMD is being worn, allow keyboard to open. allow it to close, HMD or not. - if (!raised || qApp->property(hifi::properties::HMD).toBool()) { - QQuickItem* item = dynamic_cast(object); - if (!item) { - return; - } + bool android; +#if defined(Q_OS_ANDROID) + android = true; +#endif - // for future probably makes sense to consider one of the following: - // 1. make keyboard a singleton, which will be dynamically re-parented before showing - // 2. track currently visible keyboard somewhere, allow to subscribe for this signal - // any of above should also eliminate need in duplicated properties and code below + bool hmd = qApp->property(hifi::properties::HMD).toBool(); - while (item) { - // Numeric value may be set in parameter from HTML UI; for QML UI, detect numeric fields here. - numeric = numeric || QString(item->metaObject()->className()).left(7) == "SpinBox"; - - if (item->property("keyboardRaised").isValid()) { - // FIXME - HMD only: Possibly set value of "keyboardEnabled" per isHMDMode() for use in WebView.qml. - if (item->property("punctuationMode").isValid()) { - item->setProperty("punctuationMode", QVariant(numeric)); - } - if (item->property("passwordField").isValid()) { - item->setProperty("passwordField", QVariant(passwordField)); - } - - if (raised) { - item->setProperty("keyboardRaised", QVariant(!raised)); - } - - item->setProperty("keyboardRaised", QVariant(raised)); + if (!android || hmd) { + // if HMD is being worn, allow keyboard to open. allow it to close, HMD or not. + if (!raised || hmd) { + QQuickItem* item = dynamic_cast(object); + if (!item) { return; } - item = dynamic_cast(item->parentItem()); + + // for future probably makes sense to consider one of the following: + // 1. make keyboard a singleton, which will be dynamically re-parented before showing + // 2. track currently visible keyboard somewhere, allow to subscribe for this signal + // any of above should also eliminate need in duplicated properties and code below + + while (item) { + // Numeric value may be set in parameter from HTML UI; for QML UI, detect numeric fields here. + numeric = numeric || QString(item->metaObject()->className()).left(7) == "SpinBox"; + + if (item->property("keyboardRaised").isValid()) { + + if (item->property("punctuationMode").isValid()) { + item->setProperty("punctuationMode", QVariant(numeric)); + } + if (item->property("passwordField").isValid()) { + item->setProperty("passwordField", QVariant(passwordField)); + } + + if (hmd && item->property("keyboardEnabled").isValid()) { + item->setProperty("keyboardEnabled", true); + } + + item->setProperty("keyboardRaised", QVariant(raised)); + + return; + } + item = dynamic_cast(item->parentItem()); + } } } -#endif + } void OffscreenQmlSurface::emitScriptEvent(const QVariant& message) { From 29d795af5b3b48982141e13e08a1848cfde5f05f Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 15:36:20 -0700 Subject: [PATCH 078/106] hopefully good now --- libraries/ui/src/OffscreenUi.cpp | 1 + libraries/ui/src/OffscreenUi.h | 2 -- libraries/ui/src/ui/ToolbarScriptingInterface.cpp | 2 +- scripts/simplifiedUI/ui/simplifiedUI.js | 8 +++++--- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 0b114a2e3e..e49ee811e0 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -27,6 +27,7 @@ #include "VrMenu.h" #include "ui/Logging.h" +#include "ui/ToolbarScriptingInterface.h" #include #include "MainWindow.h" diff --git a/libraries/ui/src/OffscreenUi.h b/libraries/ui/src/OffscreenUi.h index 67c23ce41e..13326f8c2d 100644 --- a/libraries/ui/src/OffscreenUi.h +++ b/libraries/ui/src/OffscreenUi.h @@ -24,7 +24,6 @@ #include #include "ui/OffscreenQmlSurface.h" -#include "ui/ToolbarScriptingInterface.h" #include "OffscreenQmlElement.h" class VrMenu; @@ -272,7 +271,6 @@ private: std::unordered_map _pressedKeys; VrMenu* _vrMenu { nullptr }; QQueue> _queuedMenuInitializers; - ToolbarProxy* _currentToolbarProxy; }; #endif diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp index 7ddc6463c3..d01b538004 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp @@ -119,4 +119,4 @@ ToolbarProxy* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) { } return new ToolbarProxy(rawToolbar); -} \ No newline at end of file +} diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 84ee93ecbf..73b3d14fec 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -464,8 +464,8 @@ function onDisplayModeChanged(isHMDMode) { } function onToolbarVisibleChanged(isVisible, toolbarName) { - var toolbar = Toolbars.getToolbar(toolbarName); - if (isVisible) { + if (isVisible && toolbarName == TOOLBAR_NAME) { + var toolbar = Toolbars.getToolbar(toolbarName); toolbar.writeProperty("visible", false); } } @@ -497,7 +497,9 @@ function startup() { if (!HMD.active) { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); - toolbar.writeProperty("visible", false); + if (toolbar) { + toolbar.writeProperty("visible", false); + } } } From 8dcf6e6a036d74af7707dd19600e879deb2a1f74 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 15:47:19 -0700 Subject: [PATCH 079/106] removed a dead line of code, made a couple formating changes --- libraries/ui/src/OffscreenUi.cpp | 1 - libraries/ui/src/OffscreenUi.h | 2 +- scripts/simplifiedUI/ui/simplifiedUI.js | 4 +++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index e49ee811e0..f0b27904ae 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -690,7 +690,6 @@ void OffscreenUi::createDesktop(const QUrl& url) { } - QString toolbarName = newObject->property("toolbarObjectName").toString(); // will return "com.highfidelity.interface.toolbar.system" auto toolbarScriptingInterface = DependencyManager::get(); connect(_desktop, SIGNAL(toolbarVisibleChanged(bool, QString)), toolbarScriptingInterface.data(), SIGNAL(toolbarVisibleChanged(bool, QString))); diff --git a/libraries/ui/src/OffscreenUi.h b/libraries/ui/src/OffscreenUi.h index 13326f8c2d..6abbc486d0 100644 --- a/libraries/ui/src/OffscreenUi.h +++ b/libraries/ui/src/OffscreenUi.h @@ -270,7 +270,7 @@ private: QList _modalDialogListeners; std::unordered_map _pressedKeys; VrMenu* _vrMenu { nullptr }; - QQueue> _queuedMenuInitializers; + QQueue> _queuedMenuInitializers; }; #endif diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 73b3d14fec..45dd02dc2a 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -466,7 +466,9 @@ function onDisplayModeChanged(isHMDMode) { function onToolbarVisibleChanged(isVisible, toolbarName) { if (isVisible && toolbarName == TOOLBAR_NAME) { var toolbar = Toolbars.getToolbar(toolbarName); - toolbar.writeProperty("visible", false); + if (toolbar) { + toolbar.writeProperty("visible", false); + } } } From 3cd3f1a508f2c3acdaa9b345eb24bbf3be0a32f2 Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 15:56:27 -0700 Subject: [PATCH 080/106] one last fix --- scripts/simplifiedUI/ui/simplifiedUI.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 45dd02dc2a..428ade8fd6 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -547,7 +547,9 @@ function shutdown() { if (!HMD.active) { var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); - toolbar.writeProperty("visible", true); + if (toolbar) { + toolbar.writeProperty("visible", true); + } } } From 2eeec3518d860ab34a34bdbebe97e36402ee62be Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 16:03:03 -0700 Subject: [PATCH 081/106] one last fix --- scripts/simplifiedUI/ui/simplifiedUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 428ade8fd6..da37038c28 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -464,7 +464,7 @@ function onDisplayModeChanged(isHMDMode) { } function onToolbarVisibleChanged(isVisible, toolbarName) { - if (isVisible && toolbarName == TOOLBAR_NAME) { + if (isVisible && toolbarName == TOOLBAR_NAME && Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) { var toolbar = Toolbars.getToolbar(toolbarName); if (toolbar) { toolbar.writeProperty("visible", false); From eee52deefeb32e1db3c3799141a052641f08dffd Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 12 Jun 2019 16:07:15 -0700 Subject: [PATCH 082/106] destroy WebSurfaces on shutdown --- interface/src/Application.cpp | 1 + .../src/EntityTreeRenderer.cpp | 28 +++++++++++++------ .../src/RenderableWebEntityItem.cpp | 20 +++++++------ .../src/RenderableWebEntityItem.h | 1 + libraries/entities/src/WebEntityItem.cpp | 2 +- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2f9a151c2f..f9470782bf 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2708,6 +2708,7 @@ void Application::cleanupBeforeQuit() { } getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts + getEntities()->clear(); // Clear any queued processing (I/O, FBX/OBJ/Texture parsing) QThreadPool::globalInstance()->clear(); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 1ecbcb0c8b..8671b3da7e 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -256,18 +256,28 @@ void EntityTreeRenderer::clear() { } // reset the engine - if (_wantScripts && !_shuttingDown) { - resetEntitiesScriptEngine(); - } - // remove all entities from the scene auto scene = _viewState->getMain3DScene(); - if (scene) { - for (const auto& entry : _entitiesInScene) { - const auto& renderer = entry.second; - fadeOutRenderable(renderer); + if (_shuttingDown) { + if (scene) { + render::Transaction transaction; + for (const auto& entry : _entitiesInScene) { + const auto& renderer = entry.second; + renderer->removeFromScene(scene, transaction); + } + scene->enqueueTransaction(transaction); } } else { - qCWarning(entitiesrenderer) << "EntitityTreeRenderer::clear(), Unexpected null scene, possibly during application shutdown"; + if (_wantScripts) { + resetEntitiesScriptEngine(); + } + if (scene) { + for (const auto& entry : _entitiesInScene) { + const auto& renderer = entry.second; + fadeOutRenderable(renderer); + } + } else { + qCWarning(entitiesrenderer) << "EntitityTreeRenderer::clear(), Unexpected null scene"; + } } _entitiesInScene.clear(); _renderablesToUpdate.clear(); diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 3b615ba467..3334a958f3 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -7,6 +7,7 @@ // #include "RenderableWebEntityItem.h" +#include #include #include @@ -46,7 +47,7 @@ static uint64_t MAX_NO_RENDER_INTERVAL = 30 * USECS_PER_SECOND; static uint8_t YOUTUBE_MAX_FPS = 30; // Don't allow more than 20 concurrent web views -static uint32_t _currentWebCount { 0 }; +static std::atomic _currentWebCount(0); static const uint32_t MAX_CONCURRENT_WEB_VIEWS = 20; static QTouchDevice _touchDevice; @@ -356,16 +357,15 @@ void WebEntityRenderer::buildWebSurface(const EntityItemPointer& entity, const Q void WebEntityRenderer::destroyWebSurface() { QSharedPointer webSurface; - ContentType contentType = ContentType::NoContent; withWriteLock([&] { webSurface.swap(_webSurface); - _contentType = contentType; - }); + _contentType = ContentType::NoContent; - if (webSurface) { - --_currentWebCount; - WebEntityRenderer::releaseWebSurface(webSurface, _cachedWebSurface, _connections); - } + if (webSurface) { + --_currentWebCount; + WebEntityRenderer::releaseWebSurface(webSurface, _cachedWebSurface, _connections); + } + }); } glm::vec2 WebEntityRenderer::getWindowSize(const TypedEntityPointer& entity) const { @@ -469,6 +469,10 @@ void WebEntityRenderer::handlePointerEventAsMouse(const PointerEvent& event) { QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } +void WebEntityRenderer::onRemoveFromSceneTyped(const TypedEntityPointer& entity) { + destroyWebSurface(); +} + void WebEntityRenderer::setProxyWindow(QWindow* proxyWindow) { withReadLock([&] { if (_webSurface) { diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.h b/libraries/entities-renderer/src/RenderableWebEntityItem.h index 7118774d30..6cda1601c8 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.h +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.h @@ -64,6 +64,7 @@ protected: void handlePointerEventAsTouch(const PointerEvent& event); void handlePointerEventAsMouse(const PointerEvent& event); + void onRemoveFromSceneTyped(const TypedEntityPointer& entity) override; private: void onTimeout(); void buildWebSurface(const EntityItemPointer& entity, const QString& newSourceURL); diff --git a/libraries/entities/src/WebEntityItem.cpp b/libraries/entities/src/WebEntityItem.cpp index 0748790df9..b40de7e42a 100644 --- a/libraries/entities/src/WebEntityItem.cpp +++ b/libraries/entities/src/WebEntityItem.cpp @@ -343,4 +343,4 @@ PulsePropertyGroup WebEntityItem::getPulseProperties() const { return resultWithReadLock([&] { return _pulseProperties; }); -} \ No newline at end of file +} From e32d6e96ce67b01a2b2627a0e3e5c4e5e146a17d Mon Sep 17 00:00:00 2001 From: Preston Bezos Date: Wed, 12 Jun 2019 16:12:24 -0700 Subject: [PATCH 083/106] code was backwards --- scripts/simplifiedUI/ui/simplifiedUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index da37038c28..16f081fb6b 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -464,7 +464,7 @@ function onDisplayModeChanged(isHMDMode) { } function onToolbarVisibleChanged(isVisible, toolbarName) { - if (isVisible && toolbarName == TOOLBAR_NAME && Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) { + if (isVisible && toolbarName == TOOLBAR_NAME && !Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) { var toolbar = Toolbars.getToolbar(toolbarName); if (toolbar) { toolbar.writeProperty("visible", false); From b2feb0f9201a8b6bc62fb452b78aa6a18fc200bd Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 12 Jun 2019 16:48:36 -0700 Subject: [PATCH 084/106] Add specific caps for the render method deferred from the platform profiler, to prevent bad choice on mac book air --- interface/src/PerformanceManager.cpp | 13 +++++++-- libraries/platform/src/platform/Profiler.cpp | 30 ++++++++++++++++++++ libraries/platform/src/platform/Profiler.h | 3 ++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/interface/src/PerformanceManager.cpp b/interface/src/PerformanceManager.cpp index cf6da11aeb..0a028f95cc 100644 --- a/interface/src/PerformanceManager.cpp +++ b/interface/src/PerformanceManager.cpp @@ -63,9 +63,15 @@ PerformanceManager::PerformancePreset PerformanceManager::getPerformancePreset() void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformancePreset preset) { + // Ugly case that prevent us to run deferred everywhere... + bool isDeferredCapable = platform::Profiler::isRenderMethodDeferredCapable(); + switch (preset) { case PerformancePreset::HIGH: - RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); + RenderScriptingInterface::getInstance()->setRenderMethod( ( isDeferredCapable ? + RenderScriptingInterface::RenderMethod::DEFERRED : + RenderScriptingInterface::RenderMethod::FORWARD ) ); + RenderScriptingInterface::getInstance()->setShadowsEnabled(true); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME); @@ -73,7 +79,10 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP break; case PerformancePreset::MID: - RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); + RenderScriptingInterface::getInstance()->setRenderMethod((isDeferredCapable ? + RenderScriptingInterface::RenderMethod::DEFERRED : + RenderScriptingInterface::RenderMethod::FORWARD)); + RenderScriptingInterface::getInstance()->setShadowsEnabled(false); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE); DependencyManager::get()->setWorldDetailQuality(0.5f); diff --git a/libraries/platform/src/platform/Profiler.cpp b/libraries/platform/src/platform/Profiler.cpp index f77bbec46b..96c9feaa36 100644 --- a/libraries/platform/src/platform/Profiler.cpp +++ b/libraries/platform/src/platform/Profiler.cpp @@ -124,4 +124,34 @@ bool filterOnProcessors(const platform::json& computer, const platform::json& cp // Not able to profile return false; +} + +// Ugly very adhoc capability check to know if a particular hw can REnder with Deferred method or not +// YES for PC windows and linux +// NO for android +// YES on macos EXCEPT for macbookair with gpu intel iris or intel HD 6000 +bool Profiler::isRenderMethodDeferredCapable() { +#if defined(Q_OS_MAC) + auto computerInfo = platform::getComputer(); + if (computer.count(keys::computer::model)) { + const auto model = computer[keys::computer::model].get(); + if (model.find("MacBookAir") != std::string::npos) { + return false; + } + } + + +/* auto gpuInfo = platform::getGPU(0); + if (gpuInfo.count(keys::gpu::model)) { + const auto model = computer[keys::gpu::model].get(); + if (model.find("MacBookAir") != std::string::npos) { + } + } +*/ + return true; +#elif defined(Q_OS_ANDROID) + return false; +#else + return true; +#endif } \ No newline at end of file diff --git a/libraries/platform/src/platform/Profiler.h b/libraries/platform/src/platform/Profiler.h index fea0622c89..c47f2587f2 100644 --- a/libraries/platform/src/platform/Profiler.h +++ b/libraries/platform/src/platform/Profiler.h @@ -28,6 +28,9 @@ public: static const std::array TierNames; static Tier profilePlatform(); + + // Ugly very adhoc capability check to know if a particular hw can REnder with Deferred method or not + static bool isRenderMethodDeferredCapable(); }; } From 22803c70432c5c52ce804b60826b732e723f33ed Mon Sep 17 00:00:00 2001 From: Anna Date: Wed, 12 Jun 2019 17:14:40 -0700 Subject: [PATCH 085/106] testing --- BUILD.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD.md b/BUILD.md index bd264a74ad..c9bb48d4b7 100644 --- a/BUILD.md +++ b/BUILD.md @@ -106,3 +106,4 @@ The following build options can be used when running CMake #### Devices You can support external input/output devices such as Leap Motion, MIDI, and more by adding each individual SDK in the visible building path. Refer to the readme file available in each device folder in [interface/external/](interface/external) for the detailed explanation of the requirements to use the device. + \ No newline at end of file From 5004070af9ffdd0b18c9dd0bee58db4712515752 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 12 Jun 2019 17:14:44 -0700 Subject: [PATCH 086/106] Grab the name of the renderer no matter what --- libraries/shared/src/GPUIdent.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/shared/src/GPUIdent.cpp b/libraries/shared/src/GPUIdent.cpp index d5c2f3ec6c..f092a56c17 100644 --- a/libraries/shared/src/GPUIdent.cpp +++ b/libraries/shared/src/GPUIdent.cpp @@ -47,6 +47,7 @@ GPUIdent* GPUIdent::ensureQuery(const QString& vendor, const QString& renderer) GLint rendererInfoCount; CGLError err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &rendererInfoCount); GLint j, numRenderers = 0, deviceVRAM, bestVRAM = 0; + int bestGPUid = 0; err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &numRenderers); if (0 == err) { // Iterate over all of them and use the figure for the one with the most VRAM, @@ -55,6 +56,7 @@ GPUIdent* GPUIdent::ensureQuery(const QString& vendor, const QString& renderer) for (j = 0; j < numRenderers; j++) { CGLDescribeRenderer(rendererInfo, j, kCGLRPVideoMemoryMegabytes, &deviceVRAM); if (deviceVRAM > bestVRAM) { + bestGPUid = j; bestVRAM = deviceVRAM; _isValid = true; } @@ -78,6 +80,8 @@ GPUIdent* GPUIdent::ensureQuery(const QString& vendor, const QString& renderer) for (int i = 0; i < parts.size(); ++i) { if (parts[i].toLower().contains("radeon") || parts[i].toLower().contains("nvidia")) { _name=parts[i]; + } else if (i == bestGPUid) { + _name=parts[i]; } } From b132a42e899d9b9b7a65ab5aa93cfab0fa22b132 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 12 Jun 2019 22:42:05 -0700 Subject: [PATCH 087/106] fixing the scroll view --- scripts/developer/utilities/render/luci.qml | 3 ++- .../developer/utilities/render/performanceSetup.qml | 11 ++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/scripts/developer/utilities/render/luci.qml b/scripts/developer/utilities/render/luci.qml index 2dc8fda081..98fd3039d1 100644 --- a/scripts/developer/utilities/render/luci.qml +++ b/scripts/developer/utilities/render/luci.qml @@ -26,8 +26,9 @@ Rectangle { color: global.color ScrollView { - id: control + id: scrollView anchors.fill: parent + contentWidth: parent.width clip: true Column { diff --git a/scripts/developer/utilities/render/performanceSetup.qml b/scripts/developer/utilities/render/performanceSetup.qml index ab00d31f2b..4654736f72 100644 --- a/scripts/developer/utilities/render/performanceSetup.qml +++ b/scripts/developer/utilities/render/performanceSetup.qml @@ -24,9 +24,12 @@ Rectangle { color: global.colorBack ScrollView { + id: scrollView anchors.fill: parent + contentWidth: parent.width clip: true - Column { + + Column { anchors.left: parent.left anchors.right: parent.right @@ -35,8 +38,6 @@ Rectangle { isUnfold: true panelFrameData: Component { PerformanceSettings { - anchors.left: parent.left - anchors.right: parent.right } } } @@ -45,8 +46,6 @@ Rectangle { isUnfold: true panelFrameData: Component { RenderSettings { - anchors.left: parent.left - anchors.right: parent.right } } } @@ -54,8 +53,6 @@ Rectangle { label: "Platform" panelFrameData: Component { Platform { - anchors.left: parent.left - anchors.right: parent.right } } } From 43a119cbbcb4d72978eb84ed5b1febdf70a079bc Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 12 Jun 2019 23:15:53 -0700 Subject: [PATCH 088/106] just adding the correct include tobring th edefines --- libraries/platform/src/platform/Profiler.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/platform/src/platform/Profiler.cpp b/libraries/platform/src/platform/Profiler.cpp index 96c9feaa36..8d1ed40e30 100644 --- a/libraries/platform/src/platform/Profiler.cpp +++ b/libraries/platform/src/platform/Profiler.cpp @@ -12,6 +12,7 @@ #include "Platform.h" #include "PlatformKeys.h" +#include using namespace platform; @@ -132,7 +133,7 @@ bool filterOnProcessors(const platform::json& computer, const platform::json& cp // YES on macos EXCEPT for macbookair with gpu intel iris or intel HD 6000 bool Profiler::isRenderMethodDeferredCapable() { #if defined(Q_OS_MAC) - auto computerInfo = platform::getComputer(); + auto computer = platform::getComputer(); if (computer.count(keys::computer::model)) { const auto model = computer[keys::computer::model].get(); if (model.find("MacBookAir") != std::string::npos) { @@ -154,4 +155,4 @@ bool Profiler::isRenderMethodDeferredCapable() { #else return true; #endif -} \ No newline at end of file +} From 20b17291b41e4ff11943a502e2caff35f10bdca6 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Thu, 13 Jun 2019 09:05:55 -0700 Subject: [PATCH 089/106] Reset detailed motion states when the workload zone changes --- interface/src/avatar/AvatarManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index bb8b7ba7f4..efe3d59d90 100755 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -490,7 +490,7 @@ void AvatarManager::buildPhysicsTransaction(PhysicsEngine::Transaction& transact _myAvatar->getCharacterController()->buildPhysicsTransaction(transaction); for (auto avatar : _otherAvatarsToChangeInPhysics) { bool isInPhysics = avatar->isInPhysicsSimulation(); - if (isInPhysics != avatar->shouldBeInPhysicsSimulation()) { + if (isInPhysics != avatar->shouldBeInPhysicsSimulation() || avatar->_needsReinsertion) { if (isInPhysics) { transaction.objectsToRemove.push_back(avatar->_motionState); avatar->_motionState = nullptr; From 667af8575fc53ad54e46db56d038d00901858abf Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Thu, 13 Jun 2019 10:03:46 -0700 Subject: [PATCH 090/106] add bookmark arg and fixing focus --- launchers/darwin/src/Launcher.m | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/launchers/darwin/src/Launcher.m b/launchers/darwin/src/Launcher.m index f586269864..d60c4080a2 100644 --- a/launchers/darwin/src/Launcher.m +++ b/launchers/darwin/src/Launcher.m @@ -46,6 +46,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; } -(void)awakeFromNib { + [[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE]; [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(didTerminateApp:) name:NSWorkspaceDidTerminateApplicationNotification @@ -114,6 +115,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; userInfo:nil repeats:NO]; } + [[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE]; } - (void) setDownloadContextFilename:(NSString *)aFilename @@ -277,6 +279,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; -(void)onSplashScreenTimerFinished:(NSTimer *)timer { + [[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE]; [self showLoginScreen]; } @@ -336,6 +339,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; NSString* scriptsPath = [[self getAppPath] stringByAppendingString:@"interface.app/Contents/Resources/scripts/simplifiedUI/"]; NSString* domainUrl = [[Settings sharedSettings] getDomainUrl]; NSString* userToken = [[Launcher sharedLauncher] getTokenString]; + NSString* homeBookmark = [[NSString stringWithFormat:@"hqhome="] stringByAppendingString:domainUrl]; NSArray* arguments; if (userToken != nil) { arguments = [NSArray arrayWithObjects: @@ -344,6 +348,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; @"--cache", contentPath, @"--displayName", displayName, @"--scripts", scriptsPath, + @"--setBookmark", homeBookmark, @"--no-updater", @"--no-launcher", nil]; } else { @@ -351,6 +356,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE; @"--url" , domainUrl, @"--cache", contentPath, @"--scripts", scriptsPath, + @"--setBookmark", homeBookmark, @"--no-updater", @"--no-launcher", nil]; } From 2a1d5f6a07f064fa59988e9d8f5093bee27467b8 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Thu, 13 Jun 2019 10:05:34 -0700 Subject: [PATCH 091/106] add bookmark parameter --- launchers/win32/LauncherManager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/launchers/win32/LauncherManager.cpp b/launchers/win32/LauncherManager.cpp index 35903a0887..fc79287457 100644 --- a/launchers/win32/LauncherManager.cpp +++ b/launchers/win32/LauncherManager.cpp @@ -234,9 +234,10 @@ HWND LauncherManager::launchApplication() { CString parsedTokens = _tokensJSON; parsedTokens.Replace(_T("\""), _T("\\\"")); tokensParam = _T("--tokens \""); - tokensParam += parsedTokens + _T("\""); + tokensParam += parsedTokens + _T("\" "); } - CString params = urlParam + scriptsParam + cacheParam + nameParam + tokensParam + EXTRA_PARAMETERS; + CString bookmarkParam = _T("--setBookmark hqhome=\"") + _domainURL + ("\" "); + CString params = urlParam + scriptsParam + cacheParam + nameParam + tokensParam + bookmarkParam + EXTRA_PARAMETERS; _shouldLaunch = FALSE; return LauncherUtils::executeOnForeground(interfaceExe, params); } From d6f90c497f78dcbfe7020f03423828019c63c794 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 13 Jun 2019 10:16:57 -0700 Subject: [PATCH 092/106] FIlter on the gpu model name for ththe 2 known cases --- libraries/platform/src/platform/Profiler.cpp | 27 ++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/libraries/platform/src/platform/Profiler.cpp b/libraries/platform/src/platform/Profiler.cpp index 8d1ed40e30..0e8b9a65a8 100644 --- a/libraries/platform/src/platform/Profiler.cpp +++ b/libraries/platform/src/platform/Profiler.cpp @@ -134,21 +134,22 @@ bool filterOnProcessors(const platform::json& computer, const platform::json& cp bool Profiler::isRenderMethodDeferredCapable() { #if defined(Q_OS_MAC) auto computer = platform::getComputer(); - if (computer.count(keys::computer::model)) { - const auto model = computer[keys::computer::model].get(); - if (model.find("MacBookAir") != std::string::npos) { - return false; - } + const auto computerModel = (computer.count(keys::computer::model) ? computer[keys::computer::model].get() : ""); + + auto gpuInfo = platform::getGPU(0); + const auto gpuModel = (gpuInfo.count(keys::gpu::model) ? gpuInfo[keys::gpu::model].get() : ""); + + + // Macbook air 2018 are a problem + if ((computerModel.find("MacBookAir") != std::string::npos) && (gpuModel.find("Intel HD Graphics 6000") != std::string::npos)) { + return false; + } + + // We know for fact that the INtel Iris is problematic... + if ((gpuModel.find("Intel Iris") != std::string::npos)) { + return false; } - -/* auto gpuInfo = platform::getGPU(0); - if (gpuInfo.count(keys::gpu::model)) { - const auto model = computer[keys::gpu::model].get(); - if (model.find("MacBookAir") != std::string::npos) { - } - } -*/ return true; #elif defined(Q_OS_ANDROID) return false; From 4ccd7bd808897265d68d712d91782ae3ffb29ef8 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 13 Jun 2019 10:17:14 -0700 Subject: [PATCH 093/106] BUGZ-658: Don't let the user switch avatar models to Woody --- .../qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml index 85b3cf149f..6e86849d03 100644 --- a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml +++ b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml @@ -47,6 +47,11 @@ Rectangle { onSkeletonModelURLChanged: { root.updatePreviewUrl(); + + if (MyAvatar.skeletonModelURL.indexOf("defaultAvatar" > -1) && topBarInventoryModel.count > 0) { + Settings.setValue("simplifiedUI/alreadyAutoSelectedAvatar", true); + MyAvatar.skeletonModelURL = topBarInventoryModel.get(0).download_url; + } } } From 289e948d6b2c24fdbf817d2e5daadda1afa23ae3 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 13 Jun 2019 10:27:18 -0700 Subject: [PATCH 094/106] BUGZ-671: Make 'Your Profile' Home button go to bookmark 'hqhome' --- .../resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml b/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml index 957df6d584..ef9a3cbe24 100644 --- a/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml +++ b/interface/resources/qml/hifi/simplifiedUI/avatarApp/AvatarApp.qml @@ -122,7 +122,7 @@ Rectangle { Tablet.playSound(TabletEnums.ButtonClick); // Can't use `Window.location` in QML, so just use what setting `Window.location` actually calls under the hood: // AddressManager.handleLookupString(). - AddressManager.handleLookupString(LocationBookmarks.getHomeLocationAddress()); + AddressManager.handleLookupString(LocationBookmarks.getAddress("hqhome")); } } } From 97236570d8572dff514809fa55dcd8fb96e5fd75 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 13 Jun 2019 10:28:34 -0700 Subject: [PATCH 095/106] FIlter on the gpu model name for ththe 2 known cases --- libraries/platform/src/platform/Profiler.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/platform/src/platform/Profiler.cpp b/libraries/platform/src/platform/Profiler.cpp index 0e8b9a65a8..bd8efb9097 100644 --- a/libraries/platform/src/platform/Profiler.cpp +++ b/libraries/platform/src/platform/Profiler.cpp @@ -145,10 +145,10 @@ bool Profiler::isRenderMethodDeferredCapable() { return false; } - // We know for fact that the INtel Iris is problematic... - if ((gpuModel.find("Intel Iris") != std::string::npos)) { - return false; - } + // We know for fact that one INtel Iris is problematic, not enough info yet for sure + // if ((gpuModel.find("Intel Iris ....") != std::string::npos)) { + // return false; + //} return true; #elif defined(Q_OS_ANDROID) From b08bb93ff739c13636dab49c72db07cf886cbdfb Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 13 Jun 2019 10:53:55 -0700 Subject: [PATCH 096/106] add comment about why WebEntityRenderer::onRemoveFromSceneTyped() --- libraries/entities-renderer/src/RenderableWebEntityItem.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 3334a958f3..5b5fc08460 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -470,6 +470,8 @@ void WebEntityRenderer::handlePointerEventAsMouse(const PointerEvent& event) { } void WebEntityRenderer::onRemoveFromSceneTyped(const TypedEntityPointer& entity) { + // HACK: destroyWebSurface() here to avoid a crash on shutdown. + // TODO: fix the real problem: EntityRenderer<>::dtor never called on shutdown for smart-pointer resource leak. destroyWebSurface(); } From 7099b04911251af65bd01ef1bfaf76f3d4fc52aa Mon Sep 17 00:00:00 2001 From: Anna Date: Thu, 13 Jun 2019 12:21:41 -0700 Subject: [PATCH 097/106] appeasing jenkins --- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 975c067fbd..34cac90a05 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -686,7 +686,7 @@ void OffscreenQmlSurface::setKeyboardRaised(QObject* object, bool raised, bool n return; } - bool android; + bool android = false; #if defined(Q_OS_ANDROID) android = true; #endif From 1a0002db0cda0a4f2183dc7dbfd7973391c27c63 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 13 Jun 2019 13:06:40 -0700 Subject: [PATCH 098/106] BUGZ-676: Remove references to interstitial from SUI version of progress.js --- scripts/simplifiedUI/system/progress.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/scripts/simplifiedUI/system/progress.js b/scripts/simplifiedUI/system/progress.js index b373612790..a641dd4556 100644 --- a/scripts/simplifiedUI/system/progress.js +++ b/scripts/simplifiedUI/system/progress.js @@ -83,9 +83,7 @@ // The initial delay cooldown keeps us from tracking progress before the allotted time // has passed. INITIAL_DELAY_COOLDOWN_TIME = 1000, - initialDelayCooldown = 0, - - isInInterstitialMode = false; + initialDelayCooldown = 0; function fade() { @@ -267,7 +265,7 @@ // Update state if (!visible) { // Not visible because no recent downloads - if ((displayProgress < 100 || gpuTextures > 0) && !isInInterstitialMode && !isInterstitialOverlaysVisible) { // Have started downloading so fade in + if (displayProgress < 100 || gpuTextures > 0) { // Have started downloading so fade in visible = true; alphaDelta = ALPHA_DELTA_IN; fadeTimer = Script.setInterval(fade, FADE_INTERVAL); @@ -307,9 +305,6 @@ } else { x = x * BAR_HMD_REPEAT; } - if (isInInterstitialMode || isInterstitialOverlaysVisible) { - visible = false; - } // Update progress bar Overlays.editOverlay(barDesktop.overlay, { @@ -349,10 +344,6 @@ } } - function interstitialModeChanged(inMode) { - isInInterstitialMode = inMode; - } - function setUp() { var is4k = Window.innerWidth > 3000; @@ -378,7 +369,6 @@ } setUp(); - Window.interstitialModeChanged.connect(interstitialModeChanged); GlobalServices.downloadInfoChanged.connect(onDownloadInfoChanged); GlobalServices.updateDownloadInfo(); Script.setInterval(update, 1000 / 60); From db3c7b9194c3dbe416e0d1b311ab05ac228e2fa2 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 13 Jun 2019 13:57:18 -0700 Subject: [PATCH 099/106] rollback fixes for bugz512 --- .../src/EntityTreeRenderer.cpp | 28 ++++++------------- .../src/RenderableWebEntityItem.cpp | 22 ++++++--------- .../src/RenderableWebEntityItem.h | 1 - 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 8671b3da7e..1ecbcb0c8b 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -256,28 +256,18 @@ void EntityTreeRenderer::clear() { } // reset the engine + if (_wantScripts && !_shuttingDown) { + resetEntitiesScriptEngine(); + } + // remove all entities from the scene auto scene = _viewState->getMain3DScene(); - if (_shuttingDown) { - if (scene) { - render::Transaction transaction; - for (const auto& entry : _entitiesInScene) { - const auto& renderer = entry.second; - renderer->removeFromScene(scene, transaction); - } - scene->enqueueTransaction(transaction); + if (scene) { + for (const auto& entry : _entitiesInScene) { + const auto& renderer = entry.second; + fadeOutRenderable(renderer); } } else { - if (_wantScripts) { - resetEntitiesScriptEngine(); - } - if (scene) { - for (const auto& entry : _entitiesInScene) { - const auto& renderer = entry.second; - fadeOutRenderable(renderer); - } - } else { - qCWarning(entitiesrenderer) << "EntitityTreeRenderer::clear(), Unexpected null scene"; - } + qCWarning(entitiesrenderer) << "EntitityTreeRenderer::clear(), Unexpected null scene, possibly during application shutdown"; } _entitiesInScene.clear(); _renderablesToUpdate.clear(); diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 5b5fc08460..3b615ba467 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -7,7 +7,6 @@ // #include "RenderableWebEntityItem.h" -#include #include #include @@ -47,7 +46,7 @@ static uint64_t MAX_NO_RENDER_INTERVAL = 30 * USECS_PER_SECOND; static uint8_t YOUTUBE_MAX_FPS = 30; // Don't allow more than 20 concurrent web views -static std::atomic _currentWebCount(0); +static uint32_t _currentWebCount { 0 }; static const uint32_t MAX_CONCURRENT_WEB_VIEWS = 20; static QTouchDevice _touchDevice; @@ -357,15 +356,16 @@ void WebEntityRenderer::buildWebSurface(const EntityItemPointer& entity, const Q void WebEntityRenderer::destroyWebSurface() { QSharedPointer webSurface; + ContentType contentType = ContentType::NoContent; withWriteLock([&] { webSurface.swap(_webSurface); - _contentType = ContentType::NoContent; - - if (webSurface) { - --_currentWebCount; - WebEntityRenderer::releaseWebSurface(webSurface, _cachedWebSurface, _connections); - } + _contentType = contentType; }); + + if (webSurface) { + --_currentWebCount; + WebEntityRenderer::releaseWebSurface(webSurface, _cachedWebSurface, _connections); + } } glm::vec2 WebEntityRenderer::getWindowSize(const TypedEntityPointer& entity) const { @@ -469,12 +469,6 @@ void WebEntityRenderer::handlePointerEventAsMouse(const PointerEvent& event) { QCoreApplication::sendEvent(_webSurface->getWindow(), &mouseEvent); } -void WebEntityRenderer::onRemoveFromSceneTyped(const TypedEntityPointer& entity) { - // HACK: destroyWebSurface() here to avoid a crash on shutdown. - // TODO: fix the real problem: EntityRenderer<>::dtor never called on shutdown for smart-pointer resource leak. - destroyWebSurface(); -} - void WebEntityRenderer::setProxyWindow(QWindow* proxyWindow) { withReadLock([&] { if (_webSurface) { diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.h b/libraries/entities-renderer/src/RenderableWebEntityItem.h index 6cda1601c8..7118774d30 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.h +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.h @@ -64,7 +64,6 @@ protected: void handlePointerEventAsTouch(const PointerEvent& event); void handlePointerEventAsMouse(const PointerEvent& event); - void onRemoveFromSceneTyped(const TypedEntityPointer& entity) override; private: void onTimeout(); void buildWebSurface(const EntityItemPointer& entity, const QString& newSourceURL); From 8f9fa4a878bade89bca10b57e0a39e2f03a93308 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Thu, 13 Jun 2019 14:59:27 -0700 Subject: [PATCH 100/106] stop rebinding --- libraries/networking/src/NodeList.cpp | 17 +++++++++++------ libraries/networking/src/udt/Socket.cpp | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 86b33bbe20..182ef3b578 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -306,7 +306,8 @@ void NodeList::sendDomainServerCheckIn() { // may be called by multiple threads. if (!_sendDomainServerCheckInEnabled) { - qCDebug(networking_ice) << "Refusing to send a domain-server check in while it is disabled."; + static const QString DISABLED_CHECKIN_DEBUG{ "Refusing to send a domain-server check in while it is disabled." }; + HIFI_FCDEBUG(networking_ice(), DISABLED_CHECKIN_DEBUG); return; } @@ -450,13 +451,17 @@ void NodeList::sendDomainServerCheckIn() { // Send duplicate check-ins in the exponentially increasing sequence 1, 1, 2, 4, ... static const int MAX_CHECKINS_TOGETHER = 20; - static const int REBIND_CHECKIN_COUNT = 2; + static const int WARNING_CHECKIN_COUNT = 2; int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); + /* + if (outstandingCheckins > WARNING_CHECKIN_COUNT) { + // We may be headed for a disconnect, as we've written two DomainListRequests without getting anything back. + // In some cases, we've found that nothing is going out on the wire despite not getting any errors from + // sendPacket => writeDatagram, below. In at least some such cases, we've found that the DomainDisconnectRequest + // does go through, so let's at least try to mix it up with a different safe packet. + // TODO: send ICEPing, and later on tell the other nodes to shut up for a moment. - if (outstandingCheckins > REBIND_CHECKIN_COUNT) { - _nodeSocket.rebind(); - } - + }*/ int checkinCount = outstandingCheckins > 1 ? std::pow(2, outstandingCheckins - 2) : 1; checkinCount = std::min(checkinCount, MAX_CHECKINS_TOGETHER); for (int i = 1; i < checkinCount; ++i) { diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index fc6d2cbe2a..3a7a056c77 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -230,7 +230,7 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc // _udpSocket.writeDatagram will return an error anyway, but there are // potential crashes in Qt when that happens. if (_udpSocket.state() != QAbstractSocket::BoundState) { - qCDebug(networking) << "Attempt to writeDatagram when in unbound state"; + qCDebug(networking) << "Attempt to writeDatagram when in unbound state to" << sockAddr; return -1; } qint64 bytesWritten = _udpSocket.writeDatagram(datagram, sockAddr.getAddress(), sockAddr.getPort()); @@ -240,11 +240,11 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc #ifdef WIN32 wsaError = WSAGetLastError(); #endif - qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << ") error - " << wsaError << _udpSocket.error() << "(" << _udpSocket.errorString() << ")" + qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << sockAddr << ") error - " << wsaError << _udpSocket.error() << "(" << _udpSocket.errorString() << ")" << (pending ? "pending bytes:" : "pending:") << pending; #ifdef DEBUG_EVENT_QUEUE int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); - qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; + qCDebug(networking) << "Networking queue size - " << nodeListQueueSize << "writing datagram to" << sockAddr; #endif // DEBUG_EVENT_QUEUE } From 21796d4d2a6880b6166a85a2763325357dbb088b Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Thu, 13 Jun 2019 15:14:28 -0700 Subject: [PATCH 101/106] Update window launcher icon --- launchers/win32/res/interface.ico | Bin 31269 -> 26687 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/launchers/win32/res/interface.ico b/launchers/win32/res/interface.ico index cdd4792f56a07ebd77b3a684684609fa0e20f804..09a97956a72607b8d9883a531eed9d04414e0b53 100644 GIT binary patch literal 26687 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 literal 31269 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 LtDnm{r-UW|V;oZm From 431ff0d1de2ca0d2cf49fe6192ee5de779cd6b68 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 13 Jun 2019 15:35:08 -0700 Subject: [PATCH 102/106] fix drawcalls stat broken in pr-15721 --- interface/src/ui/Stats.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index 02ec62e6a5..b87e3a3dbc 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -262,7 +262,7 @@ class Stats : public QQuickItem { STATS_PROPERTY(int, processing, 0) STATS_PROPERTY(int, processingPending, 0) STATS_PROPERTY(int, triangles, 0) - STATS_PROPERTY(uint32_t, drawcalls, 0) + STATS_PROPERTY(quint32 , drawcalls, 0) STATS_PROPERTY(int, materialSwitches, 0) STATS_PROPERTY(int, itemConsidered, 0) STATS_PROPERTY(int, itemOutOfView, 0) From f87b166271c027f615feb141fec7018e1e578758 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 13 Jun 2019 15:37:44 -0700 Subject: [PATCH 103/106] Update mac launcher icon --- launchers/darwin/images/interface.icns | Bin 321423 -> 212135 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/launchers/darwin/images/interface.icns b/launchers/darwin/images/interface.icns index 4aeb8301ceefd372ffbd2975ade867a7294a0be6..8dadfd50376cb3f1fda6114dc2c4b4f8b218758e 100644 GIT binary patch literal 212135 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̓CD3`2WI*m)}f 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 z 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�N#U({jvxfB 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≪bQUpm%<@IufrNve<252{ET! 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 KisAozb^H&&ncL3* From 772bad58ca5cccb536255fc0bfc655cfe6d55799 Mon Sep 17 00:00:00 2001 From: RebeccaStankus Date: Thu, 13 Jun 2019 15:55:49 -0700 Subject: [PATCH 104/106] Increased bottom margin on muted overlay --- scripts/simplifiedUI/ui/simplifiedUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 16f081fb6b..70679b09bd 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -415,7 +415,7 @@ function getInputDeviceMutedOverlayTopY() { var inputDeviceMutedOverlay = false; var INPUT_DEVICE_MUTED_OVERLAY_DEFAULT_X_PX = 353; var INPUT_DEVICE_MUTED_OVERLAY_DEFAULT_Y_PX = 95; -var INPUT_DEVICE_MUTED_MARGIN_BOTTOM_PX = 20; +var INPUT_DEVICE_MUTED_MARGIN_BOTTOM_PX = 20 + TOP_BAR_HEIGHT_PX; function updateInputDeviceMutedOverlay(isMuted) { if (isMuted) { var props = { From 503fc18d708adb787d58b41c1269640f737bf42f Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 13 Jun 2019 16:08:29 -0700 Subject: [PATCH 105/106] Make this slightly more robust --- .../qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml index 6e86849d03..42d53d3f79 100644 --- a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml +++ b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml @@ -48,7 +48,8 @@ Rectangle { onSkeletonModelURLChanged: { root.updatePreviewUrl(); - if (MyAvatar.skeletonModelURL.indexOf("defaultAvatar" > -1) && topBarInventoryModel.count > 0) { + if ((MyAvatar.skeletonModelURL.indexOf("defaultAvatar") > -1 || MyAvatar.skeletonModelURL.indexOf("fst") === -1) && + topBarInventoryModel.count > 0) { Settings.setValue("simplifiedUI/alreadyAutoSelectedAvatar", true); MyAvatar.skeletonModelURL = topBarInventoryModel.get(0).download_url; } @@ -100,7 +101,8 @@ Rectangle { inventoryFullyReceived = true; // If we have an avatar in our inventory AND we haven't already auto-selected an avatar... - if (!Settings.getValue("simplifiedUI/alreadyAutoSelectedAvatar", false) && topBarInventoryModel.count > 0) { + if ((!Settings.getValue("simplifiedUI/alreadyAutoSelectedAvatar", false) || + MyAvatar.skeletonModelURL.indexOf("defaultAvatar") > -1 || MyAvatar.skeletonModelURL.indexOf("fst") === -1) && topBarInventoryModel.count > 0) { Settings.setValue("simplifiedUI/alreadyAutoSelectedAvatar", true); MyAvatar.skeletonModelURL = topBarInventoryModel.get(0).download_url; } From b69d850c8e58a96adfce0ddae440897c7bf52a58 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 13 Jun 2019 19:41:12 -0700 Subject: [PATCH 106/106] move constant to the comment that will use it --- libraries/networking/src/NodeList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 182ef3b578..be63956191 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -451,9 +451,9 @@ void NodeList::sendDomainServerCheckIn() { // Send duplicate check-ins in the exponentially increasing sequence 1, 1, 2, 4, ... static const int MAX_CHECKINS_TOGETHER = 20; - static const int WARNING_CHECKIN_COUNT = 2; int outstandingCheckins = _domainHandler.getCheckInPacketsSinceLastReply(); /* + static const int WARNING_CHECKIN_COUNT = 2; if (outstandingCheckins > WARNING_CHECKIN_COUNT) { // We may be headed for a disconnect, as we've written two DomainListRequests without getting anything back. // In some cases, we've found that nothing is going out on the wire despite not getting any errors from

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