Commit Graph

51 Commits (master)

Author SHA1 Message Date
Ansariel e17c906698 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/cmake/Copy3rdPartyLibs.cmake
#	indra/newview/llcontrolavatar.cpp
#	indra/newview/lldrawpoolterrain.cpp
#	indra/newview/llmeshrepository.cpp
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvoavatar.cpp
2024-07-22 20:58:53 +02:00
Rye Mutt ac2f20fc03
Use thread pool to create plugin processes to reduce created/destroyed threads and fix various crashes (#2079) 2024-07-22 16:10:19 +03:00
Brad Linden a1f49564d6 Merge remote-tracking branch 'origin/DRTVWR-600-maint-A' into brad/merge-maint-a-to-dev 2024-05-23 11:31:19 -07:00
Ansariel ea5ead6f4a Merge remote-tracking branch 'FS600/master'
# Conflicts:
#	doc/contributions.txt
#	indra/llimage/tests/llimageworker_test.cpp
#	indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
2024-05-23 18:15:07 +02:00
Ansariel ca63f18bf2 Merge branch 'project/gltf_development' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llimage/tests/llimageworker_test.cpp
#	indra/llmath/llvolume.cpp
#	indra/newview/llenvironment.cpp
#	indra/newview/llfetchedgltfmaterial.cpp
#	indra/newview/llfloaterimagepreview.h
#	indra/newview/llfloaterregioninfo.h
#	indra/newview/llmaniprotate.cpp
#	indra/newview/llselectmgr.h
#	indra/newview/llsurfacepatch.cpp
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltexturectrl.h
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llviewerobject.cpp
#	indra/newview/llviewerregion.cpp
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvoicevivox.cpp
#	indra/newview/llvovolume.cpp
#	indra/newview/pipeline.cpp
#	indra/newview/skins/default/xui/en/notifications.xml
#	scripts/messages/message_template.msg.sha1
2024-05-10 14:12:41 +02:00
RunitaiLinden 7fc5f7e649
#1354 Make coroutines use LLCoros::Mutex instead of LLMutex (#1356)
* #1354 Make coroutines use LLCoros::Mutex instead of LLMutex

* #1354 Fix some more unsafe coroutine executions.

* #1354 Implement changes requested by Nat
2024-05-02 10:57:39 -05:00
Ansariel 5f1a19af72 Merge remote-tracking branch 'LL/marchcat/x-ws-merge'
# Conflicts:
#	autobuild.xml
#	indra/linux_crash_logger/llcrashloggerlinux.cpp
#	indra/newview/llappviewerlinux_api.h
#	indra/newview/llappviewerlinux_api_dbus.cpp
#	indra/newview/llappviewerlinux_api_dbus.h
#	indra/newview/llavatarpropertiesprocessor.h
#	indra/newview/llcallbacklist.cpp
#	indra/newview/llimpanel.h
2024-05-01 12:30:57 +02:00
Andrey Lihatskiy 1b68f71348 #824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed 2024-04-29 07:56:09 +03:00
Ansariel 45dc1a63f0 Merge branch 'DRTVWR-599-maint-Z' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llprimitive/lldaeloader.cpp
#	indra/llui/lllayoutstack.cpp
#	indra/llui/llnotifications.h
#	indra/llui/lltoolbar.cpp
#	indra/newview/CMakeLists.txt
#	indra/newview/llagent.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloaterimcontainer.cpp
#	indra/newview/llfloaterimnearbychathandler.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llpaneloutfitsinventory.h
#	indra/newview/llsidepanelappearance.h
#	indra/newview/lltoolbarview.cpp
2024-01-12 14:18:34 +01:00
AiraYumi 7c8907522f replace boost library to standard 2024-01-08 23:29:21 +02:00
Ansariel 1536fdd1c3 Merge branch 'DRTVWR-530-maint' of https://bitbucket.org/lindenlab/viewer 2021-08-24 10:47:18 +02:00
Andrey Kleshchev d875f80900 SL-14988 Plugin process creation can cause a notiecable delay 2021-05-25 03:31:50 +03:00
Ansariel 3192fe832f Merge viewer-quickgraphics 2016-03-08 01:41:31 +01:00
Oz Linden bc22e58743 merge changes for 4.0.1-release 2016-01-15 16:55:04 -05:00
Nicky 3f1a78cee9 Merge with CEF tip. 2015-11-24 15:28:05 +01:00
Rider Linden 059925eafb Added code to initiate controlled shutdown of plugins with timeouts for misbeahving plugin. 2015-11-10 13:45:30 -08:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
Ansariel f4bfb1aadf Merge LL V3.7.9 (AIS3 + SSA) 2014-10-22 02:02:08 +02:00
Nicky 87d479e723 Fix merge error in llplugin. 2014-06-10 10:48:22 +02:00
Tank_Master 8863d9beaf Compile fixes 2014-06-09 23:27:05 -07:00
Tank_Master 6babf8abd2 Merge LL 3.7.7 2014-06-09 11:29:57 -07:00
Richard Linden 0a96b47663 merge with viewer-release 2013-06-05 19:05:43 -07:00
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Nicky 3a14fae164 Memory leak; LLPluginSharedMemory where leaked when a shared memory region was destroyed. 2013-08-18 20:40:11 +02:00
Tank_Master d4640277d0 Merge LL 3.5.3 release. 2013-07-09 16:24:58 -07:00
Richard Linden 9d77e030d9 SH-3406 WIP convert fast timers to lltrace system
cleaning up build
moved most includes of windows.h to llwin32headers.h to disable min/max macros, etc
streamlined Time class and consolidated functionality in BlockTimer class
llfasttimer is no longer included via llstring.h, so had to add it manually in several places
2012-11-14 23:52:27 -08:00
Nicky ceea332a9c Change old style comments <ND> to <FS:ND> to avoid any future confusion/ 2012-12-16 05:19:32 +01:00
Tank_Master 991d43709c merge LL 3.3.3 beta 2012-06-16 07:22:27 -07:00
Nat Goodspeed 47d9475707 Convert LLProcess consumers from LLSD to LLProcess::Params block.
Using a Params block gives compile-time checking against attribute typos. One
might inadvertently set myLLSD["autofill"] = false and only discover it when
things behave strangely at runtime; but trying to set myParams.autofill will
produce a compile error.
However, it's excellent that the same LLProcess::create() method can accept
either LLProcess::Params or a properly-constructed LLSD block.
2012-01-21 11:45:15 -05:00
Nat Goodspeed f0dbb87833 Per Richard, replace LLProcessLauncher with LLProcess.
LLProcessLauncher had the somewhat fuzzy mandate of (1) accumulating
parameters with which to launch a child process and (2) sometimes tracking the
lifespan of the ensuing child process. But a valid LLProcessLauncher object
might or might not have ever been associated with an actual child process.
LLProcess specifically tracks a child process. In effect, it's a fairly thin
wrapper around a process HANDLE (on Windows) or pid_t (elsewhere), with
lifespan management thrown in. A static LLProcess::create() method launches a
new child; create() accepts an LLSD bundle with child parameters. So building
up a parameter bundle is deferred to LLSD rather than conflated with the
process management object.
Reconcile all known LLProcessLauncher consumers in the viewer code base,
notably the class unit tests.
2012-01-20 18:10:40 -05:00
Nicky 161c1b019f Merge up from 24496 / a656486925e8 (FS tip) to 25952 / 931cb0061118 (V/Dev FUI tip)
Observations and broken stuff so far:
- LLSideTray is gone.
- LLBottomTray is gone.
- LLFloaterSnapshot was changed and gave lots of merge conflicts. Flickr upload will be broken.
- LLNearbyChat is derived from LLPanel now. That broke quite some stuff rearding autohiding and docking of chatbar.
- Profile floaters are gone and all web based now.
- Russian translation gave huge mere conflicts with the new russian xml files from LL. Unmergeable. I took the LL files.
- XUI files in general will need some love and testing.
2012-01-17 17:57:52 +01:00
Richard Linden d089e6c264 bumped up MSVC warning level to 3 to catch more stuff that gcc catches 2011-11-28 19:16:49 -08:00
Xiaohong Bao 5e22062b68 fix for SH-2215: [crashhunters] crash at LLPluginClassMedia 2011-08-05 16:02:05 -06: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
Nicky 7b298b471e FIRE-3877; Fix mediaplugin for Bigfoot cards (VWR-25909,VWR-25190, likely VWR-25113 too). 2011-11-12 19:48:45 +01:00
Xiaohong Bao a50a4e9426 fix for SH-2215: [crashhunters] crash at LLPluginClassMedia 2011-08-28 08:57:57 -04:00
Oz Linden 06b0d72efa Change license from GPL to LGPL (version 2.1) 2010-08-13 07:24:57 -04:00
Monroe Linden 77b13dc2df Incorporate suggestions from Richard's review of the LLPlugin changes.
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-29 17:33:37 -07: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
Monroe Linden eb7bd0a214 Changed default launch timeout in LLPluginProcessParent to 60 seconds, and added an to LLPluginProcessParent that allows callers to adjust the launch and lockup timeouts. 2009-12-17 18:00:59 -08:00
brad kittenbrink cb9b874b17 Merge of my old precompiled headers dependency cleanup with tip of viewer-2-0. 2009-12-14 11:07:29 -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
brad kittenbrink 1ea60591a9 Refactoring of llviewerprecompiledheaders.h to hopefully increase stability
and reduce unnecessary dependencies and incredibuild wedging.  Hopefully in
the long run this will reduce build time.  Also cleaned up a lot of header
file usage to conform better to the coding standard.

reviewed by james and steve.
2009-11-13 20:33:59 -05:00
Monroe Linden 2fd31363f7 Added PluginAttachDebuggerToPlugins debug setting.
Added accessors to get platform-specific process ID from LLProcessLauncher.

Added an optional "debug" argument to LLPluginClassMedia::init() and LLPluginProcessParent::init() (defaults to false).

Mac only: made the state machine in LLPluginProcessParent::idle() open a new window in Terminal.app with a gdb session attached to the plugin process upon successful launch.
2009-11-10 15:57:26 -08:00
Monroe Linden 374deb8da1 Fixes for a different class of plugin failures (where loading the plugin dll fails) causing an error message loop:
Made LLPluginProcessParent differentiate between failures launching/loading the plugin and failures after the plugin has been loaded.  This allows us to handle launch failures differently, since retrying is unlikely to fix them.

Added new media event MEDIA_EVENT_PLUGIN_FAILED_LAUNCH to indicate a launch failure.

Added a case for the new event to LLViewerMediaImpl::handleMediaEvent() that sets the "failed init" flag to prevent retries.
2009-10-05 15:48:00 -07: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