Merge branch 'master' of git://github.com/Shyotl/SingularityViewer

This commit is contained in:
Latif Khalifa
2013-10-15 07:18:58 +02:00
9 changed files with 78 additions and 29 deletions

View File

@@ -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.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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