summaryrefslogtreecommitdiff
path: root/indra/llplugin
AgeCommit message (Collapse)Author
2011-02-05Introduces a LLThreadLocalData class that can beAleric Inglewood
accessed through the static LLThread::tldata(). Currently this object contains two (public) thread-local objects: a LLAPRRootPool and a LLVolatileAPRPool. The first is the general memory pool used by this thread (and this thread alone), while the second is intended for short lived memory allocations (needed for APR). The advantages of not mixing those two is that the latter is used most frequently, and as a result of it's nature can be destroyed and reconstructed on a "regular" basis. This patch adds LLAPRPool (completely replacing the old one), which is a wrapper around apr_pool_t* and has complete thread-safity checking. Whenever an apr call requires memory for some resource, a memory pool in the form of an LLAPRPool object can be created with the same life-time as this resource; assuring clean up of the memory no sooner, but also not much later than the life-time of the resource that needs the memory. Many, many function calls and constructors had the pool parameter simply removed (it is no longer the concern of the developer, if you don't write code that actually does an libapr call then you are no longer bothered with memory pools at all). However, I kept the notion of short-lived and long-lived allocations alive (see my remark in the jira here: https://jira.secondlife.com/browse/STORM-864?focusedCommentId=235356&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-235356 which requires that the LLAPRFile API needs to allow the user to specify how long they think a file will stay open. By choosing 'short_lived' as default for the constructor that immediately opens a file, the number of instances where this needs to be specified is drastically reduced however (obviously, any automatic LLAPRFile is short lived). *** Addressed Boroondas remarks in https://codereview.secondlife.com/r/99/ regarding (doxygen) comments. This patch effectively only changes comments. Includes some 'merge' stuff that ended up in llvocache.cpp (while starting as a bug fix, now only resulting in a cleanup). *** Added comment 'The use of apr_pool_t is OK here'. Added this comment on every line where apr_pool_t is correctly being used. This should make it easier to spot (future) errors where someone started to use apr_pool_t; you can just grep all sources for 'apr_pool_t' and immediately see where it's being used while LLAPRPool should have been used. Note that merging this patch is very easy: If there are no other uses of apr_pool_t in the code (one grep) and it compiles, then it will work. *** Second Merge (needed to remove 'delete mCreationMutex' from LLImageDecodeThread::~LLImageDecodeThread). *** Added back #include <apr_pools.h>. Apparently that is needed on libapr version 1.2.8., the version used by Linden Lab, for calls to apr_queue_*. This is a bug in libapr (we also include <apr_queue.h>, that is fixed in (at least) 1.3.7. Note that 1.2.8 is VERY old. Even 1.3.x is old. *** License fixes (GPL -> LGPL). And typo in comments. Addresses merov's comments on the review board. *** Added Merov's compile fixes for windows.
2010-12-29Automated merge up from viewer-developmentLoren Shih
2010-12-23Automated merge with ssh://bitbucket.org/aleric/viewer-development-aleric-exportOz Linden
2010-12-21SOCIAL-374 FIX Avatar images not loading on join.secondlife.com in Webkit 4.7Monroe Linden
Reviewed by Callum
2010-12-20SOCIAL-399 FIX Viewer crash when canceling http auth on a media primMonroe Linden
Reviewed by Callum at http://codereview.lindenlab.com/5636001
2010-12-15VWR-24252: On standalone, find Qt4 with find_package, and find llqtwebkit.Aleric Inglewood
If Qt and/or llqtwebkit is found in a non-standard place, you still have to set LD_LIBRARY_PATH yourself (to $QTDIR/lib) before running the viewer of course (or the webkit plugin will silently fail).
2010-12-02SOCIAL-311 FIX Media browser has too many oddities to be useful for viewer ↵callum
web apps Completes MVP
2010-12-01OCIAL-231 FIX Enable tooltips (for links and images)Monroe Linden
Added the necessary plumbing to get link_hovered events from the webkit plugin through to the viewer UI. This requires a llqtwebkit library built from revision 1799a899e06d or later in http://hg.secondlife.com/llqtwebkit to function. The viewer source changes are backwards-compatible with earlier versions of llqtwebkit, it just won't see any link_hovered events with previous revisions. Reviewed by Callum.
2010-12-01SOCIAL-249 FIX pressing any of the Alt keys and 0-9 will output the number ↵Monroe Linden
and symbol instead of just symbol The issue seems to be Mac-only, so I've put the fix inside #if LL_DARWIN. Windows' handling of ALT is very different, so the fix might not be appropriate there.
2010-11-30SOCIAL-299 FIX Add *.lindenlab.com to trusted certificate authorities in WebKitcallum
Reviewed by CB
2010-11-17SOCIAL-233 WIP Better performance (improve loading time of webkit instance)Monroe Linden
The plugin system will now keep a spare running webkit plugin process around and use it when it needs a webkit instance. This should hide some large portion of the setup time when creating a new webkit plugin (i.e. opening the search window, etc.)
2010-11-16SOCIAL-266 WIP HTTP AUTH dialogs no longer work in LLQtWebKit 4.7.1Monroe Linden
Added support to the webkit media plugin and llpluginclassmedia for passing through the auth request/response. We still need an updated build of llqtwebkit for all platforms, as well as some UI work in the viewer to actually display the auth dialog.
2010-11-05EXP-378 FIX Disable SSL cert errors in LLQtWebkit for testing purposescallum
(Monroe's code - I made a patch and copied it over from viewer-skylight branch)
2010-10-20Automated merge up from viewer-developmentLoren Shih
2010-10-13correct licenses (fix problem with license change merge)Oz Linden
2010-10-12merge fixes for VWR-23296Oz Linden
2010-10-08Merge fixes for VWR-23047, VWR-20911, and SNOW-748Oz Linden
2010-10-04merged SNOW-651: Added missing "if (LL_TESTS)" in ↵Boroondas Gupte
indra/llplugin/slplugin/CMakeLists.txt
2010-10-04SNOW-651: Added missing "if (LL_TESTS)"Boroondas Gupte (original fix by Techwolf Lupindo)
Daggified version of http://svn.secondlife.com/trac/linden/changeset/3523 (or of the SNOW-651 part of https://bitbucket.org/Techwolf/viewer-development/changeset/5697874b390b )
2010-09-30Put some errant tests under if (LL_TESTS) conditional.Dave Parks
2010-09-27mergeDave Parks
2010-09-27STORM-253 FIXED FrontWindow() API is deprecatedAimee Linden
2010-09-21Fix for build failures - disabling tcmalloc for nowBrad Payne (Vir Linden)
2010-09-16Merged VWR-23047 (SNOW-512, -fPIC for 64bit) and follow-ups (VWR-20911 & ↵Boroondas Gupte
SNOW-748)
2010-08-31SNOW-748 FIXED Building on OSX 10.6 fails with "warning: -mdynamic-no-pic ↵Boroondas Gupte (original patches by Aimee Linden)
overrides - fpic or -fPIC" Originally commited at http://svn.secondlife.com/trac/linden/changeset/3499/projects/2010/snowglobe and http://svn.secondlife.com/trac/linden/changeset/3501 SVN changeset 3499 partially applied with --ignore-whitespace: Hunk #1 FAILED at 259. Hunk #2 FAILED at 265. 2 out of 2 hunks FAILED -- saving rejects to file indra/llcommon/CMakeLists.txt.rej patching file indra/media_plugins/webkit/CMakeLists.txt Hunk #1 succeeded at 33 with fuzz 1 (offset -8 lines). patching file indra/media_plugins/base/CMakeLists.txt patching file indra/media_plugins/gstreamer010/CMakeLists.txt patching file indra/media_plugins/example/CMakeLists.txt patching file indra/llplugin/CMakeLists.txt Manually applied to indra/llcommon/CMakeLists.txt (straight forward). SVN changeset 3501 applied with fuzz 1: patching file indra/media_plugins/webkit/CMakeLists.txt Hunk #1 succeeded at 33 with fuzz 1 (offset -8 lines). Hunk #2 succeeded at 39 with fuzz 1 (offset -8 lines). No further changes other than that.
2010-09-16SNOW-512/SNOW-287: Build of LLPlugin fails on 64bit linux due to non PIC ↵Boroondas Gupte (daggyfied changeset by Techwolf Lupindo, original fix by Robin Cornelius)
code linking into the DSO Formatting, cleanup, and one minor change by Techwolf Lupindo. Minor change was a move of the hunk in indra/media_plugins/webkit/CmakeLists.txt to same area as the other plugins CmakeLists.txt files. daggyfied version of https://bitbucket.org/Techwolf/viewer-development/changeset/00bd21962052
2010-09-16mergeRichard Linden
2010-09-15Enable web popups to specify size and position of the Media Browser window ↵Monroe Linden
from javascript. This includes a Mac build of llqtwebkit from the following sources: revision aacdf69cbf5aa12d77c179296e31ef643ed1ef4a of http://qt.gitorious.org/+lindenqt/qt/lindenqt (currently head of the 'lindenqt' branch) revision 81ab5ae326f0 of http://hg.secondlife.com/llqtwebkit (currently head of the default branch) Reviewed by Callum.
2010-09-13EXP-56 - viewer side of support for file picker dialog requirement.callum
2010-09-10Added support for a media plugin message that asks the viewer to open a file ↵Monroe Linden
picker on the plugin's behalf. Reviewed by Callum.
2010-08-27Post-convert merge by convert_monolith.py from ./viewer-experienceMonroe Linden
2010-08-24fixing test names for reporting purposes - removing ' test'. also, updated ↵Aaron Terrell (Enus)
docs to remove that naming schema
2010-08-18VWR-20770 (SNOW-649) FIXED Missing LL_TESTS condition around llplugin unit testAimee Linden
2010-08-17Viewer side changes to support javascript window.close handling.Monroe Linden
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2010-07-14mergeDave Parks
2010-06-25Fix for EXT-8089 (Log spam from SLPlugin about "autoreleased with no pool in ↵Monroe Linden
place - just leaking") Added slplugin-objc.mm. Made SLPlugin do the cocoa setup during initialization, and create/delete an autorelease pool each time through its main loop. This should make plugin code that's using autorelease correctly not leak. Fixed a bug in the version of setupCocoa() used in the viewer (it was never setting its "inited" variable).
2010-05-01merge from viewer-trunkTofu Linden
2010-04-30Automated merge with ssh://hg.lindenlab.com/q/viewer-trunkXiaohong Bao
2010-04-30merge from viewer-trunkTofu Linden
2010-04-30Looks like the linux apr version is a bit too old to build 5458d58b4cd0. ↵Tofu Linden
Use this workaround for now.
2010-04-29add debug code for EXT-7011: crash at LLPluginClassMedia::idle ↵Xiaohong Bao
[secondlife-bin llpluginclassmedia.cpp:158]
2010-04-29merge from viewer-trunkTofu Linden
2010-04-29Incorporate suggestions from Richard's review of the LLPlugin changes.Monroe Linden
Use LLMutexLock (stack-based locker/unlocker) for the straightforward cases instead of explicit lock()/unlock(). There are still a couple of cases (one overlapping lock lifetime and two loops that unlock the mutex to call another function inside the loop) where I'm leaving explicit lock/unlock calls. Rename LLPluginProcessParent::sPollThread to sReadThread, for consistency. Made the LLPluginProcessParent destructor hold mIncomingQueueMutex while removing the instance from the global list -- this should prevent a possible race condition in LLPluginProcessParent::poll(). Removed a redundant check when calling LLPluginProcessParent::setUseReadThread().
2010-04-27Fixed a silly error in the code that tries to avoid queueing up mouse move ↵Monroe Linden
events to blocked plugins.
2010-04-27Architectural changes to LLPlugin message processing.Monroe Linden
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-26Fix for mac build.Dave Parks
2010-04-25DEV-49389 (SNOW-571 / VWR-18279): Replacing another deprecated ↵Aimee Linden
WaitNextEvent() for the OS X 10.6 SDK Replaced the deprecated WaitNextEvent() call with ReceiveNextEvent() and SendEventToEventTarget() as a basic event loop in slplugin.cpp
2010-04-23Add a way for plugins to send a message and block waiting for the responseMonroe Linden
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-21Fix for EXT-6287 (fullscreen flash video plays behind the viewer instead of ↵Monroe Linden
in front) Made SLPlugin into a bundled app on the Mac (this is apparently necessary for the plugin's window to be allowed to get focus). Changed the Info.plist key SLPlugin uses to keep itself out of the dock from LSBackgroundOnly to LSUIElement (this allows it to get focus and display UI). Added some Mac-specific code to slplugin.cpp to manipulate window layers and bring the plugin process to the foreground when something in the process opens a window, and to bring the viewer to the foreground when the last window in the process is closed.