Merge with tip
commit
832f135fd2
|
|
@ -48,12 +48,15 @@
|
|||
#include "llviewerwindow.h"
|
||||
#include "llfocusmgr.h"
|
||||
#include "llcallbacklist.h"
|
||||
#include "llparcel.h"
|
||||
#include "llaudioengine.h" // for gAudiop
|
||||
|
||||
#include "llevent.h" // LLSimpleListener
|
||||
#include "llnotificationsutil.h"
|
||||
#include "lluuid.h"
|
||||
#include "llkeyboard.h"
|
||||
#include "llmutelist.h"
|
||||
#include "llfirstuse.h"
|
||||
|
||||
#include <boost/bind.hpp> // for SkinFolder listener
|
||||
#include <boost/signals2.hpp>
|
||||
|
|
@ -708,6 +711,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
|
|||
|
||||
std::vector<LLViewerMediaImpl*> proximity_order;
|
||||
|
||||
bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");
|
||||
bool needs_first_run = LLViewerMedia::needsMediaFirstRun();
|
||||
U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal");
|
||||
U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal");
|
||||
U32 max_low = gSavedSettings.getU32("PluginInstancesLow");
|
||||
|
|
@ -822,6 +827,21 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
|
|||
new_priority = LLPluginClassMedia::PRIORITY_LOW;
|
||||
}
|
||||
|
||||
if(!inworld_media_enabled)
|
||||
{
|
||||
// If inworld media is locked out, force all inworld media to stay unloaded.
|
||||
if(!pimpl->getUsedInUI())
|
||||
{
|
||||
new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
|
||||
if(needs_first_run)
|
||||
{
|
||||
// Don't do this more than once in this loop.
|
||||
needs_first_run = false;
|
||||
LLViewerMedia::displayMediaFirstRun();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pimpl->setPriority(new_priority);
|
||||
|
||||
if(pimpl->getUsedInUI())
|
||||
|
|
@ -888,6 +908,61 @@ void LLViewerMedia::cleanupClass()
|
|||
gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// static
|
||||
bool LLViewerMedia::needsMediaFirstRun()
|
||||
{
|
||||
return gWarningSettings.getBOOL("FirstStreamingMedia");
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// static
|
||||
void LLViewerMedia::displayMediaFirstRun()
|
||||
{
|
||||
gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
|
||||
|
||||
LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
|
||||
boost::bind(firstRunCallback, _1, _2));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// static
|
||||
bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
{
|
||||
// user has elected to automatically play media.
|
||||
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
|
||||
gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
|
||||
gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
|
||||
gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
|
||||
|
||||
LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
|
||||
|
||||
if (parcel)
|
||||
{
|
||||
// play media right now, if available
|
||||
LLViewerParcelMedia::play(parcel);
|
||||
|
||||
// play music right now, if available
|
||||
std::string music_url = parcel->getMusicURL();
|
||||
if (gAudiop && !music_url.empty())
|
||||
gAudiop->startInternetStream(music_url);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE);
|
||||
gSavedSettings.setBOOL("AudioStreamingMedia", FALSE);
|
||||
gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
|
||||
gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// LLViewerMediaImpl
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -115,6 +115,12 @@ class LLViewerMedia
|
|||
|
||||
// This is the comparitor used to sort the list.
|
||||
static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2);
|
||||
|
||||
// For displaying the media first-run dialog.
|
||||
static bool needsMediaFirstRun();
|
||||
static void displayMediaFirstRun();
|
||||
static bool firstRunCallback(const LLSD& notification, const LLSD& response);
|
||||
|
||||
};
|
||||
|
||||
// Implementation functions not exported into header file
|
||||
|
|
|
|||
|
|
@ -56,10 +56,6 @@ LLUUID LLViewerParcelMedia::sMediaRegionID;
|
|||
viewer_media_t LLViewerParcelMedia::sMediaImpl;
|
||||
|
||||
|
||||
// Local functions
|
||||
bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel);
|
||||
|
||||
|
||||
// static
|
||||
void LLViewerParcelMedia::initClass()
|
||||
{
|
||||
|
|
@ -112,12 +108,10 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
|
|||
// First use warning
|
||||
if( (!mediaUrl.empty() ||
|
||||
!parcel->getMusicURL().empty())
|
||||
&& gWarningSettings.getBOOL("FirstStreamingMedia") )
|
||||
&& LLViewerMedia::needsMediaFirstRun())
|
||||
{
|
||||
LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
|
||||
boost::bind(callback_play_media, _1, _2, parcel));
|
||||
LLViewerMedia::displayMediaFirstRun();
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// if we have a current (link sharing) url, use it instead
|
||||
|
|
@ -591,36 +585,6 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
|
|||
};
|
||||
}
|
||||
|
||||
bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
{
|
||||
// user has elected to automatically play media.
|
||||
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
|
||||
gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
|
||||
gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
|
||||
if(!gSavedSettings.getBOOL("AudioStreamingMedia"))
|
||||
gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
|
||||
// play media right now, if available
|
||||
LLViewerParcelMedia::play(parcel);
|
||||
// play music right now, if available
|
||||
if (parcel)
|
||||
{
|
||||
std::string music_url = parcel->getMusicURL();
|
||||
if (gAudiop && !music_url.empty())
|
||||
gAudiop->startInternetStream(music_url);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
|
||||
gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
|
||||
}
|
||||
gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: observer
|
||||
/*
|
||||
void LLViewerParcelMediaNavigationObserver::onNavigateComplete( const EventType& event_in )
|
||||
|
|
|
|||
Loading…
Reference in New Issue