Check plugin activation success

This commit is contained in:
Zach Pomerantz 2016-03-28 12:05:58 -07:00
parent 776893a5ab
commit 931cad34d1
23 changed files with 66 additions and 39 deletions

View file

@ -19,9 +19,7 @@ const QString Basic2DWindowOpenGLDisplayPlugin::NAME("Desktop");
static const QString FULLSCREEN = "Fullscreen"; static const QString FULLSCREEN = "Fullscreen";
void Basic2DWindowOpenGLDisplayPlugin::internalActivate() { bool Basic2DWindowOpenGLDisplayPlugin::internalActivate() {
Parent::internalActivate();
_framerateActions.clear(); _framerateActions.clear();
_container->addMenuItem(PluginType::DISPLAY_PLUGIN, MENU_PATH(), FULLSCREEN, _container->addMenuItem(PluginType::DISPLAY_PLUGIN, MENU_PATH(), FULLSCREEN,
[this](bool clicked) { [this](bool clicked) {
@ -33,6 +31,8 @@ void Basic2DWindowOpenGLDisplayPlugin::internalActivate() {
}, true, false); }, true, false);
updateFramerate(); updateFramerate();
return Parent::internalActivate();
} }
void Basic2DWindowOpenGLDisplayPlugin::submitSceneTexture(uint32_t frameIndex, const gpu::TexturePointer& sceneTexture) { void Basic2DWindowOpenGLDisplayPlugin::submitSceneTexture(uint32_t frameIndex, const gpu::TexturePointer& sceneTexture) {

View file

@ -22,7 +22,7 @@ public:
virtual float getTargetFrameRate() override { return _framerateTarget ? (float) _framerateTarget : TARGET_FRAMERATE_Basic2DWindowOpenGL; } virtual float getTargetFrameRate() override { return _framerateTarget ? (float) _framerateTarget : TARGET_FRAMERATE_Basic2DWindowOpenGL; }
virtual void internalActivate() override; virtual bool internalActivate() override;
virtual void submitSceneTexture(uint32_t frameIndex, const gpu::TexturePointer& sceneTexture) override; virtual void submitSceneTexture(uint32_t frameIndex, const gpu::TexturePointer& sceneTexture) override;

View file

@ -219,7 +219,7 @@ void OpenGLDisplayPlugin::cleanupForSceneTexture(const gpu::TexturePointer& scen
} }
void OpenGLDisplayPlugin::activate() { bool OpenGLDisplayPlugin::activate() {
if (!_cursorsData.size()) { if (!_cursorsData.size()) {
auto& cursorManager = Cursor::Manager::instance(); auto& cursorManager = Cursor::Manager::instance();
for (const auto iconId : cursorManager.registeredIcons()) { for (const auto iconId : cursorManager.registeredIcons()) {
@ -238,7 +238,9 @@ void OpenGLDisplayPlugin::activate() {
// Child classes may override this in order to do things like initialize // Child classes may override this in order to do things like initialize
// libraries, etc // libraries, etc
internalActivate(); if (!internalActivate()) {
return false;
}
#if THREADED_PRESENT #if THREADED_PRESENT
@ -263,7 +265,8 @@ void OpenGLDisplayPlugin::activate() {
customizeContext(); customizeContext();
_container->makeRenderingContextCurrent(); _container->makeRenderingContextCurrent();
#endif #endif
DisplayPlugin::activate();
return DisplayPlugin::activate();
} }
void OpenGLDisplayPlugin::deactivate() { void OpenGLDisplayPlugin::deactivate() {

View file

@ -32,7 +32,7 @@ public:
// These must be final to ensure proper ordering of operations // These must be final to ensure proper ordering of operations
// between the main thread and the presentation thread // between the main thread and the presentation thread
void activate() override final; bool activate() override final;
void deactivate() override final; void deactivate() override final;
bool eventFilter(QObject* receiver, QEvent* event) override; bool eventFilter(QObject* receiver, QEvent* event) override;
@ -77,7 +77,8 @@ protected:
virtual void customizeContext(); virtual void customizeContext();
virtual void uncustomizeContext(); virtual void uncustomizeContext();
virtual void internalActivate() {} // Returns true on successful activation
virtual bool internalActivate() { return true; }
virtual void internalDeactivate() {} virtual void internalDeactivate() {}
virtual void cleanupForSceneTexture(const gpu::TexturePointer& sceneTexture); virtual void cleanupForSceneTexture(const gpu::TexturePointer& sceneTexture);
// Plugin specific functionality to send the composed scene to the output window or device // Plugin specific functionality to send the composed scene to the output window or device

View file

@ -32,7 +32,7 @@ glm::uvec2 HmdDisplayPlugin::getRecommendedUiSize() const {
return CompositorHelper::VIRTUAL_SCREEN_SIZE; return CompositorHelper::VIRTUAL_SCREEN_SIZE;
} }
void HmdDisplayPlugin::internalActivate() { bool HmdDisplayPlugin::internalActivate() {
_monoPreview = _container->getBoolSetting("monoPreview", DEFAULT_MONO_VIEW); _monoPreview = _container->getBoolSetting("monoPreview", DEFAULT_MONO_VIEW);
_container->addMenuItem(PluginType::DISPLAY_PLUGIN, MENU_PATH(), MONO_PREVIEW, _container->addMenuItem(PluginType::DISPLAY_PLUGIN, MENU_PATH(), MONO_PREVIEW,
@ -41,7 +41,8 @@ void HmdDisplayPlugin::internalActivate() {
_container->setBoolSetting("monoPreview", _monoPreview); _container->setBoolSetting("monoPreview", _monoPreview);
}, true, _monoPreview); }, true, _monoPreview);
_container->removeMenu(FRAMERATE); _container->removeMenu(FRAMERATE);
Parent::internalActivate();
return Parent::internalActivate();
} }
void HmdDisplayPlugin::customizeContext() { void HmdDisplayPlugin::customizeContext() {

View file

@ -33,7 +33,7 @@ protected:
virtual bool isHmdMounted() const = 0; virtual bool isHmdMounted() const = 0;
virtual void postPreview() {}; virtual void postPreview() {};
void internalActivate() override; bool internalActivate() override;
void compositeOverlay() override; void compositeOverlay() override;
void compositePointer() override; void compositePointer() override;
void internalPresent() override; void internalPresent() override;

View file

@ -58,7 +58,7 @@ glm::mat4 StereoDisplayPlugin::getEyeProjection(Eye eye, const glm::mat4& basePr
static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate"; static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate";
std::vector<QAction*> _screenActions; std::vector<QAction*> _screenActions;
void StereoDisplayPlugin::internalActivate() { bool StereoDisplayPlugin::internalActivate() {
auto screens = qApp->screens(); auto screens = qApp->screens();
_screenActions.resize(screens.size()); _screenActions.resize(screens.size());
for (int i = 0; i < screens.size(); ++i) { for (int i = 0; i < screens.size(); ++i) {
@ -77,7 +77,8 @@ void StereoDisplayPlugin::internalActivate() {
_screen = qApp->primaryScreen(); _screen = qApp->primaryScreen();
_container->setFullscreen(_screen); _container->setFullscreen(_screen);
Parent::internalActivate();
return Parent::internalActivate();
} }
void StereoDisplayPlugin::updateScreen() { void StereoDisplayPlugin::updateScreen() {

View file

@ -29,7 +29,7 @@ public:
// virtual glm::mat4 getEyeToHeadTransform(Eye eye) const override; // virtual glm::mat4 getEyeToHeadTransform(Eye eye) const override;
protected: protected:
virtual void internalActivate() override; virtual bool internalActivate() override;
virtual void internalDeactivate() override; virtual void internalDeactivate() override;
void updateScreen(); void updateScreen();

View file

@ -4,11 +4,11 @@
#include "PluginContainer.h" #include "PluginContainer.h"
void DisplayPlugin::activate() { bool DisplayPlugin::activate() {
Parent::activate();
if (isHmd() && (getHmdScreen() >= 0)) { if (isHmd() && (getHmdScreen() >= 0)) {
_container->showDisplayPluginsTools(); _container->showDisplayPluginsTools();
} }
return Parent::activate();
} }
void DisplayPlugin::deactivate() { void DisplayPlugin::deactivate() {

View file

@ -59,7 +59,7 @@ class DisplayPlugin : public Plugin {
Q_OBJECT Q_OBJECT
using Parent = Plugin; using Parent = Plugin;
public: public:
void activate() override; bool activate() override;
void deactivate() override; void deactivate() override;
virtual bool isHmd() const { return false; } virtual bool isHmd() const { return false; }
virtual int getHmdScreen() const { return -1; } virtual int getHmdScreen() const { return -1; }

View file

@ -38,8 +38,10 @@ public:
virtual void deinit(); virtual void deinit();
/// Called when a plugin is being activated for use. May be called multiple times. /// Called when a plugin is being activated for use. May be called multiple times.
virtual void activate() { /// Returns true if plugin was successfully activated.
virtual bool activate() {
_active = true; _active = true;
return _active;
} }
/// Called when a plugin is no longer being used. May be called multiple times. /// Called when a plugin is no longer being used. May be called multiple times.

View file

@ -451,10 +451,10 @@ bool NeuronPlugin::isSupported() const {
#endif #endif
} }
void NeuronPlugin::activate() { bool NeuronPlugin::activate() {
#ifdef HAVE_NEURON
InputPlugin::activate(); InputPlugin::activate();
#ifdef HAVE_NEURON
// register with userInputMapper // register with userInputMapper
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>(); auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
userInputMapper->registerDevice(_inputDevice); userInputMapper->registerDevice(_inputDevice);
@ -473,11 +473,15 @@ void NeuronPlugin::activate() {
if (!_socketRef) { if (!_socketRef) {
// error // error
qCCritical(inputplugins) << "NeuronPlugin: error connecting to " << _serverAddress.c_str() << ":" << _serverPort << ", error = " << BRGetLastErrorMessage(); qCCritical(inputplugins) << "NeuronPlugin: error connecting to " << _serverAddress.c_str() << ":" << _serverPort << ", error = " << BRGetLastErrorMessage();
return false;
} else { } else {
qCDebug(inputplugins) << "NeuronPlugin: success connecting to " << _serverAddress.c_str() << ":" << _serverPort; qCDebug(inputplugins) << "NeuronPlugin: success connecting to " << _serverAddress.c_str() << ":" << _serverPort;
BRRegisterAutoSyncParmeter(_socketRef, Cmd_CombinationMode); BRRegisterAutoSyncParmeter(_socketRef, Cmd_CombinationMode);
return true;
} }
#else
return false;
#endif #endif
} }

View file

@ -31,7 +31,7 @@ public:
virtual const QString& getName() const override { return NAME; } virtual const QString& getName() const override { return NAME; }
const QString& getID() const override { return NEURON_ID_STRING; } const QString& getID() const override { return NEURON_ID_STRING; }
virtual void activate() override; virtual bool activate() override;
virtual void deactivate() override; virtual void deactivate() override;
virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }

View file

@ -99,15 +99,19 @@ void SDL2Manager::deinit() {
#endif #endif
} }
void SDL2Manager::activate() { bool SDL2Manager::activate() {
InputPlugin::activate();
#ifdef HAVE_SDL2 #ifdef HAVE_SDL2
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>(); auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
for (auto joystick : _openJoysticks) { for (auto joystick : _openJoysticks) {
userInputMapper->registerDevice(joystick); userInputMapper->registerDevice(joystick);
emit joystickAdded(joystick.get()); emit joystickAdded(joystick.get());
} }
return true;
#else
return false;
#endif #endif
InputPlugin::activate();
} }
void SDL2Manager::deactivate() { void SDL2Manager::deactivate() {

View file

@ -34,9 +34,7 @@ public:
virtual void init() override; virtual void init() override;
virtual void deinit() override; virtual void deinit() override;
/// Called when a plugin is being activated for use. May be called multiple times. virtual bool activate() override;
virtual void activate() override;
/// Called when a plugin is no longer being used. May be called multiple times.
virtual void deactivate() override; virtual void deactivate() override;
virtual void pluginFocusOutEvent() override; virtual void pluginFocusOutEvent() override;

View file

@ -79,7 +79,7 @@ bool SixenseManager::isSupported() const {
#endif #endif
} }
void SixenseManager::activate() { bool SixenseManager::activate() {
InputPlugin::activate(); InputPlugin::activate();
#ifdef HAVE_SIXENSE #ifdef HAVE_SIXENSE
@ -101,6 +101,9 @@ void SixenseManager::activate() {
loadSettings(); loadSettings();
_sixenseLoaded = (sixenseInit() == SIXENSE_SUCCESS); _sixenseLoaded = (sixenseInit() == SIXENSE_SUCCESS);
return _sixenseLoaded;
#else
return false;
#endif #endif
} }

View file

@ -32,7 +32,7 @@ public:
virtual const QString& getName() const override { return NAME; } virtual const QString& getName() const override { return NAME; }
virtual const QString& getID() const override { return HYDRA_ID_STRING; } virtual const QString& getID() const override { return HYDRA_ID_STRING; }
virtual void activate() override; virtual bool activate() override;
virtual void deactivate() override; virtual void deactivate() override;
virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }

View file

@ -34,8 +34,11 @@ void OculusBaseDisplayPlugin::customizeContext() {
Parent::customizeContext(); Parent::customizeContext();
} }
void OculusBaseDisplayPlugin::internalActivate() { bool OculusBaseDisplayPlugin::internalActivate() {
_session = acquireOculusSession(); _session = acquireOculusSession();
if (!_session) {
return false;
}
_hmdDesc = ovr_GetHmdDesc(_session); _hmdDesc = ovr_GetHmdDesc(_session);
@ -81,7 +84,7 @@ void OculusBaseDisplayPlugin::internalActivate() {
// This must come after the initialization, so that the values calculated // This must come after the initialization, so that the values calculated
// above are available during the customizeContext call (when not running // above are available during the customizeContext call (when not running
// in threaded present mode) // in threaded present mode)
Parent::internalActivate(); return Parent::internalActivate();
} }
void OculusBaseDisplayPlugin::internalDeactivate() { void OculusBaseDisplayPlugin::internalDeactivate() {

View file

@ -24,7 +24,7 @@ public:
protected: protected:
void customizeContext() override; void customizeContext() override;
void internalActivate() override; bool internalActivate() override;
void internalDeactivate() override; void internalDeactivate() override;
protected: protected:

View file

@ -41,14 +41,18 @@ bool OpenVrDisplayPlugin::isSupported() const {
return !isOculusPresent() && vr::VR_IsHmdPresent(); return !isOculusPresent() && vr::VR_IsHmdPresent();
} }
void OpenVrDisplayPlugin::internalActivate() { bool OpenVrDisplayPlugin::internalActivate() {
Parent::internalActivate(); Parent::internalActivate();
_container->setIsOptionChecked(StandingHMDSensorMode, true); _container->setIsOptionChecked(StandingHMDSensorMode, true);
if (!_system) { if (!_system) {
_system = acquireOpenVrSystem(); _system = acquireOpenVrSystem();
} }
Q_ASSERT(_system); if (!_system) {
qWarning() << "Failed to initialize OpenVR";
return false;
}
_system->GetRecommendedRenderTargetSize(&_renderTargetSize.x, &_renderTargetSize.y); _system->GetRecommendedRenderTargetSize(&_renderTargetSize.x, &_renderTargetSize.y);
// Recommended render target size is per-eye, so double the X size for // Recommended render target size is per-eye, so double the X size for
@ -86,6 +90,8 @@ void OpenVrDisplayPlugin::internalActivate() {
} else { } else {
qDebug() << "OpenVR: error could not get chaperone pointer"; qDebug() << "OpenVR: error could not get chaperone pointer";
} }
return true;
} }
void OpenVrDisplayPlugin::internalDeactivate() { void OpenVrDisplayPlugin::internalDeactivate() {

View file

@ -30,7 +30,7 @@ public:
virtual void updateHeadPose(uint32_t frameIndex) override; virtual void updateHeadPose(uint32_t frameIndex) override;
protected: protected:
void internalActivate() override; bool internalActivate() override;
void internalDeactivate() override; void internalDeactivate() override;
void hmdPresent() override; void hmdPresent() override;

View file

@ -53,8 +53,9 @@ bool ViveControllerManager::isSupported() const {
return !isOculusPresent() && vr::VR_IsHmdPresent(); return !isOculusPresent() && vr::VR_IsHmdPresent();
} }
void ViveControllerManager::activate() { bool ViveControllerManager::activate() {
InputPlugin::activate(); InputPlugin::activate();
_container->addMenu(MENU_PATH); _container->addMenu(MENU_PATH);
_container->addMenuItem(PluginType::INPUT_PLUGIN, MENU_PATH, RENDER_CONTROLLERS, _container->addMenuItem(PluginType::INPUT_PLUGIN, MENU_PATH, RENDER_CONTROLLERS,
[this] (bool clicked) { this->setRenderControllers(clicked); }, [this] (bool clicked) { this->setRenderControllers(clicked); },
@ -122,6 +123,8 @@ void ViveControllerManager::activate() {
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>(); auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
userInputMapper->registerDevice(_inputDevice); userInputMapper->registerDevice(_inputDevice);
_registeredWithInputMapper = true; _registeredWithInputMapper = true;
return true;
} }
void ViveControllerManager::deactivate() { void ViveControllerManager::deactivate() {

View file

@ -37,7 +37,7 @@ public:
virtual bool isJointController() const override { return true; } virtual bool isJointController() const override { return true; }
const QString& getName() const override { return NAME; } const QString& getName() const override { return NAME; }
virtual void activate() override; virtual bool activate() override;
virtual void deactivate() override; virtual void deactivate() override;
virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }
@ -111,8 +111,6 @@ private:
std::shared_ptr<InputDevice> _inputDevice { std::make_shared<InputDevice>(_system) }; std::shared_ptr<InputDevice> _inputDevice { std::make_shared<InputDevice>(_system) };
static const QString NAME; static const QString NAME;
}; };
#endif // hifi__ViveControllerManager #endif // hifi__ViveControllerManager