diff options
author | Leyla Farazha <leyla@lindenlab.com> | 2009-10-28 17:09:13 -0700 |
---|---|---|
committer | Leyla Farazha <leyla@lindenlab.com> | 2009-10-28 17:09:13 -0700 |
commit | 9426de7e10fa7cfe84048ae7dd58a793e981ee33 (patch) | |
tree | 3f08086776a8175741f23071333b593992269c45 /indra/llplugin | |
parent | a0e766da94d786d306a86667a27728524ca6eedb (diff) | |
parent | 74e70f2f23901d524350252519beaef8ed6d42e5 (diff) |
merging...
Diffstat (limited to 'indra/llplugin')
-rw-r--r-- | indra/llplugin/llpluginclassmedia.cpp | 26 | ||||
-rw-r--r-- | indra/llplugin/llpluginclassmedia.h | 7 | ||||
-rw-r--r-- | indra/llplugin/llpluginprocessparent.cpp | 5 |
3 files changed, 34 insertions, 4 deletions
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index fc58b48a7b..26802bbd1c 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -112,6 +112,8 @@ void LLPluginClassMedia::reset() mLowPrioritySizeLimit = LOW_PRIORITY_TEXTURE_SIZE_DEFAULT; mAllowDownsample = false; mPadding = 0; + mLastMouseX = 0; + mLastMouseY = 0; mStatus = LLPluginClassMediaOwner::MEDIA_NONE; mSleepTime = 1.0f / 100.0f; mCanCut = false; @@ -412,8 +414,20 @@ std::string LLPluginClassMedia::translateModifiers(MASK modifiers) return result; } -void LLPluginClassMedia::mouseEvent(EMouseEventType type, int x, int y, MASK modifiers) +void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int y, MASK modifiers) { + if(type == MOUSE_EVENT_MOVE) + { + if((x == mLastMouseX) && (y == mLastMouseY)) + { + // Don't spam unnecessary mouse move events. + return; + } + + mLastMouseX = x; + mLastMouseY = y; + } + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "mouse_event"); std::string temp; switch(type) @@ -425,6 +439,8 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int x, int y, MASK mod } message.setValue("event", temp); + message.setValueS32("button", button); + message.setValueS32("x", x); // Incoming coordinates are OpenGL-style ((0,0) = lower left), so flip them here if the plugin has requested it. @@ -515,11 +531,12 @@ void LLPluginClassMedia::scrollEvent(int x, int y, MASK modifiers) sendMessage(message); } -bool LLPluginClassMedia::textInput(const std::string &text) +bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "text_event"); message.setValue("text", text); + message.setValue("modifiers", translateModifiers(modifiers)); sendMessage(message); @@ -1112,6 +1129,11 @@ void LLPluginClassMedia::setVolume(float volume) } } +float LLPluginClassMedia::getVolume() +{ + return mRequestedVolume; +} + void LLPluginClassMedia::initializeUrlHistory(const LLSD& url_history) { // Send URL history to plugin diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 697deec353..4f9763474e 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -101,7 +101,7 @@ public: MOUSE_EVENT_DOUBLE_CLICK }EMouseEventType; - void mouseEvent(EMouseEventType type, int x, int y, MASK modifiers); + void mouseEvent(EMouseEventType type, int button, int x, int y, MASK modifiers); typedef enum { @@ -115,7 +115,7 @@ public: void scrollEvent(int x, int y, MASK modifiers); // Text may be unicode (utf8 encoded) - bool textInput(const std::string &text); + bool textInput(const std::string &text, MASK modifiers); void loadURI(const std::string &uri); @@ -227,6 +227,7 @@ public: void seek(float time); void setLoop(bool loop); void setVolume(float volume); + float getVolume(); F64 getCurrentTime(void) const { return mCurrentTime; }; F64 getDuration(void) const { return mDuration; }; @@ -310,6 +311,8 @@ protected: std::string translateModifiers(MASK modifiers); std::string mCursorName; + int mLastMouseX; + int mLastMouseY; LLPluginClassMediaOwner::EMediaStatus mStatus; diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index f3b4c6bdc6..39f9438fb3 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -55,6 +55,11 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner) mBoundPort = 0; mState = STATE_UNINITIALIZED; mDisableTimeout = false; + + // initialize timer - heartbeat test (mHeartbeat.hasExpired()) + // can sometimes return true immediately otherwise and plugins + // fail immediately because it looks like + mHeartbeat.setTimerExpirySec(PLUGIN_LOCKED_UP_SECONDS); } LLPluginProcessParent::~LLPluginProcessParent() |