Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
This commit is contained in:
@@ -1252,6 +1252,9 @@ void LLAudioEngine::startNextTransfer()
|
||||
// static
|
||||
void LLAudioEngine::assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType type, void *user_data, S32 result_code, LLExtStat ext_status)
|
||||
{
|
||||
if(!gAudiop)
|
||||
return;
|
||||
|
||||
if (result_code)
|
||||
{
|
||||
LL_INFOS("AudioEngine") << "Boom, error in audio file transfer: " << LLAssetStorage::getErrorString( result_code ) << " (" << result_code << ")" << LL_ENDL;
|
||||
@@ -1472,6 +1475,19 @@ bool LLAudioSource::play(const LLUUID &audio_uuid)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(mCurrentDatap == adp) //Desired sound did not change. Just re-play it.
|
||||
{
|
||||
if(getChannel() && getChannel()->isPlaying())
|
||||
getChannel()->play();
|
||||
return true;
|
||||
}
|
||||
else //Desired sound did change. Release the old channel if set.
|
||||
{
|
||||
if(getChannel())
|
||||
getChannel()->cleanup();
|
||||
mPlayedOnce = false; //Reset the played flag so the new sound is actually started up.
|
||||
}
|
||||
|
||||
mCurrentDatap = adp;
|
||||
|
||||
// Make sure the audio engine knows that we want to request this sound.
|
||||
|
||||
@@ -600,6 +600,12 @@ void LLAudioChannelFMOD::play()
|
||||
llwarns << "Playing without a channelID, aborting" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!FSOUND_IsPaused(mChannelID))
|
||||
{
|
||||
FSOUND_SetPaused(mChannelID, true);
|
||||
FSOUND_SetCurrentPosition(mChannelID, 0);
|
||||
}
|
||||
|
||||
if (!FSOUND_SetPaused(mChannelID, false))
|
||||
{
|
||||
|
||||
@@ -823,6 +823,13 @@ void LLAudioChannelFMODEX::play()
|
||||
|
||||
gSoundCheck.assertActiveState(this,true);
|
||||
|
||||
bool paused=true;
|
||||
Check_FMOD_Error(mChannelp->getPaused(&paused), "FMOD::Channel::getPaused");
|
||||
if(!paused)
|
||||
{
|
||||
Check_FMOD_Error(mChannelp->setPaused(true), "FMOD::Channel::setPaused");
|
||||
Check_FMOD_Error(mChannelp->setPosition(0,FMOD_TIMEUNIT_PCMBYTES), "FMOD::Channel::setPosition");
|
||||
}
|
||||
Check_FMOD_Error(mChannelp->setPaused(false), "FMOD::Channel::setPaused");
|
||||
|
||||
if(sVerboseDebugging)
|
||||
|
||||
@@ -199,11 +199,13 @@ void LLAudioChannelOpenAL::play()
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isPlaying())
|
||||
if(isPlaying())
|
||||
{
|
||||
alSourcePlay(mALSource);
|
||||
getSource()->setPlayedOnce(true);
|
||||
alSourceStop(mALSource);
|
||||
}
|
||||
|
||||
alSourcePlay(mALSource);
|
||||
getSource()->setPlayedOnce(true);
|
||||
}
|
||||
|
||||
void LLAudioChannelOpenAL::playSynced(LLAudioChannel *channelp)
|
||||
|
||||
@@ -127,7 +127,8 @@ void LLPrefsAscentSys::onCommitCheckBox(LLUICtrl* ctrl, const LLSD& value)
|
||||
if (enabled)
|
||||
{
|
||||
LLVector3d lpos_global = gAgent.getPositionGlobal();
|
||||
gAudiop->triggerSound(LLUUID("58a38e89-44c6-c52b-deb8-9f1ddc527319"), gAgent.getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_UI, lpos_global);
|
||||
if(gAudiop)
|
||||
gAudiop->triggerSound(LLUUID("58a38e89-44c6-c52b-deb8-9f1ddc527319"), gAgent.getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_UI, lpos_global);
|
||||
LLChat chat;
|
||||
chat.mSourceType = CHAT_SOURCE_SYSTEM;
|
||||
chat.mText = LLTrans::getString("PowerUser1") + "\n" + LLTrans::getString("PowerUser2") + "\n" + LLTrans::getString("Unlocked:") + "\n" + LLTrans::getString("PowerUser3") + "\n- " + LLTrans::getString("RightClick") + " > " + LLTrans::getString("PowerUser4") + "\n- " + LLTrans::getString("RightClick") + " > " + LLTrans::getString("PowerUser5");
|
||||
|
||||
@@ -162,7 +162,7 @@ BOOL LLPanelDirFind::postBuild()
|
||||
}
|
||||
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("filter_gaming"))
|
||||
ctrl->setVisible((gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_ALL));
|
||||
ctrl->setVisible(gAgent.getRegion() && (gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_ALL));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -558,7 +558,7 @@ BOOL LLPanelDirFindAllOld::postBuild()
|
||||
setDefaultBtn( "Search" );
|
||||
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("filter_gaming"))
|
||||
ctrl->setVisible((gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_ALL_CLASSIC));
|
||||
ctrl->setVisible(gAgent.getRegion() && (gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_ALL_CLASSIC));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2815,24 +2815,33 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS
|
||||
if(ft && (0 == error_code) &&
|
||||
(object = gObjectList.findObject(ft->mTaskID)))
|
||||
{
|
||||
object->loadTaskInvFile(ft->mFilename);
|
||||
|
||||
LLInventoryObject::object_list_t::iterator it = object->mInventory->begin();
|
||||
LLInventoryObject::object_list_t::iterator end = object->mInventory->end();
|
||||
std::list<LLUUID>& pending_lst = object->mPendingInventoryItemsIDs;
|
||||
|
||||
for (; it != end && pending_lst.size(); ++it)
|
||||
if (object->loadTaskInvFile(ft->mFilename))
|
||||
{
|
||||
LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(it->get());
|
||||
if(item && item->getType() != LLAssetType::AT_CATEGORY)
|
||||
|
||||
LLInventoryObject::object_list_t::iterator it = object->mInventory->begin();
|
||||
LLInventoryObject::object_list_t::iterator end = object->mInventory->end();
|
||||
std::list<LLUUID>& pending_lst = object->mPendingInventoryItemsIDs;
|
||||
|
||||
for (; it != end && pending_lst.size(); ++it)
|
||||
{
|
||||
std::list<LLUUID>::iterator id_it = std::find(pending_lst.begin(), pending_lst.begin(), item->getAssetUUID());
|
||||
if (id_it != pending_lst.end())
|
||||
LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(it->get());
|
||||
if(item && item->getType() != LLAssetType::AT_CATEGORY)
|
||||
{
|
||||
pending_lst.erase(id_it);
|
||||
std::list<LLUUID>::iterator id_it = std::find(pending_lst.begin(), pending_lst.begin(), item->getAssetUUID());
|
||||
if (id_it != pending_lst.end())
|
||||
{
|
||||
pending_lst.erase(id_it);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// MAINT-2597 - crash when trying to edit a no-mod object
|
||||
// Somehow get an contents inventory response, but with an invalid stream (possibly 0 size?)
|
||||
// Stated repro was specific to no-mod objects so failing without user interaction should be safe.
|
||||
llwarns << "Trying to load invalid task inventory file. Ignoring file contents." << llendl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2844,7 +2853,7 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS
|
||||
delete ft;
|
||||
}
|
||||
|
||||
void LLViewerObject::loadTaskInvFile(const std::string& filename)
|
||||
BOOL LLViewerObject::loadTaskInvFile(const std::string& filename)
|
||||
{
|
||||
std::string filename_and_local_path = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, filename);
|
||||
llifstream ifs(filename_and_local_path);
|
||||
@@ -2875,6 +2884,7 @@ void LLViewerObject::loadTaskInvFile(const std::string& filename)
|
||||
{
|
||||
LLPointer<LLInventoryObject> inv = new LLInventoryObject;
|
||||
inv->importLegacyStream(ifs);
|
||||
inv->rename("Contents");
|
||||
mInventory->push_front(inv);
|
||||
}
|
||||
else
|
||||
@@ -2890,8 +2900,11 @@ void LLViewerObject::loadTaskInvFile(const std::string& filename)
|
||||
{
|
||||
llwarns << "unable to load task inventory: " << filename_and_local_path
|
||||
<< llendl;
|
||||
return FALSE;
|
||||
}
|
||||
doInventoryCallback();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLViewerObject::doInventoryCallback()
|
||||
@@ -4904,11 +4917,7 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow
|
||||
mAudioSourcep->setSyncMaster(flags & LL_SOUND_FLAG_SYNC_MASTER);
|
||||
mAudioSourcep->setSyncSlave(flags & LL_SOUND_FLAG_SYNC_SLAVE);
|
||||
mAudioSourcep->setQueueSounds(queue);
|
||||
if(!queue) // stop any current sound first to avoid "farts of doom" (SL-1541) -MG
|
||||
{
|
||||
mAudioSourcep->play(LLUUID::null);
|
||||
}
|
||||
|
||||
|
||||
// Play this sound if region maturity permits
|
||||
if( gAgent.canAccessMaturityAtGlobal(this->getPositionGlobal()) )
|
||||
{
|
||||
|
||||
@@ -673,7 +673,7 @@ protected:
|
||||
//
|
||||
|
||||
static void processTaskInvFile(void** user_data, S32 error_code, LLExtStat ext_status);
|
||||
void loadTaskInvFile(const std::string& filename);
|
||||
BOOL loadTaskInvFile(const std::string& filename);
|
||||
void doInventoryCallback();
|
||||
|
||||
BOOL isOnMap();
|
||||
|
||||
@@ -2529,11 +2529,19 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
||||
{{
|
||||
LLViewerJointAttachment* attachment = attachment_iter->second;
|
||||
LLViewerObject* attached_object = attachment_iter->first;
|
||||
BOOL visibleAttachment = visible || (attached_object && attached_object->mDrawable.notNull() &&
|
||||
!(attached_object->mDrawable->getSpatialBridge() &&
|
||||
attached_object->mDrawable->getSpatialBridge()->getRadius() < 2.0));
|
||||
|
||||
if (visibleAttachment && attached_object && attached_object->mDrawable && !attached_object->isDead() && attachment->getValid())
|
||||
if( !attached_object ||
|
||||
attached_object->isDead() ||
|
||||
!attached_object->mDrawable ||
|
||||
!attachment ||
|
||||
!attachment->getValid())
|
||||
continue;
|
||||
|
||||
BOOL visibleAttachment = visible ||
|
||||
!attached_object->mDrawable->getSpatialBridge() ||
|
||||
attached_object->mDrawable->getSpatialBridge()->getRadius() >= 2.f;
|
||||
|
||||
if (visibleAttachment)
|
||||
{
|
||||
// if selecting any attachments, update all of them as non-damped
|
||||
if (LLSelectMgr::getInstance()->getSelection()->getObjectCount() && LLSelectMgr::getInstance()->getSelection()->isAttachment())
|
||||
|
||||
Reference in New Issue
Block a user