diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/media_plugins/webkit/media_plugin_webkit.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llpanelpicks.cpp | 85 | ||||
| -rw-r--r-- | indra/newview/llpanelpicks.h | 7 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 35 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 1 | ||||
| -rw-r--r-- | indra/test_apps/llplugintest/CMakeLists.txt | 1 | 
9 files changed, 119 insertions, 58 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/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 498782fb44..0a13180c73 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -57,7 +57,6 @@  #include "llpanelprofile.h"  #include "llpanelpick.h"  #include "llpanelclassified.h" -#include "llpanelprofileview.h"  #include "llsidetray.h"  static const std::string XML_BTN_NEW = "new_btn"; @@ -88,6 +87,14 @@ public:  	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)  	{ +		// handle app/classified/create urls first +		if (params.size() == 1 && params[0].asString() == "create") +		{ +			createClassified(); +			return true; +		} + +		// then handle the general app/classified/{UUID}/{CMD} urls  		if (params.size() < 2)  		{  			return false; @@ -114,6 +121,31 @@ public:  		return false;  	} +	void createClassified() +	{ +		// open the new classified panel on the Me > Picks sidetray +		LLSD params; +		params["id"] = gAgent.getID(); +		params["open_tab_name"] = "panel_picks"; +		params["show_tab_panel"] = "create_classified"; +		LLSideTray::getInstance()->showPanel("panel_me", params); +	} + +	void openClassified(LLAvatarClassifiedInfo* c_info) +	{ +		// open the classified info panel on the Me > Picks sidetray +		LLSD params; +		params["id"] = c_info->creator_id; +		params["open_tab_name"] = "panel_picks"; +		params["show_tab_panel"] = "classified_details"; +		params["classified_id"] = c_info->classified_id; +		params["classified_avatar_id"] = c_info->creator_id; +		params["classified_snapshot_id"] = c_info->snapshot_id; +		params["classified_name"] = c_info->name; +		params["classified_desc"] = c_info->description; +		LLSideTray::getInstance()->showPanel("panel_profile_view", params); +	} +  	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)  	{  		if (APT_CLASSIFIED_INFO != type) @@ -128,22 +160,8 @@ public:  			return;  		} -		// open the people profile page for the classified's owner -		LLSD params; -		params["id"] = c_info->creator_id; -		params["classified"] = c_info->classified_id; -		params["open_tab_name"] = "panel_profile"; -		LLPanelProfileView *profile = dynamic_cast<LLPanelProfileView*>(LLSideTray::getInstance()->showPanel("panel_profile_view", params)); - -		// then open the classified panel on this user's profile panel -		if (profile) -		{ -			LLPanelPicks* panel_picks = profile->getChild<LLPanelPicks>("panel_picks"); -			if (panel_picks) -			{ -				panel_picks->openClassifiedInfo(c_info); -			} -		} +		// open the detail side tray for this classified +		openClassified(c_info);  		// remove our observer now that we're done  		mClassifiedIds.erase(c_info->classified_id); @@ -693,33 +711,24 @@ void LLPanelPicks::openClassifiedInfo()  	LLClassifiedItem* c_item = getSelectedClassifiedItem(); -	createClassifiedInfoPanel(); - -	LLSD params; - 	params["classified_id"] = c_item->getClassifiedId(); - 	params["avatar_id"] = c_item->getAvatarId(); - 	params["snapshot_id"] = c_item->getSnapshotId(); - 	params["name"] = c_item->getClassifiedName(); - 	params["desc"] = c_item->getDescription(); - -	getProfilePanel()->openPanel(mPanelClassifiedInfo, params); +	openClassifiedInfo(c_item->getClassifiedId(), c_item->getAvatarId(), +					   c_item->getSnapshotId(), c_item->getClassifiedName(), +					   c_item->getDescription());  } -void LLPanelPicks::openClassifiedInfo(LLAvatarClassifiedInfo *c_info) +void LLPanelPicks::openClassifiedInfo(const LLUUID &classified_id,  +									  const LLUUID &avatar_id, +									  const LLUUID &snapshot_id, +									  const std::string &name, const std::string &desc)  { -	if (! c_info) -	{ -		return; -	} -  	createClassifiedInfoPanel();  	LLSD params; -	params["classified_id"] = c_info->classified_id; -	params["avatar_id"] = c_info->creator_id; -	params["snapshot_id"] = c_info->snapshot_id; -	params["name"] = c_info->name; -	params["desc"] = c_info->description; +	params["classified_id"] = classified_id; +	params["avatar_id"] = avatar_id; +	params["snapshot_id"] = snapshot_id; +	params["name"] = name; +	params["desc"] = desc;  	getProfilePanel()->openPanel(mPanelClassifiedInfo, params);  } diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 893a0c53a3..0ebf9e26dd 100644 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h @@ -86,9 +86,6 @@ public:  	// parent panels failed to work (picks related code was in my profile panel)  	void setProfilePanel(LLPanelProfile* profile_panel); -	// display the info panel for the given classified -	void openClassifiedInfo(LLAvatarClassifiedInfo *c_info); -  protected:  	/*virtual*/void updateButtons(); @@ -120,6 +117,10 @@ private:  	void openPickInfo();  	void openClassifiedInfo(); +	void openClassifiedInfo(const LLUUID &classified_id, const LLUUID &avatar_id, +							const LLUUID &snapshot_id, const std::string &name, +							const std::string &desc); +	friend class LLPanelProfile;  	void showAccordion(const std::string& name, bool show); diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 3274820174..c73ade53c8 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -144,6 +144,7 @@ BOOL LLPanelProfile::postBuild()  void LLPanelProfile::onOpen(const LLSD& key)  { +	// open the desired panel  	if (key.has("open_tab_name"))  	{  		getTabContainer()[PANEL_PICKS]->onClosePanel(); @@ -155,6 +156,33 @@ void LLPanelProfile::onOpen(const LLSD& key)  	{  		getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());  	} + +	// support commands to open further pieces of UI +	if (key.has("show_tab_panel")) +	{ +		std::string panel = key["show_tab_panel"].asString(); +		if (panel == "create_classified") +		{ +			LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); +			if (picks) +			{ +				picks->createNewClassified(); +			} +		} +		else if (panel == "classified_details") +		{ +			LLUUID classified_id = key["classified_id"].asUUID(); +			LLUUID avatar_id     = key["classified_avatar_id"].asUUID(); +			LLUUID snapshot_id   = key["classified_snapshot_id"].asUUID(); +			std::string name     = key["classified_name"].asString(); +			std::string desc     = key["classified_desc"].asString(); +			LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); +			if (picks) +			{ +				picks->openClassifiedInfo(classified_id, avatar_id, snapshot_id, name, desc); +			} +		} +	}  }  //*TODO redo panel toggling 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( | 
