Commit Graph

18 Commits (06dfd985214afa017a6718b3b3a627bf27e46fa3)

Author SHA1 Message Date
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Richard Linden 70a872c4a2 EXP-700 WIP SLPlugin(s) takes high CPU%
clamp maximum framerate of slplugin to 100Hz
also added assert to catch cases where we're requesting infinite framerate
2011-08-09 16:00:56 -07:00
callum 7e6ce12a17 VWR-21275 FIX // *SOME* Windows systems fail to load the Qt plugins if the current working
Reviewed by Richard - http://codereview.lindenlab.com/6011001/
2011-02-08 15:37:12 -08:00
Oz Linden 06b0d72efa Change license from GPL to LGPL (version 2.1) 2010-08-13 07:24:57 -04:00
Monroe Linden dacc5afbf0 Architectural changes to LLPlugin message processing.
LLPluginProcessParent can now optionally use a separate thread for reading messages from plugin sockets.  If this is enabled, it will spawn a single thread and use apr_pollset_poll to wake up the thread when incoming data arrives instead of polling all the descriptors round-robin every frame.  This should be somewhat more efficient, and should also allow blocking requests from plugins to be serviced much more quickly (once we start using them).  This is currently disabled by default, until it's had a bit more focused testing on multiple platforms.

Hooked up the switch to use the message read thread to the PluginUseReadThread debug setting and an item in the Advanced menu in the viewer, and to a checkbox in the UI in llmediaplugintest.

Updated some debug logging in the plugin system to have appropriate tags and not log dire-looking warnings during normal operation.

LLPluginProcessParent now once again explicitly kills plugin processes (instead of just closing their sockets and waiting for them to exit).  The problem we were attempting to solve by not doing the kill (letting the webkit plugin write its cookie file on exit) has been solved another way.

LLPluginProcessParent::sendMessage() now attempts to write the outgoing message to the socket immediately instead of waiting for the next frame.  This should reduce the latency of sending plugin messages.

Added a separate fast timer for LLViewerMedia::updateMedia().
2010-04-27 17:25:01 -07:00
Monroe Linden 57a2a2beff Add a way for plugins to send a message and block waiting for the response
This requires some cooperation between the plugin and the host, and will only work for specific messages.

The way it works is as follows:
* the plugin sends a message containing the key "blocking_request" (with any value)
* this will cause the "send message" function to block (continuing to pull incoming messages off the network socket and queue them) until it receives a message from the host containing the key "blocking_response"
** NOTE: if the plugin sends a blocking_request that isn't set up to cause the host to send back a blocking_response, it will block forever
* the blocking_response message will be handed to the plugin's "receive message" function _immediately_ (before the "send message" function returns)
** this means that the plugin can extract response data for use by the the code that sent the message (but is still blocked inside the "send message" call)
** NOTE: this BREAKS the invariant stating that the plugin's "receive message" function will never be called recursively, and the plugin MUST be prepared to deal with this
* after the plugin finishes processing the blocking_response message, the "send message" function that was called with the blocking_request message will return to the plugin
* any queued messages will be delivered after the outer invocation of the plugin's "receive message" function returns (as normal)

Inside the viewer, the code can tell when a plugin is in this blocked state by calling LLPluginProcessParent::isBlocked().  LLPluginClassMedia uses this to avoid sending mouse-move and size-change messages to blocked plugins.
2010-04-23 15:50:22 -07:00
Monroe Linden ce242821dc Added an "init" message in LLPLUGIN_MESSAGE_CLASS_MEDIA, and made LLPluginClassMedia queue it up before initializing its LLPluginProcessParent.
Made all existing plugins send their texture_params message from this init message instead of the LLPLUGIN_MESSAGE_CLASS_BASE "init" message.  (This ensures that they won't start to receive 'size_change' messages until after the init has happened.)
Added "set_user_data_path" and "set_language_code" messages to LLPluginClassMedia.
Made webkit plugin deal with the new messages, when they're sent before it receives the media "init".
Removed the user_data_path and language_code arguments from the init function calls throughout the hierarchy.
Made LLViewerMediaImpl queue up the language code and user data path messages before initializing the media.

Reviewed by Callum at http://codereview.lindenlab.com/687006 .
2010-03-16 16:42:31 -07:00
Callum Prentice d5e685306c (for B5) Fix for EXT-5823 "Include language in user-agent string" (implemented via JavaScript - not in ua string)
(for B5) Fix for EXT-5314 "Inworld Browser blanks out at credit card entry"
Note: also includes an update to install.xml that points to a new version of LLQtWebKit that is required for these fixes
2010-03-12 14:34:25 -08:00
Tofu Linden 5206f0fe91 CID-53
Checker: FORWARD_NULL
Function: LLPluginProcessChild::idle()
File: /indra/llplugin/llpluginprocesschild.cpp
2010-02-10 18:23:12 +00:00
Tofu Linden 81bc33f042 CID-264
Checker: UNINIT_CTOR
Function: LLPluginProcessChild::LLPluginProcessChild()
File: /indra/llplugin/llpluginprocesschild.cpp
2010-02-03 20:48:10 +00:00
Tofu Linden fa886566b6 CID-184
Checker: RESOURCE_LEAK
Function: LLPluginProcessChild::receiveMessageRaw(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llplugin/llpluginprocesschild.cpp
2010-01-27 15:10:34 -08:00
Callum Prentice fb99db68a0 Fix for EXT-3781 "installer on Vista: error opening file for writing ."
Reviewed by MW
2010-01-07 11:38:36 -08:00
Tofu Linden 197de032e1 DEV-43948 viewer2 is writing session data into the 'read-only' installation tree (mostly media stuff)
propagate the parent app's OSUserAppDir (i.e. ~/.secondlife/) all the way down to plugins, if they need persistant user data/settings (like the webkit plugin needs a place to put its cache).
2009-12-09 12:57:10 -08:00
bea@american.lindenlab.com 199d42f274 doxygen: exclude licensing blurbs 2009-11-30 14:46:35 -08:00
Monroe Linden a58dd26b20 Tweaks to media priority calculation.
Enabled CPU limit setting by default (set to 100% of 1 CPU).

Lowered default limits on plugin priorities: 2 normal+, 4 low, 8 total.

Limit on total number of instances now only applies to inworld media -- media instances in the UI (such as the help browser and search) don't count toward the limit.  UI media will still bump inworld media down from normal/low priority, though.

Several improvements to plugin manager debug code in the nearby media list.

Don't load unloaded instances that are at PRIORITY_SLIDESHOW or PRIORITY_HIDDEN (they don't get unloaded, they just won't be loaded unless they're at higher priority).

Added LLViewerMediaImpl::isPlayable(), which indicates whether an instance would be loaded if it were high enough in the priority list (taking into account autoplay and current load state).  Priority algorithm now takes this into account.

Fixed a couple of issues with approximate texture interest calculation and its use in setting priorities.

Adjusted sleep times on low and normal priorities to be more friendly.
2009-11-13 18:15:35 -08:00
Monroe Williams cf9239cabc svn merge -r 134922:134973 svn+ssh://svn.lindenlab.com/svn/linden/branches/media-on-a-prim/moap-7
Merging branches/media-on-a-prim/moap-7 down to viewer-2.0.
2009-10-01 02:35:53 +00:00
Adam Moss efd7e582bd DEV-40396 Error building pluginapi code on Linux 64bit standalone gcc 4.3.3.
rewritten the plugin address-splitting to make compilers grumble less and probably more readable.
code by merov, reviewed by moss.
2009-09-28 19:43:16 +00:00
Monroe Williams 745845f799 svn merge -r 129841:129910 svn+ssh://svn.lindenlab.com/svn/linden/branches/moss/pluginapi_05-merge@129910
svn merge -r 129913:131718 svn+ssh://svn.lindenlab.com/svn/linden/branches/pluginapi/pluginapi_05

Some branch shenannigans in the pluginapi_05 branch caused this to become a two-part merge.
2009-08-27 19:00:18 +00:00