SL-11402 Resaving home image if file does not exist

meow-7.2.2
andreykproductengine 2019-06-13 19:00:20 +03:00
parent 31a22910c1
commit d72fcfba57
3 changed files with 47 additions and 1 deletions

View File

@ -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())

View File

@ -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);

View File

@ -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);
}
}
}
}
}