Anonymous avatar Anonymous committed d35fdc7 Merge

automated merge avp->avp

Comments (0)

Files changed (25)

indra/media_plugins/webkit/media_plugin_webkit.cpp

 			}
 			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")
 			{
 				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 

indra/newview/CMakeLists.txt

     qtnetworkd4.dll
     qtopengld4.dll
     qtwebkitd4.dll
+    qtxmlpatternsd4.dll
     ssleay32.dll
     )
   copy_if_different(
     qtnetwork4.dll
     qtopengl4.dll
     qtwebkit4.dll
+    qtxmlpatterns4.dll    
     ssleay32.dll
     )
   copy_if_different(

indra/newview/app_settings/settings.xml

       <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>
       <key>Value</key>
       <integer>35</integer>
     </map>
-    <key>RenderAvatarInvisible</key>
-    <map>
-      <key>Comment</key>
-      <string>Set your avatar as Invisible</string>
-      <key>Persist</key>
-      <integer>0</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>RenderAvatarVP</key>
     <map>
       <key>Comment</key>
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>ShowDebugAppearanceEditor</key>
+    <map>
+      <key>Comment</key>
+      <string>Show debugging appearance editor</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>ShowEmptyFoldersWhenSearching</key>
     <map>
       <key>Comment</key>
       <string>Boolean</string>
       <key>Value</key>
       <integer>1</integer>   
-    </map>    
+    </map>
+    <key>ShowObjectRenderingCost</key>                
+    <map>
+      <key>Comment</key>
+      <string>Show the object rendering cost  in  build tools</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>   
+    </map>        
     <key>ShowNavbarFavoritesPanel</key>    
     <map>
       <key>Comment</key>

indra/newview/llfloatertools.cpp

 
 // Globals
 LLFloaterTools *gFloaterTools = NULL;
-
+bool LLFloaterTools::sShowObjectCost = true;
 
 const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] =
 {
 	mStatusText["grab"] = getString("status_grab");
 	mStatusText["place"] = getString("status_place");
 	mStatusText["selectland"] = getString("status_selectland");
+
+	sShowObjectCost = gSavedSettings.getBOOL("ShowObjectRenderingCost");
 	
 	return TRUE;
 }
 	childSetTextArg("prim_count", "[COUNT]", prim_count_string);
 
 	// calculate selection rendering cost
-	std::string prim_cost_string;
-	LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost());
-	childSetTextArg("RenderingCost", "[COUNT]", prim_cost_string);
+	if (sShowObjectCost)
+	{
+		std::string prim_cost_string;
+		LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost());
+		childSetTextArg("RenderingCost", "[COUNT]", prim_cost_string);
+	}
 
 
 	// disable the object and prim counts if nothing selected
 	bool have_selection = ! LLSelectMgr::getInstance()->getSelection()->isEmpty();
 	childSetEnabled("obj_count", have_selection);
 	childSetEnabled("prim_count", have_selection);
-	childSetEnabled("RenderingCost", have_selection);
+	childSetEnabled("RenderingCost", have_selection && sShowObjectCost);
 
 	// Refresh child tabs
 	mPanelPermissions->refresh();
 	mBtnEdit	->setToggleState( edit_visible );
 	mRadioGroupEdit->setVisible( edit_visible );
 	bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
-	childSetVisible("RenderingCost", !linked_parts && (edit_visible || focus_visible || move_visible));
+	childSetVisible("RenderingCost", !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
 
 	if (mCheckSelectIndividual)
 	{

indra/newview/llfloatertools.h

 
 protected:
 	LLSD				mMediaSettings;
+
+public:
+	static bool		sShowObjectCost;
 	
 };
 

indra/newview/llpanelmaininventory.cpp

 		mActivePanel->getRootFolder()->applyFunctorRecursively(opener);
 		mActivePanel->getRootFolder()->scrollToShowSelection();
 	}
+	mFilterSubString = "";
 }
 
 void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
 
 	std::string uppercase_search_string = search_string;
 	LLStringUtil::toUpper(uppercase_search_string);
+	mFilterSubString = uppercase_search_string;
 	if (mActivePanel->getFilterSubString().empty() && uppercase_search_string.empty())
 	{
 			// current filter and new filter empty, do nothing
 	}
 
 	// set new filter string
-	mActivePanel->setFilterSubString(uppercase_search_string);
+	mActivePanel->setFilterSubString(mFilterSubString);
 }
 
 
 	{
 		return;
 	}
+	setFilterSubString(mFilterSubString);
 	LLInventoryFilter* filter = mActivePanel->getFilter();
 	LLFloaterInventoryFinder *finder = getFinder();
 	if (finder)
 {
 	if (mActivePanel && mFilterEditor)
 	{
-		mFilterEditor->setText(mActivePanel->getFilterSubString());
+		mFilterEditor->setText(mFilterSubString);
 	}	
 	LLPanel::draw();
 }
 		}
 		const LLUUID& item_id = current_item->getListener()->getUUID();
 		const std::string &item_name = current_item->getListener()->getName();
+		mFilterSubString = item_name;
 		LLInventoryFilter *filter = mActivePanel->getFilter();
 		filter->setFilterSubString(item_name);
 		mFilterEditor->setText(item_name);
+
 		mFilterEditor->setFocus(TRUE);
 		filter->setFilterUUID(item_id);
 		filter->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);

indra/newview/llpanelmaininventory.h

 	LLInventoryPanel*			mActivePanel;
 	LLSaveFolderState*			mSavedFolderState;
 	std::string					mFilterText;
+	std::string					mFilterSubString;
 
 
 	//////////////////////////////////////////////////////////////////////////////////

indra/newview/llpaneloutfitsinventory.cpp

 #include "llmenugl.h"
 #include "llviewermenu.h"
 
+#include "llviewercontrol.h"
+
 static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory");
+bool LLPanelOutfitsInventory::sShowDebugEditor = false;
 
 LLPanelOutfitsInventory::LLPanelOutfitsInventory() :
 	mActivePanel(NULL),
 // virtual
 BOOL LLPanelOutfitsInventory::postBuild()
 {
-	
+	sShowDebugEditor = gSavedSettings.getBOOL("ShowDebugAppearanceEditor");
 	initTabPanels();
 	initListCommandsHandlers();
 	return TRUE;
 	{
 		mParent->updateVerbs();
 	}
+
+	if (mListCommands)
+	{
+		mListCommands->childSetVisible("look_edit_btn",sShowDebugEditor);
+	}
 }
 
 void LLPanelOutfitsInventory::setParent(LLSidepanelAppearance* parent)
 // virtual
 void LLPanelOutfitsInventory::onSearchEdit(const std::string& string)
 {
+	mFilterSubString = string;
 	if (string == "")
 	{
 		mActivePanel->setFilterSubString(LLStringUtil::null);
 
 void LLPanelOutfitsInventory::onSelectorButtonClicked()
 {
-	/*
 	  LLFolderViewItem* cur_item = getRootFolder()->getCurSelectedItem();
 
 	  LLFolderViewEventListener* listenerp = cur_item->getListener();
 
 	  LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
 	  } 
-	*/
 }
 
 LLFolderViewEventListener *LLPanelOutfitsInventory::getCorrectListenerForAction()
 	mListCommands->childSetAction("trash_btn", boost::bind(&LLPanelOutfitsInventory::onTrashButtonClick, this));
 	mListCommands->childSetAction("add_btn", boost::bind(&LLPanelOutfitsInventory::onAddButtonClick, this));
 	mListCommands->childSetAction("wear_btn", boost::bind(&LLPanelOutfitsInventory::onWearButtonClick, this));
-	
+
+	mListCommands->childSetAction("look_edit_btn", boost::bind(&LLPanelOutfitsInventory::onSelectorButtonClicked, this));
+
 	LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>("trash_btn");
 	trash_btn->setDragAndDropHandler(boost::bind(&LLPanelOutfitsInventory::handleDragAndDropToTrash, this
 				   ,       _4 // BOOL drop
 		LLInventoryPanel *panel = (*iter);
 		panel->setSelectCallback(boost::bind(&LLPanelOutfitsInventory::onTabSelectionChange, this, panel, _1, _2));
 	}
+
+	mAppearanceTabs = getChild<LLTabContainer>("appearance_tabs");
+	mAppearanceTabs->setCommitCallback(boost::bind(&LLPanelOutfitsInventory::onTabChange, this));
 }
 
 void LLPanelOutfitsInventory::onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action)
 	onSelectionChange(items, user_action);
 }
 
+void LLPanelOutfitsInventory::onTabChange()
+{
+	mActivePanel = (LLInventoryPanel*)childGetVisibleTab("appearance_tabs");
+	if (!mActivePanel)
+	{
+		return;
+	}
+	mActivePanel->setFilterSubString(mFilterSubString);
+}
+
 LLInventoryPanel* LLPanelOutfitsInventory::getActivePanel()
 {
 	return mActivePanel;

indra/newview/llpaneloutfitsinventory.h

 class LLButton;
 class LLMenuGL;
 class LLSidepanelAppearance;
+class LLTabContainer;
 
 class LLPanelOutfitsInventory : public LLPanel
 {
 private:
 	LLSidepanelAppearance*      mParent;
 	LLSaveFolderState*			mSavedFolderState;
-
+	LLTabContainer*				mAppearanceTabs;
+	std::string 				mFilterSubString;
 
 public:
 	//////////////////////////////////////////////////////////////////////////////////
 protected:
 	void 				initTabPanels();
 	void 				onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action);
+	void 				onTabChange();
 	
 private:
 	LLInventoryPanel* 	mActivePanel;
 	LLMenuGL*					mMenuAdd;
 	// List Commands                                                              //
 	////////////////////////////////////////////////////////////////////////////////
+	///
+public:
+	static bool sShowDebugEditor;
 };
 
 #endif //LL_LLPANELOUTFITSINVENTORY_H

indra/newview/llpanelpicks.cpp

 #include "llpanelprofile.h"
 #include "llpanelpick.h"
 #include "llpanelclassified.h"
-#include "llpanelprofileview.h"
 #include "llsidetray.h"
 
 static const std::string XML_BTN_NEW = "new_btn";
 
 	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;
 		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)
 			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);
 
 	LLClassifiedItem* c_item = getSelectedClassifiedItem();
 
+	openClassifiedInfo(c_item->getClassifiedId(), c_item->getAvatarId(),
+					   c_item->getSnapshotId(), c_item->getClassifiedName(),
+					   c_item->getDescription());
+}
+
+void LLPanelPicks::openClassifiedInfo(const LLUUID &classified_id, 
+									  const LLUUID &avatar_id,
+									  const LLUUID &snapshot_id,
+									  const std::string &name, const std::string &desc)
+{
 	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);
-}
-
-void LLPanelPicks::openClassifiedInfo(LLAvatarClassifiedInfo *c_info)
-{
-	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);
 }

indra/newview/llpanelpicks.h

 	// 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();
 
 
 	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);
 

indra/newview/llpanelprofile.cpp

 
 void LLPanelProfile::onOpen(const LLSD& key)
 {
+	// open the desired panel
 	if (key.has("open_tab_name"))
 	{
 		getTabContainer()[PANEL_PICKS]->onClosePanel();
 	{
 		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

indra/newview/llselectmgr.cpp

 	return TRUE;
 }
 
+//-----------------------------------------------------------------------------
+// selectGetAllValidAndObjectsFound() - return TRUE if selections are
+// valid and objects are found.
+//
+// For EXT-3114 - same as selectGetModify() without the modify check.
+//-----------------------------------------------------------------------------
+BOOL LLSelectMgr::selectGetAllValidAndObjectsFound()
+{
+	for (LLObjectSelection::iterator iter = getSelection()->begin();
+		 iter != getSelection()->end(); iter++ )
+	{
+		LLSelectNode* node = *iter;
+		LLViewerObject* object = node->getObject();
+		if( !object || !node->mValid )
+		{
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
 
 //-----------------------------------------------------------------------------
 // selectGetModify() - return TRUE if current agent can modify all

indra/newview/llselectmgr.h

 	// Returns TRUE if the viewer has information on all selected objects
 	BOOL selectGetAllRootsValid();
 	BOOL selectGetAllValid();
+	BOOL selectGetAllValidAndObjectsFound();
 
 	// returns TRUE if you can modify all selected objects. 
 	BOOL selectGetRootsModify();

indra/newview/llviewercontrol.cpp

 #include "llrender.h"
 #include "llbottomtray.h"
 #include "llnavigationbar.h"
+#include "llfloatertools.h"
+#include "llpaneloutfitsinventory.h"
 
 #ifdef TOGGLE_HACKED_GODLIKE_VIEWER
 BOOL 				gHackGodmode = FALSE;
 	return true;
 }
 
-static bool handleSetSelfInvisible( const LLSD& newvalue)
-{
-	LLVOAvatarSelf::onChangeSelfInvisible( newvalue.asBoolean() );
-	return true;
-}
-
 static bool handleReleaseGLBufferChanged(const LLSD& newvalue)
 {
 	if (gPipeline.isInit())
 	return true;
 }
 
+bool toggle_show_appearance_editor(const LLSD& newvalue)
+{
+	LLPanelOutfitsInventory::sShowDebugEditor = newvalue.asBoolean();
+	return true;
+}
+
+bool toggle_show_object_render_cost(const LLSD& newvalue)
+{
+	LLFloaterTools::sShowObjectCost = newvalue.asBoolean();
+	return true;
+}
+
 ////////////////////////////////////////////////////////////////////////////
 
 void settings_setup_listeners()
 	gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderGammaFull")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderAvatarMaxVisible")->getSignal()->connect(boost::bind(&handleAvatarMaxVisibleChanged, _2));
-	gSavedSettings.getControl("RenderAvatarInvisible")->getSignal()->connect(boost::bind(&handleSetSelfInvisible, _2));
 	gSavedSettings.getControl("RenderVolumeLODFactor")->getSignal()->connect(boost::bind(&handleVolumeLODChanged, _2));
 	gSavedSettings.getControl("RenderAvatarLODFactor")->getSignal()->connect(boost::bind(&handleAvatarLODChanged, _2));
 	gSavedSettings.getControl("RenderTerrainLODFactor")->getSignal()->connect(boost::bind(&handleTerrainLODChanged, _2));
 	gSavedSettings.getControl("ShowSnapshotButton")->getSignal()->connect(boost::bind(&toggle_show_snapshot_button, _2));
 	gSavedSettings.getControl("ShowNavbarNavigationPanel")->getSignal()->connect(boost::bind(&toggle_show_navigation_panel, _2));
 	gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
+	gSavedSettings.getControl("ShowDebugAppearanceEditor")->getSignal()->connect(boost::bind(&toggle_show_appearance_editor, _2));
+	gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
 }
 
 #if TEST_CACHED_CONTROL

indra/newview/llviewermenu.cpp

 		enable = LLViewerParcelMgr::getInstance()->allowAgentBuild()
 			|| LLSelectMgr::getInstance()->getSelection()->isAttachment();
 	} 
-	else if (LLSelectMgr::getInstance()->selectGetModify())
+	else if (LLSelectMgr::getInstance()->selectGetAllValidAndObjectsFound())
 	{
 		enable = true;
 	}

indra/newview/llvoavatarself.cpp

 	}
 }
 
-// static
-void LLVOAvatarSelf::onChangeSelfInvisible(BOOL newvalue)
-{
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-	if (avatarp)
-	{
-		if (newvalue)
-		{
-			// we have just requested to set the avatar's baked textures to invisible
-			avatarp->setInvisible(TRUE);
-		}
-		else
-		{
-			avatarp->setInvisible(FALSE);
-		}
-	}
-}
-
-void LLVOAvatarSelf::setInvisible(BOOL newvalue)
-{
-	if (newvalue)
-	{
-		setCompositeUpdatesEnabled(FALSE);
-		for (U32 i = 0; i < mBakedTextureDatas.size(); i++ )
-		{
-			setNewBakedTexture(mBakedTextureDatas[i].mTextureIndex, IMG_INVISIBLE);
-		}
-		gAgent.sendAgentSetAppearance();
-	}
-	else
-	{
-		setCompositeUpdatesEnabled(TRUE);
-		invalidateAll();
-		gAgent.sendAgentSetAppearance();
-	}
-}
-
 // HACK: this will null out the avatar's local texture IDs before the TE message is sent
 //       to ensure local texture IDs are not sent to other clients in the area.
 //       this is a short-term solution. The long term solution will be to not set the texture

indra/newview/llvoavatarself.h

 	// Visibility
 	//--------------------------------------------------------------------
 public:
-	static void		onChangeSelfInvisible(BOOL newvalue);
-	void			setInvisible(BOOL newvalue);
 	bool			sendAppearanceMessage(LLMessageSystem *mesgsys) const;
 
 /**                    Appearance

indra/newview/llvovolume.cpp

 	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++)
 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
 
 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()
 		// "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;
 
 void LLVOVolume::sendMediaDataUpdate()
 {
-    sObjectMediaClient->updateMedia(new LLMediaDataClientObjectImpl(this, false));
+    if (sObjectMediaClient)
+		sObjectMediaClient->updateMedia(new LLMediaDataClientObjectImpl(this, false));
 }
 
 void LLVOVolume::removeMediaImpl(S32 texture_index)

indra/newview/llwearable.cpp

 
 	if( num_parameters != mVisualParamIndexMap.size() )
 	{
-		llwarns << "Wearable parameter mismatch. Reading in " << num_parameters << " from file, but created " << mVisualParamIndexMap.size() << " from avatar parameters. " << llendl;
+		llwarns << "Wearable parameter mismatch. Reading in " << num_parameters << " from file, but created " << mVisualParamIndexMap.size() << " from avatar parameters. type: " <<  mType << llendl;
 	}
 
 	// parameters

indra/newview/skins/default/xui/en/panel_outfits_inventory.xml

 		right="-5"
 		top_pad="0"
 		width="90" />
+      <button
+       follows="bottom|left" 
+       height="23" 
+       label="edit look"
+       layout="topleft"
+       left_pad="-200"
+       name="look_edit_btn"
+       visible="false"
+       width="90" />
 	 </panel>
 </panel>

indra/newview/skins/default/xui/en/sidepanel_appearance.xml

    layout="topleft"
    left="0"
    name="panel_look_info"
+   top="35"
    visible="false" />
    <panel
    class="panel_edit_wearable"
    layout="topleft"
    left="0"
    name="panel_edit_wearable"
+   top="35"
    visible="false" />
 </panel>
 

indra/newview/viewer_manifest.py

             self.path("qtnetwork4.dll")
             self.path("qtopengl4.dll")
             self.path("qtwebkit4.dll")
+            self.path("qtxmlpatterns4.dll")
             self.path("ssleay32.dll")
             self.end_prefix()
 

indra/test_apps/llplugintest/CMakeLists.txt

     qtnetwork4.dll
     qtopengl4.dll
     qtwebkit4.dll
+    qtxmlpatterns4.dll
     ssleay32.dll
     )
   copy_if_different(
           <key>darwin</key>
           <map>
             <key>md5sum</key>
-            <string>e854fd009feeeb617ecfa68f7614ec17</string>
+            <string>44fe5bca65db2951ce91b5b6c8596ee0</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+flash-darwin-20091215.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20091215.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>92cff05661b5547caae7cc6c66d09870</string>
+            <string>3846354e2e20a98c0401317eb114ff5e</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-20091123.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20091215.tar.bz2</uri>
           </map>
         </map>
       </map>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.