diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llagent.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llagent.h | 2 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 29 | 
3 files changed, 47 insertions, 1 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 4bd3ca9157..925cec0871 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3709,6 +3709,23 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )  	return TRUE;  } +bool LLAgent::isInHomeRegion() +{ +	if(!mHaveHomePosition) +	{ +		return false; +	} +	if (!getRegion()) +	{ +		return false; +	} +	if (getRegion()->getHandle() != mHomeRegionHandle) +	{ +		return false; +	} +	return true; +} +  void LLAgent::clearVisualParams(void *data)  {  	if (isAgentAvatarValid()) diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index ea6f68c482..5ba1083d8e 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -233,6 +233,8 @@ public:  	void			setStartPosition(U32 location_id); // Marks current location as start, sends information to servers  	void			setHomePosRegion(const U64& region_handle, const LLVector3& pos_region);  	BOOL			getHomePosGlobal(LLVector3d* pos_global); +	bool			isInHomeRegion(); +  private:      void            setStartPositionSuccess(const LLSD &result); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index f3915b9210..c8dcbb87c1 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4507,8 +4507,35 @@ void LLAppViewer::saveFinalSnapshot()  		snap_filename += gDirUtilp->getDirDelimiter();  		snap_filename += LLStartUp::getScreenLastFilename();  		// use full pixel dimensions of viewer window (not post-scale dimensions) -		gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, TRUE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG); +		gViewerWindow->saveSnapshot(snap_filename, +									gViewerWindow->getWindowWidthRaw(), +									gViewerWindow->getWindowHeightRaw(), +									FALSE, +									TRUE, +									LLSnapshotModel::SNAPSHOT_TYPE_COLOR, +									LLSnapshotModel::SNAPSHOT_FORMAT_PNG);  		mSavedFinalSnapshot = TRUE; + +		if (gAgent.isInHomeRegion()) +		{ +			LLVector3d home; +			if (gAgent.getHomePosGlobal(&home) && dist_vec(home, gAgent.getPositionGlobal()) < 10) +			{ +				// We are at home position or close to it, see if we need to create home screenshot +				// Notes: +				// 1. It might be beneficial to also replace home if file is too old +				// 2. This is far from best way/place to update screenshot since location might be not fully loaded, +				// but we don't have many options +				std::string snap_home = gDirUtilp->getLindenUserDir(); +				snap_home += gDirUtilp->getDirDelimiter(); +				snap_home += LLStartUp::getScreenHomeFilename(); +				if (!gDirUtilp->fileExists(snap_home)) +				{ +					// We are at home position yet no home image exist, fix it +					LLFile::copy(snap_filename, snap_home); +				} +			} +		}  	}  }  | 
