summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/media_plugins/webkit/media_plugin_webkit.cpp7
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llvovolume.cpp35
-rwxr-xr-xindra/newview/viewer_manifest.py1
-rw-r--r--indra/test_apps/llplugintest/CMakeLists.txt1
6 files changed, 40 insertions, 17 deletions
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index ae4f4d810f..707edaa3d6 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -626,7 +626,11 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
}
else if(message_name == "cleanup")
{
- // TODO: clean up here
+ // DTOR most likely won't be called but the recent change to the way this process
+ // is (not) killed means we see this message and can do what we need to here.
+ // Note: this cleanup is ultimately what writes cookies to the disk
+ LLQtWebKit::getInstance()->remObserver( mBrowserWindowId, this );
+ LLQtWebKit::getInstance()->reset();
}
else if(message_name == "shm_added")
{
@@ -635,7 +639,6 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
info.mSize = (size_t)message_in.getValueS32("size");
std::string name = message_in.getValue("name");
-
// std::cerr << "MediaPluginWebKit::receiveMessage: shared memory added, name: " << name
// << ", size: " << info.mSize
// << ", address: " << info.mAddress
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 492d70a956..293faa7b70 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1780,6 +1780,7 @@ if (WINDOWS)
qtnetworkd4.dll
qtopengld4.dll
qtwebkitd4.dll
+ qtxmlpatternsd4.dll
ssleay32.dll
)
copy_if_different(
@@ -1799,6 +1800,7 @@ if (WINDOWS)
qtnetwork4.dll
qtopengl4.dll
qtwebkit4.dll
+ qtxmlpatterns4.dll
ssleay32.dll
)
copy_if_different(
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index ff569ecffa..578f8fd4f0 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5471,6 +5471,17 @@
<key>Value</key>
<integer>13</integer>
</map>
+ <key>PrimMediaMasterEnabled</key>
+ <map>
+ <key>Comment</key>
+ <string>Whether or not Media on a Prim is enabled.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>PrimMediaControlsUseHoverControlSet</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d24edacd13..f98aa361e0 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -204,8 +204,8 @@ void LLVOVolume::markDead()
if (!mDead)
{
LLMediaDataClientObject::ptr_t obj = new LLMediaDataClientObjectImpl(const_cast<LLVOVolume*>(this), false);
- sObjectMediaClient->removeFromQueue(obj);
- sObjectMediaNavigateClient->removeFromQueue(obj);
+ if (sObjectMediaClient) sObjectMediaClient->removeFromQueue(obj);
+ if (sObjectMediaNavigateClient) sObjectMediaNavigateClient->removeFromQueue(obj);
// Detach all media impls from this object
for(U32 i = 0 ; i < mMediaImplList.size() ; i++)
@@ -222,15 +222,18 @@ void LLVOVolume::markDead()
void LLVOVolume::initClass()
{
// gSavedSettings better be around
- const F32 queue_timer_delay = gSavedSettings.getF32("PrimMediaRequestQueueDelay");
- const F32 retry_timer_delay = gSavedSettings.getF32("PrimMediaRetryTimerDelay");
- const U32 max_retries = gSavedSettings.getU32("PrimMediaMaxRetries");
- const U32 max_sorted_queue_size = gSavedSettings.getU32("PrimMediaMaxSortedQueueSize");
- const U32 max_round_robin_queue_size = gSavedSettings.getU32("PrimMediaMaxRoundRobinQueueSize");
- sObjectMediaClient = new LLObjectMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries,
- max_sorted_queue_size, max_round_robin_queue_size);
- sObjectMediaNavigateClient = new LLObjectMediaNavigateClient(queue_timer_delay, retry_timer_delay,
- max_retries, max_sorted_queue_size, max_round_robin_queue_size);
+ if (gSavedSettings.getBOOL("PrimMediaMasterEnabled"))
+ {
+ const F32 queue_timer_delay = gSavedSettings.getF32("PrimMediaRequestQueueDelay");
+ const F32 retry_timer_delay = gSavedSettings.getF32("PrimMediaRetryTimerDelay");
+ const U32 max_retries = gSavedSettings.getU32("PrimMediaMaxRetries");
+ const U32 max_sorted_queue_size = gSavedSettings.getU32("PrimMediaMaxSortedQueueSize");
+ const U32 max_round_robin_queue_size = gSavedSettings.getU32("PrimMediaMaxRoundRobinQueueSize");
+ sObjectMediaClient = new LLObjectMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries,
+ max_sorted_queue_size, max_round_robin_queue_size);
+ sObjectMediaNavigateClient = new LLObjectMediaNavigateClient(queue_timer_delay, retry_timer_delay,
+ max_retries, max_sorted_queue_size, max_round_robin_queue_size);
+ }
}
// static
@@ -1719,14 +1722,15 @@ LLVector3 LLVOVolume::getApproximateFaceNormal(U8 face_id)
void LLVOVolume::requestMediaDataUpdate(bool isNew)
{
- sObjectMediaClient->fetchMedia(new LLMediaDataClientObjectImpl(this, isNew));
+ if (sObjectMediaClient)
+ sObjectMediaClient->fetchMedia(new LLMediaDataClientObjectImpl(this, isNew));
}
bool LLVOVolume::isMediaDataBeingFetched() const
{
// I know what I'm doing by const_casting this away: this is just
// a wrapper class that is only going to do a lookup.
- return sObjectMediaClient->isInQueue(new LLMediaDataClientObjectImpl(const_cast<LLVOVolume*>(this), false));
+ return (sObjectMediaClient) ? sObjectMediaClient->isInQueue(new LLMediaDataClientObjectImpl(const_cast<LLVOVolume*>(this), false)) : false;
}
void LLVOVolume::cleanUpMediaImpls()
@@ -1925,7 +1929,7 @@ void LLVOVolume::mediaNavigated(LLViewerMediaImpl *impl, LLPluginClassMedia* plu
// "bounce back" to the current URL from the media entry
mediaNavigateBounceBack(face_index);
}
- else
+ else if (sObjectMediaNavigateClient)
{
llinfos << "broadcasting navigate with URI " << new_location << llendl;
@@ -1994,7 +1998,8 @@ void LLVOVolume::mediaEvent(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin,
void LLVOVolume::sendMediaDataUpdate()
{
- sObjectMediaClient->updateMedia(new LLMediaDataClientObjectImpl(this, false));
+ if (sObjectMediaClient)
+ sObjectMediaClient->updateMedia(new LLMediaDataClientObjectImpl(this, false));
}
void LLVOVolume::removeMediaImpl(S32 texture_index)
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 32fdd41be2..d6d6aa48d1 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -324,6 +324,7 @@ class WindowsManifest(ViewerManifest):
self.path("qtnetwork4.dll")
self.path("qtopengl4.dll")
self.path("qtwebkit4.dll")
+ self.path("qtxmlpatterns4.dll")
self.path("ssleay32.dll")
self.end_prefix()
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
index 20ae1be1a2..89e2d8582d 100644
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ b/indra/test_apps/llplugintest/CMakeLists.txt
@@ -442,6 +442,7 @@ if(WINDOWS)
qtnetwork4.dll
qtopengl4.dll
qtwebkit4.dll
+ qtxmlpatterns4.dll
ssleay32.dll
)
copy_if_different(